clause.

API and MCP

The free tier needs no key and no signup: 1,000 calls a month, 200 of which reach a venue upstream. Every page on this site is one of these calls.

One call, plain words


      

Endpoints that answer a question

EndpointAnswers
/v1/sizecan it take my size, in plain words?
/v1/markets/searchwhich market did I mean?
/v1/equivalenceare these two the same bet?
/v1/mcp-equivalencethe same, by identifier
/v1/preflightwill this order work?
/v1/restrest or cross, and how long?
/v1/copyabilityis this wallet worth copying?
/v1/venues/conventionshow does this venue lie?
/v1/evidencea citable, reproducible verdict
/v1/watchtell me when the rules change
/v1/scorecardwere we right before?

For agents

MCP

Eight MCP tools

Each description leads with the failure it prevents, because an agent does not know it has a problem until something tells it. A model reading two rule sets will report they are the same bet; it has no way to see that one admits voluntary guidelines and the other is silent.

claude mcp add --scope user clause -- python -m clause.mcp.server

identify_market takes plain words and refuses to choose between contracts that are different bets.

Errors

Two exception types, and the distinction matters

ClauseError — your request was wrong, and the message says what to send instead.

ClauseUnavailablethe check did not run. Never treat this as a pass.

Neither inherits from the other, so catching a malformed-request error cannot silently swallow an outage.

The same rule shapes the verdicts: INSUFFICIENT_DATA is distinct from LIQUID and never renders as a pass.

Identifiers, in one table

Getting this wrong is the most common first error.

NameLooks likeWhere from
market_key 0xcdbf64cb… Polymarket conditionId, from /v1/markets/search
market_key KXAIBILL-26JUN-27JAN01 Kalshi ticker, from /v1/markets/search
token_id long decimal string /v1/markets/{condition_id}/tokens

A Polymarket slug is none of these and will 404.