Skip to main content
Your assistant usually reads these responses for you. If you are connecting a tool yourself, this page explains what to check before showing a result to someone else.

Two layers, one answer

MCP wraps the answer in a JSON-RPC message. The outer id matches your request, not a company ID. Inside result, structuredContent contains the company data or error. content contains the same answer as JSON text for clients that cannot read structured data. Do not count these as two different results. Check result.isError before using the answer. A successful HTTP request does not necessarily mean the tool succeeded. Authentication and protocol failures may happen before a tool runs, so also handle a non-success HTTP status or a top-level JSON-RPC error.

A search is still running

For search_companies with background: true, read result.structuredContent.usage:
Pending usage excerpt
This is only the usage object, not a complete response. IDs and amounts are illustrative. pending or processing means wait and call get_usage with that ID. Do not start another search just because results are not ready. Polling does not consume another request unit. Stop polling when you receive results or a terminal error, and avoid a tight retry loop. The complete company result has the same shape as the HTTP API’s company search response. Open its response example to see every field, including fictional companies and their supporting evidence. Read these fields in result.structuredContent: For another page, keep the query, filters, and limit unchanged; add the returned cursor and a new request key. For an identical retry of the same page, reuse its original key.

An empty list is not an error

companies: [] with a delivered usage means no deliverable companies were returned for this request. It does not mean no company could need your product. Read the coverage limitations before changing your search. Never manufacture a company or source to fill the list.

A tool could not complete the request

This complete response is returned when diagnostic is called without its required Idempotency-Key header. It does not consume a diagnostic request unit.
Tool error
Use structuredContent.error.code to decide the next step. Fix invalid inputs; do not retry them unchanged. Respect supplied retry guidance for limits. Never ask someone to paste their API key into a support conversation. See troubleshooting for individual errors.

What a customer should hear

Explain the result, not the protocol: “Here are the companies we found, why each may fit, and the sources.” Keep observed facts separate from inferred need. A procurement request is evidence of a stated requirement; a facility expansion may suggest a need. Neither guarantees a purchase. For account-specific questions, public documentation cannot tell you someone’s balance, billing state, or private search results. Use an authorized account tool or hand off to support. Continue with the tool parameters or evidence guide.