Skip to main content
Glama

Update incorporation draft

incorporation.update_draft
DestructiveIdempotent

Replace the selected case's non-address incorporation draft from either a bounded uploaded JSON file or a closed structured draft at the expected version; required addresses are completed later in the SparkLaunch Action Center.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
draftNo
case_idYes
draft_fileNo
project_idYes
idempotency_keyYes
expected_versionYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed13 schema fields changed
    • addedInput schema / $defs / CapitalizationDraft
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "authorized_common_shares": {
      +      "minimum": 0,
      +      "title": "Authorized Common Shares",
      +      "type": "integer"
      +    },
      +    "common_par_value": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        }
      +      ],
      +      "ge": 0,
      +      "title": "Common Par Value"
      +    },
      +    "founder_common_share_allocations": {
      +      "additionalProperties": {
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "propertyNames": {
      +        "format": "uuid"
      +      },
      +      "title": "Founder Common Share Allocations",
      +      "type": "object"
      +    },
      +    "option_pool_shares": {
      +      "minimum": 0,
      +      "title": "Option Pool Shares",
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "authorized_common_shares",
      +    "common_par_value",
      +    "option_pool_shares",
      +    "founder_common_share_allocations"
      +  ],
      +  "title": "CapitalizationDraft",
      +  "type": "object"
      +}
    • addedInput schema / $defs / FilingPreferences
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "certified_copy": {
      +      "title": "Certified Copy",
      +      "type": "boolean"
      +    },
      +    "expedited": {
      +      "title": "Expedited",
      +      "type": "boolean"
      +    },
      +    "registered_agent_selection": {
      +      "enum": [
      +        "sparklaunch",
      +        "existing"
      +      ],
      +      "title": "Registered Agent Selection",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "registered_agent_selection",
      +    "expedited",
      +    "certified_copy"
      +  ],
      +  "title": "FilingPreferences",
      +  "type": "object"
      +}
    • addedInput schema / $defs / GovernanceAssignments
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "incorporator_participant_key": {
      +      "format": "uuid",
      +      "title": "Incorporator Participant Key",
      +      "type": "string"
      +    },
      +    "initial_director_participant_keys": {
      +      "items": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "title": "Initial Director Participant Keys",
      +      "type": "array"
      +    },
      +    "officers": {
      +      "additionalProperties": {
      +        "format": "uuid",
      +        "type": "string"
      +      },
      +      "title": "Officers",
      +      "type": "object"
      +    },
      +    "responsible_party_participant_key": {
      +      "format": "uuid",
      +      "title": "Responsible Party Participant Key",
      +      "type": "string"
      +    },
      +    "signer_participant_key": {
      +      "format": "uuid",
      +      "title": "Signer Participant Key",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "incorporator_participant_key",
      +    "initial_director_participant_keys",
      +    "officers",
      +    "signer_participant_key",
      +    "responsible_party_participant_key"
      +  ],
      +  "title": "GovernanceAssignments",
      +  "type": "object"
      +}
    • changedInput schema / $defs / MCPFileReference / description
      Previous value: -"Bounded file reference supplied by a ChatGPT host file parameter."New value: +"Bounded file reference supplied by an approved host file parameter."
    • addedInput schema / $defs / MCPIncorporationDraftInput
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Closed ordinary-data draft that cannot carry physical addresses.",
      +  "properties": {
      +    "capitalization": {
      +      "$ref": "#/$defs/CapitalizationDraft"
      +    },
      +    "company_contact_email": {
      +      "format": "email",
      +      "title": "Company Contact Email",
      +      "type": "string"
      +    },
      +    "company_name": {
      +      "maxLength": 255,
      +      "minLength": 1,
      +      "title": "Company Name",
      +      "type": "string"
      +    },
      +    "company_phone": {
      +      "anyOf": [
      +        {
      +          "maxLength": 64,
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Company Phone"
      +    },
      +    "entity_type": {
      +      "const": "delaware_c_corporation",
      +      "default": "delaware_c_corporation",
      +      "title": "Entity Type",
      +      "type": "string"
      +    },
      +    "filing_preferences": {
      +      "$ref": "#/$defs/FilingPreferences"
      +    },
      +    "founders": {
      +      "items": {
      +        "$ref": "#/$defs/MCPIncorporationFounderDraft"
      +      },
      +      "maxItems": 100,
      +      "minItems": 1,
      +      "title": "Founders",
      +      "type": "array"
      +    },
      +    "governance": {
      +      "$ref": "#/$defs/GovernanceAssignments"
      +    },
      +    "jurisdiction": {
      +      "const": "DE",
      +      "default": "DE",
      +      "title": "Jurisdiction",
      +      "type": "string"
      +    },
      +    "participants": {
      +      "items": {
      +        "$ref": "#/$defs/MCPIncorporationParticipantDraft"
      +      },
      +      "maxItems": 100,
      +      "title": "Participants",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "company_name",
      +    "company_contact_email",
      +    "founders",
      +    "governance",
      +    "capitalization",
      +    "filing_preferences"
      +  ],
      +  "title": "MCPIncorporationDraftInput",
      +  "type": "object"
      +}
    • addedInput schema / $defs / MCPIncorporationFounderDraft
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "common_shares": {
      +      "minimum": 0,
      +      "title": "Common Shares",
      +      "type": "integer"
      +    },
      +    "email": {
      +      "format": "email",
      +      "title": "Email",
      +      "type": "string"
      +    },
      +    "equity_percent": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
      +          "type": "string"
      +        }
      +      ],
      +      "ge": 0,
      +      "title": "Equity Percent"
      +    },
      +    "legal_name": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "title": "Legal Name",
      +      "type": "string"
      +    },
      +    "participant_key": {
      +      "format": "uuid",
      +      "title": "Participant Key",
      +      "type": "string"
      +    },
      +    "roles": {
      +      "items": {
      +        "maxLength": 64,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "maxItems": 16,
      +      "minItems": 1,
      +      "title": "Roles",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "participant_key",
      +    "legal_name",
      +    "email",
      +    "roles",
      +    "equity_percent",
      +    "common_shares"
      +  ],
      +  "title": "MCPIncorporationFounderDraft",
      +  "type": "object"
      +}
    • addedInput schema / $defs / MCPIncorporationParticipantDraft
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "email": {
      +      "format": "email",
      +      "title": "Email",
      +      "type": "string"
      +    },
      +    "legal_name": {
      +      "maxLength": 200,
      +      "minLength": 1,
      +      "title": "Legal Name",
      +      "type": "string"
      +    },
      +    "participant_key": {
      +      "format": "uuid",
      +      "title": "Participant Key",
      +      "type": "string"
      +    },
      +    "roles": {
      +      "items": {
      +        "enum": [
      +          "incorporator",
      +          "director",
      +          "officer",
      +          "signer",
      +          "responsible_party"
      +        ],
      +        "type": "string"
      +      },
      +      "maxItems": 8,
      +      "minItems": 1,
      +      "title": "Roles",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "participant_key",
      +    "legal_name",
      +    "email",
      +    "roles"
      +  ],
      +  "title": "MCPIncorporationParticipantDraft",
      +  "type": "object"
      +}
    • addedInput schema / oneOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "draft"
      +      ]
      +    },
      +    "required": [
      +      "draft_file"
      +    ]
      +  },
      +  {
      +    "not": {
      +      "required": [
      +        "draft_file"
      +      ]
      +    },
      +    "required": [
      +      "draft"
      +    ]
      +  }
      +]
    • addedInput schema / properties / draft
      Added value: +{
      +  "anyOf": [
      +    {
      +      "$ref": "#/$defs/MCPIncorporationDraftInput"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedInput schema / properties / draft_file / $ref
      Removed value: -"#/$defs/MCPFileReference"
    • addedInput schema / properties / draft_file / anyOf
      Added value: +[
      +  {
      +    "$ref": "#/$defs/MCPFileReference"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / draft_file / default
      Added value: +null
    • changedInput schema / required
      Previous value: -[
      -  "project_id",
      -  "case_id",
      -  "expected_version",
      -  "draft_file",
      -  "idempotency_key"
      -]New value: +[
      +  "project_id",
      +  "case_id",
      +  "expected_version",
      +  "idempotency_key"
      +]
  2. First observed

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructive, idempotent, non-read-only behavior; the description adds useful context beyond those flags: only the non-address draft is replaced, either input mode is acceptable, and the expected version must be supplied. Nothing contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence with no filler. The core action is front-loaded, and the important caveats (non-address, either-or source, expected version, later address completion) are packed in without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive six-parameter mutation with two mutually exclusive input modes, the description conveys the core operation, source alternatives, version requirement, and address boundary. Since an output schema exists, return-value detail is unnecessary; the only minor gap is explicit idempotency retry semantics, which the annotation already covers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden, and it compensates well: 'bounded uploaded JSON file' explains draft_file, 'closed structured draft' explains draft, and 'selected case' maps to project_id/case_id. It does not explicitly explain idempotency_key, but the schema name and idempotentHint annotation make that parameter self-evident.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Replace'), a specific resource ('the selected case's non-address incorporation draft'), and distinguishes the operation from siblings like start_case, validate, and submit_to_sparklaunch. The source-type constraint ('either a bounded uploaded JSON file or a closed structured draft at the expected version') further removes ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: this is the draft-replacement step for a selected case, and address completion is explicitly deferred to the SparkLaunch Action Center. It does not name sibling tools as alternatives, so it stops short of a 5, but the boundary between this tool and later address work is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.1/5.0
Disambiguation3/5

Domain prefixes (crm., cap_table., landing.) clearly separate broad modules, and most tools target a specific resource and action. However, within modules there are boundary overlaps—crm.add_contact_note vs crm.log_activity and cap_table.dilution_preview vs cap_table.simulate_raise—where descriptions must be read carefully to avoid a wrong pick.

Naming Consistency3/5

The dominant pattern is module.verb_noun (e.g., crm.create_lead, cap_table.update_stakeholder), which is clear and readable. But a subset of top-level tools uses object_verb with flat underscores (e.g., shortlink_create, qr_generate, campaign_archive) and one outlier (campaign_stats) breaks the verb pattern, so conventions are mixed.

Tool Count1/5

86 tools is an extreme surface for any single MCP server, well past the 50+ threshold that makes coherent selection impractical. Even though the features span several business domains, this would be far more usable split into focused servers per module.

Completeness4/5

The covered domains are broadly complete: cap table, CRM, incorporation, landing, projects, sparkroom, tasks, and validation all have read/write workflows with few dead ends. Minor gaps remain (no campaign listing/update, no branding palette delete/update, no contact deletion) but none of them blocks the main product workflows.

Resources