Skip to main content
MCP uses JSON-RPC. A successful HTTP exchange can still contain a JSON-RPC error or a tool result with isError: true.
This illustrates an empty Task list. Prefer structuredContent when supplied; otherwise parse the JSON text content for tools that return JSON. Do not assume every connected-app tool has the same payload shape. Check the live catalog for outputSchema; the built-in tools documented here do not declare one.

Accepted work can still be running

tasks_create returns a Task and an execution receipt. tasks_send returns a message receipt, which can be queued or saved without starting a Run. Follow the Task’s Runs and read the completed Run’s assistant message. For a wait, advertise Accept: application/json, text/event-stream. The tasks_wait contract defaults to a 600-second observation window with streaming, or 20 seconds for JSON-only requests; these are also the respective maximums. Set timeout_seconds: 0 for an immediate snapshot. A timeout ends the observation window without marking the Task failed or complete. Read the Task and its Run, or wait again, to learn the outcome.

Discover before calling

Call core tools directly. To use an advanced tool:
  1. Call tools_search with its name or your intended task.
  2. Read the returned input schema and availability.
  3. Call tools_call with that exact name and validated arguments.
  4. Check the result’s error state and receipt before reporting an outcome.
Connected-app catalogs are dynamic. Reuse neither an invented tool name nor a schema from another account.