Two layers, one answer
MCP wraps the answer in a JSON-RPC message. The outerid 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
Forsearch_companies with background: true, read result.structuredContent.usage:
Pending usage excerpt
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.
A completed company search
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 inresult.structuredContent:
For another page, keep the query, filters, limit and target unchanged, including omission of target;
add the returned cursor and a new request key. For an identical retry, 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 whenget_companies is called with valid IDs but without a
request_key argument or Idempotency-Key header. It does not consume a request unit.
Tool error
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.