Skip to main content
Glama

perspective_respond

Sends the user's answer to a follow-up question raised by the design agent during perspective creation, then re-runs the design step. Returns a new pending job_id; long-poll perspective_await_job for the next terminal state.

Behavior:

  • Appends the user's reply to the design conversation and kicks off another design pass. Each call starts another pass.

  • ONLY valid while the perspective is in DRAFT status. Errors with "This perspective already has an outline. Use the update tool to make changes." otherwise.

  • Errors when the perspective is not found or you do not have access.

  • Returns "pending" immediately. perspective_await_job resolves to "ready" (outline generated) or "needs_input" (another follow-up — call this tool again).

When to use this tool:

  • perspective_await_job returned status "needs_input" with a follow_up_question and you have the user's reply.

  • Continuing the design dialogue before any outline is generated.

When NOT to use this tool:

  • The perspective already has an outline — use perspective_update for revisions.

  • Starting a new perspective — use perspective_create.

  • Polling a previously-enqueued job — use perspective_await_job.

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": {
      "workspace_id": "<workspace_id>",
      "perspective_id": "<perspective_id>",
      "response": "<response>"
    },
    "name": "perspective_respond"
  }
}

Input Schema

NameRequiredDescriptionDefault
responseYesUser's response to the follow-up question
workspace_idYesWorkspace ID (from workspace_get_default or workspace_list) or workspace slug (uniqueName)
perspective_idYesPerspective ID (from perspective_create with status 'needs_input')

Output Schema

NameRequiredDescriptionDefault
job_idYesOpaque job identifier. Pass to perspective_await_job to retrieve the terminal result.
statusYesJob is running. Call perspective_await_job with the job_id to get the result.
job_kindNoWhich async job family this id belongs to. Present on start responses so the model knows what await shape to expect.
workspace_idYesWorkspace ID
perspective_idYesThe perspective ID
workspace_nameYesWorkspace name

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / perspective_id / maxLength
      Added value: +128
    • addedInput schema / properties / response / maxLength
      Added value: +50000
    • addedInput schema / properties / response / minLength
      Added value: +1
    • addedInput schema / properties / workspace_id / maxLength
      Added value: +128
  2. Changed3 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / properties / job_kind / enum
      Previous value: -[
      -  "perspective_design",
      -  "conversations_explorer"
      -]New value: +[
      +  "perspective_design",
      +  "conversations_explorer",
      +  "conversation_import"
      +]
  3. Changed1 schema field changed
    • addedOutput schema / properties / job_kind
      Added value: +{
      +  "description": "Which async job family this id belongs to. Present on start responses so the model knows what await shape to expect.",
      +  "enum": [
      +    "perspective_design",
      +    "conversations_explorer"
      +  ],
      +  "type": "string"
      +}
  4. Changed13 schema fields changed
    • removedOutput schema / properties / agent_guidance
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Agent guidance/instructions from outline"
      -}
    • removedOutput schema / properties / direct_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "URL for direct access, embeds and cards (/interview/{slug}). Supports same params as share_url and use perspective_get_embed_options to view all possible embed types and options"
      -}
    • removedOutput schema / properties / error
      Removed value: -{
      -  "description": "Error message if operation failed",
      -  "type": "string"
      -}
    • removedOutput schema / properties / fields
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Structured output field keys"
      -}
    • removedOutput schema / properties / follow_up_question
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Question from agent requiring user response"
      -}
    • addedOutput schema / properties / job_id
      Added value: +{
      +  "description": "Opaque job identifier. Pass to perspective_await_job to retrieve the terminal result.",
      +  "type": "string"
      +}
    • removedOutput schema / properties / preview_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Testing URL with ?mode=preview. Conversations don't count against quota. Don't use this for sharing or direct access"
      -}
    • removedOutput schema / properties / share_url
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "description": "Canonical URL for outreach (/share/{slug}).\n      Supported Params for personalization: ?name=X&email=Y (pre-fill), ?returnUrl=X (redirect after), custom tracking (e.g., ?source=email)."
      -}
    • addedOutput schema / properties / status / const
      Added value: +"pending"
    • changedOutput schema / properties / status / description
      Previous value: -"ready = outline generated, needs_input = follow-up question"New value: +"Job is running. Call perspective_await_job with the job_id to get the result."
    • removedOutput schema / properties / status / enum
      Removed value: -[
      -  "ready",
      -  "needs_input"
      -]
    • changedOutput schema / properties / workspace_id / description
      Previous value: -"Workspace ID where perspective was created"New value: +"Workspace ID"
    • changedOutput schema / required
      Previous value: -[
      -  "perspective_id",
      -  "workspace_id",
      -  "workspace_name",
      -  "status",
      -  "agent_guidance",
      -  "fields",
      -  "preview_url",
      -  "share_url",
      -  "direct_url",
      -  "follow_up_question"
      -]New value: +[
      +  "job_id",
      +  "perspective_id",
      +  "workspace_id",
      +  "workspace_name",
      +  "status"
      +]
  5. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare non-readonly, non-idempotent, non-destructive, open-world. The description adds substantial context beyond that: appends to the conversation, starts another design pass per call, is only valid in DRAFT, gives the exact error message otherwise, returns pending immediately, and explains how perspective_await_job resolves.

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?

Front-loaded with the core action and return value, followed by clearly labeled behavior and when/when-not sections. The length is justified by the stateful workflow and alternative routing; every sentence earns its place.

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?

Complete for a stateful workflow tool. Even though an output schema exists, the description explains the pending/job_id handoff and the two terminal outcomes from perspective_await_job, so an agent can drive the full interaction without guessing.

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 three parameters are already documented in the schema. The description reinforces that response is the user's reply and that perspective_id comes from a needs_input create, but does not add syntax or format details beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb and resource: sends the user's answer to a follow-up question from the design agent and re-runs the design step. It also names the return value (a new pending job_id) and distinguishes the flow from perspective_update, perspective_create, and perspective_await_job.

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?

Has explicit 'When to use' and 'When NOT to use' sections naming the exact trigger (await returned needs_input with follow_up_question) and alternatives for other cases. The DRAFT-status precondition is stated clearly.

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.