Skip to main content
Glama

Updown Venue Compare

updown_venue_compare
Read-onlyIdempotent

The same 15-minute crypto "up or down" window priced on polymarket.com, Polymarket US and Kalshi, side by side, with whether each pair is actually the same contract. Pass asset (btc | eth | sol | xrp | bnb) and window ("current" default, "next", "previous", or the window START as ISO such as 2026-10-27T14:15:00Z, on a 15-minute boundary). Per venue: question, Up bid / ask / mid / last, spread_pp, quote_state, volume WITH ITS UNIT, open interest, liquidity, settlement source, comparison basis, when it settles. THE VENUES ARE NOT ONE CONTRACT. Kalshi and Polymarket US settle on CF Benchmarks' BRTI (60-second average at the end against the same at the start): the same bet, so a gap between them is a real disagreement. polymarket.com settles on a Chainlink 60-second TWAP, end against start: same comparison shape, different feed, so a gap against either is partly the contract. pairs[] gives equivalent ("true"|"false"|"unclear"|"not_comparable") from resolution_diff for every pair, material_differences, mid_diff_pp (a minus b, in percentage points) and read_as in words. Measured over 30 days of settled windows the Chainlink and BRTI feeds settle a window differently about 1.2-1.8% of the time, almost entirely windows that ended near the threshold (see updown_divergence_rate). net_spread is computed only for the pair that is equivalent: the gap in mid terms and at top of book (buy Up where cheaper at the ask, Down where Up is dearer at 1 minus the bid) after BOTH venues' taker fees, each fee carrying its verified-as-of date. Top-of-book size is shown where the venue publishes it (Polymarket US); the Kalshi figure is not in its market payload, so read its order book before sizing. A venue with no market for the window is {status:"not_listed", reason}; one that could not be read is {status:"unavailable", refusal} -- never an empty object, and never the same thing. A one-sided book (typical Polymarket US just before a window is decided) has quote_state "bid_only", a null mid, and the last trade stands in labelled price_basis "last". Quotes are read venue by venue (cached up to 60 seconds), so a gap of a couple of points on a moving window is inside the skew. Only the 15m horizon is offered: it is the one where all three list the same up/down question. For the settled history of how often the venues disagreed, call updown_divergence_rate.

Input Schema

NameRequiredDescriptionDefault
assetNobtc (default) | eth | sol | xrp | bnb. Coverage differs by venue; a venue that does not list the asset answers not_listed.
windowNo"current" (default), "next", "previous", or the window START as an ISO-8601 timestamp on a 15-minute boundary, e.g. 2026-10-27T14:15:00Z. An unaligned timestamp is refused, not rounded.
horizonNo15m (default and the only value offered).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, idempotent operation, yet the description still adds substantial operational context: quotes cached up to 60 seconds so cross-venue gaps carry skew, the not_listed vs unavailable distinction, the bid_only/one-sided-book behavior with null mid, and the fact that top-of-book size is missing from Kalshi's payload. This is behavior an agent could not infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with core purpose and the key warning (THE VENUES ARE NOT ONE CONTRACT), and nearly every sentence carries real information. It is dense to the point of being a wall of text with no paragraph breaks, so structure could be improved, but there is little filler to cut.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description fully specifies return shape: per-venue fields, the pairs[] structure with equivalence states, mid_diff_pp sign convention, read_as, and the two status objects. Settlement-feed differences and the 1.2–1.8% divergence figure give an agent everything needed to interpret results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, and the description still adds value: it restates the asset enum, explains the window options including ISO-start form, and warns that an unaligned timestamp is refused rather than rounded. Coverage differences per venue are also noted, which the schema mentions but the description reinforces usefully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource: the same 15-minute up/down window priced side by side on polymarket.com, Polymarket US and Kalshi, plus whether each pair is actually the same contract. That scope, especially the cross-venue equivalence framing, clearly separates it from siblings like polymarket_kalshi_spread and resolution_diff.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names the accepted asset/window inputs, states the default window, and explicitly restricts scope ('Only the 15m horizon is offered'). It also routes the agent elsewhere for a different need ('For the settled history… call updown_divergence_rate'), which is exactly the when/when-not/alternative pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.