Read the result
A tool returns JSON inside one text content item. Run, build and job tools return the job object, the same object the REST API returns:status.
Use the tool names and input schemas that tools/list returns. The run tools take input, and build_website_tool takes example_input, as a JSON-encoded string; an integration MCP’s own tools take input as plain JSON. A call with an argument the tool doesn’t list is refused with invalid_request.
Follow next
A live job also carriesnext, the exact call to make next. Follow it instead of calling the run again. See Follow next.
Check the effect
Each tool page states the tool’s effect, which the tool’s MCP annotations also carry:- Reads only: the tool changes nothing, so clients may run it without asking and run several at once.
run_read_only_website_toolrefuses a tool that writes withtool_not_read_onlybefore any job starts. - May change a website or your account: clients usually ask the user before calling it.
- May not be undoable: the change may be permanent.
Send an idempotency key
Sendidempotency_key with every write.
Without a key, every call is a new website action. Reuse and conflicts are covered in Retry a call safely.
Handle errors
A failed call setsisError to true. Its text is the error object, plus retry_after_seconds when it is retryable:
code, never on message. A run whose job failed is also an error result, carrying the job with its error.
Details
Details
- A rejected or expired access token answers HTTP
401, and a missing permission HTTP403. Reconnect or ask for the permission. - A malformed protocol request answers a JSON-RPC error.
write_possibly_accepted: truemarks a write sent without a key whose failure may follow an accepted write. Check the job before calling again.