Skip to main content
Cotality MCP tools signal failure with a structured ToolError rather than a success: false envelope. The CLIP, property characteristics, risk, and market analytics tools all use the same shape, so an agent can handle them with one code path.
Retryable means the request could succeed if you send it again unchanged — a transient upstream fault, not a problem with your input. A non-retryable error will fail identically every time until you change something.
This page covers the MCP tool error contract. For the REST APIs and their HTTP status codes, see Error handling.

Error shape

A failed tools/call returns an error whose content is a JSON object with three fields:

Error codes

NOT_FOUND is raised only by clip-find_property_by_clip and clip-find_property_by_address. The property characteristics, risk, and analytics tools have no “not found” error at all. On those tools an unmatched CLIP or an uncovered geography comes back as a successful response with count of 0 and an empty data array. An agent that waits for an error will silently treat “no data” as “still loading”. Always check count.

Using the retryable flag

retryable is the single most actionable field for an agent. It removes the need to maintain a list of which codes are transient.
Never retry a retryable: false error. INVALID_INPUT and NOT_FOUND are deterministic — a retry loop burns your rate limit without any chance of success.

Input limits

Most INVALID_INPUT errors come from these constraints. Validate against them before calling.

CLIP inputs

Applies to pd-get_property_characteristics, at-get_property_analytics, at-get_property_roof_age, and at-get_property_climate_risk. For clip-find_property_by_clip, the single clip argument follows the same digit-only rule.
Batch up to 50 CLIPs in one call rather than issuing 50 single-CLIP calls. It is one request against your quota instead of 50.

Analytics filter inputs

Applies to all five market and trend analytics tools.
A partial timeRange — one of startDate or endDate — is rejected with INVALID_INPUT. Omit the whole object to get the latest available data.

Scope failures

A tool called without its required scope fails before the tool executes. Treat it as permanently non-retryable and contact your account team to request the missing entitlement.