Skip to main content
Glama

Submit your Substack code

complete_substack_verification

Submit the six-digit code the connected account owner provides in this conversation for the same connection and code request. Never guess or automatically repeat a code. Confirmation can resume previously approved articles waiting on this connection; it is not proof of publication. Check an existing schedule afterward, or retry the same saved draft with its original settings if no schedule exists.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "connectionId": "<connectionId>",
      "id": "<id>",
      "code": "<code>"
    },
    "name": "complete_substack_verification"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesThe code request id returned for this same connection.
codeYesThe six-digit code supplied by the user. Never echo it back.
connectionIdYesThe exact Substack connection from the publishing response or get_user_profile.
scheduledPostIdNoThe exact saved article job from the publishing response. Pass it to resume that same job after verification.

Output Schema

NameRequiredDescriptionDefault
idNo
methodNo
messageYes
requiredNo
verifiedNo
cancelledNo
challengeNo
expiresAtNo
connectionNo
nextActionNo
instructionNo
publicationYes
connectionIdYes
articleRecoveryNo
resumedArticlesNo
scheduledPostIdNo
connectedAccountNo
deliveryConfirmedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedOutput schema / properties / articleRecovery / properties / failed
      Added value: +{
      +  "type": "integer"
      +}
    • addedOutput schema / properties / articleRecovery / properties / followUp
      Added value: +{
      +  "const": "check_status",
      +  "type": "string"
      +}
    • addedOutput schema / properties / articleRecovery / properties / succeeded
      Added value: +{
      +  "type": "integer"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / scheduledPostId
      Added value: +{
      +  "description": "The exact saved article job from the publishing response. Pass it to resume that same job after verification.",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / properties / challenge / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "expiresAt": {
      -        "format": "date-time",
      -        "type": "string"
      -      },
      -      "id": {
      -        "type": "string"
      -      },
      -      "method": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "email",
      -              "totp"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "id",
      -      "method",
      -      "expiresAt"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "expiresAt": {
      +        "format": "date-time",
      +        "type": "string"
      +      },
      +      "id": {
      +        "type": "string"
      +      },
      +      "method": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "email",
      +              "totp"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "scheduledPostId": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "id",
      +      "method",
      +      "expiresAt"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / scheduledPostId
      Added value: +{
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / instruction
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / nextAction
      Added value: +{
      +  "const": "wait_for_code",
      +  "type": "string"
      +}
  4. Added

TDQS

A4.1/5.0
Behavior5/5

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

The annotations already disclose that this is a non-read-only, non-idempotent, open-world operation, and the description adds meaningful side-effect context: confirmation can resume previously approved articles waiting on the connection, but it is not proof of publication. It also tells the agent what to do afterward, which is valuable behavioral guidance beyond 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 front-loaded with the core action, then adds constraints and post-conditions without filler. Every sentence contributes either prerequisite, safety, or follow-up guidance.

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?

With a full input schema and an output schema, the description covers the key usage context, safety constraints, and likely follow-up actions. It could be slightly more complete by explicitly mentioning verification-status or cancellation siblings, but it is otherwise sufficient for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented in the input schema. The description reinforces that the code comes from the owner and should not be guessed or repeated, but it does not add substantial parameter-level meaning beyond the schema.

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

Purpose4/5

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

The description states a specific action and resource: submitting the six-digit Substack code for the same connection and code request. It is clear what the tool does, but it does not explicitly differentiate itself from nearby siblings such as verify_substack or get_substack_verification_status.

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?

It gives a clear precondition: the code must come from the connected account owner in the conversation for that same connection and request, and it explicitly says never to guess or automatically repeat a code. It also gives post-completion guidance to check the schedule or retry the saved draft, though it does not explicitly route the agent to the start/status/cancel verification siblings.

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.

Resources