Skip to main content
Glama

Check Substack verification

get_substack_verification_status
Read-onlyIdempotent

Read whether your connected Substack publication needs a code and whether a code request is waiting. Does not request a code, change the connection, or publish. Only the connected account owner can check it. If a code is waiting, ask for it in a normal chat message and wait for the reply; do not send another code. Check once when the writer says they are done; do not call this repeatedly in a loop.

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>"
    },
    "name": "get_substack_verification_status"
  }
}

Input Schema

NameRequiredDescriptionDefault
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.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered; the description still adds real value by stating the authorization boundary ("Only the connected account owner can check it") and an anti-polling guardrail. What it does not cover is failure behavior — e.g. what it returns when no connection exists or the code has expired — which keeps it short of a 5.

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 read operation and its scope come first, followed by exclusions, then the authorization note, then the operational rules. Four short sentences, each carrying distinct information, with no restatement of the title or the schema.

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

Completeness5/5

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

An output schema exists, so return values need no explanation, and the description covers the remaining burdens for a verification-status read: authorization scope, the polling prohibition, and the correct follow-up action when a code is pending. Nothing an agent needs in order to call it correctly is missing.

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%, and the schema itself explains that connectionId is the exact connection and scheduledPostId resumes the same saved job after verification. The description adds no parameter-level meaning at all, so the baseline of 3 applies — the schema is doing all the work here.

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 uses a specific verb+resource ("Read whether your connected Substack publication needs a code and whether a code request is waiting") and immediately fences off adjacent operations with "Does not request a code, change the connection, or publish." That negative framing cleanly separates it from siblings like start_substack_verification, complete_substack_verification, and verify_substack without the agent needing to open other schemas.

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

Usage Guidelines5/5

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

It gives explicit when-to-use ("Check once when the writer says they are done"), explicit when-not ("do not call this repeatedly in a loop"), and an explicit next step when a code is waiting ("ask for it in a normal chat message and wait for the reply; do not send another code"). These are actionable routing rules, not vague hints.

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