Server definition
- Hash
- sha256:7a1fde917eda0377cb6c37fb145755e36a35af4357283e94df905e43a0f2c4f5
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "Tickerz measures how unusual things are against their own normal and keeps a public record nobody can edit. Two parts. The Terminal scores about 250 crypto assets and US stocks on today's volume and move against a 30 day baseline (board, asset, base_rate, receipts). The Tickerz Index publishes a daily number for things people do, from public data and the chain: memecoin launches, launchpad fees, prediction market volume, jobless claims, trending AI models, Chicago crime, and what wallets pay each other over x402 (list_indices, get_index). Every day's reading is on-chain in Bitcoin; its OpenTimestamps file is the proof. Start with board for markets and list_indices for everything else. The score measures attention, not merit: it is not a price signal or advice.",
"tools": [
{
"description": "The Arena: predict the number an index lands on. Each index that takes calls has one open question on its next period (\"$MINTS for Sep 24. Forecast the number.\"), with the level it is called against, the forecast count and when forecasts close (when the period called begins). recent: closed questions with the Arena number (the points-weighted mean of the top 10 ranked handles that answered, frozen at close; labeled Arena, never official) and the final number once it lands. standings: handle, graded, mean_points, best_streak; ranked from 3 graded. Points per forecast: 100 times max(0, 1 minus absolute percent error / 25%), rounded. With id, one question: forecasts are listed only after it closes, with the proof of the forecasts that stood. Same data as GET /api/arena and GET /api/arena/question/{id}. Points only: no money, no prizes. Not advice.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"description": "Optional question id, e.g. mints-2026-09-24",
"type": "string"
}
},
"type": "object"
},
"name": "arena",
"outputSchema": null
},
{
"description": "Use when someone asks about one coin or stock: why $X is moving, whether its volume is unusual, how its past spikes turned out, or where it trades. One asset in depth: latest snapshot, scores_30d (30 days of readings, every fourth stored tick: hourly for crypto, every 40 minutes in market hours for stocks), the open event and the 10 most recent past events with score_at_open, peak_score and receipts, and venues: where it trades (spot, perpetuals, futures, prediction markets), plain unpaid links checked nightly against each venue's product list. latest.score is the newest Activity score, the same number as the last point of scores_30d. When no event is open, driver is null and reason is no open event: a driver is read from the open event. Same data as GET /api/asset/{symbol}, plus score on latest and that reason. heat_7d (the same readings, each ts and heat) and peak_heat are deprecated aliases of scores_30d and peak_score, same values, kept until at least 2026-12-31.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"symbol": {
"description": "Ticker symbol, e.g. BTC or GME",
"minLength": 1,
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "asset",
"outputSchema": null
},
{
"description": "Use when someone asks what usually happens after a spike like the one an asset shows today, or whether moves like it tend to fade. What historically happened after a move like this asset's current one. Uses 3,213 crypto attention spikes on 175 coins since 2022, found with the live score's formula, matched on direction, size of move and how many other coins are unusual right now: the median, spread and share of cases that beat Bitcoin over 1, 7 and 30 days, next to what an ordinary day did. A base rate, not a forecast or advice. On days with a score of 70 or more. Stocks read a separate study measured against SPY and get a rate only where one of its groups holds; today none does, so stocks return null with the study's reason. Returns base_rate null with a reason for quieter days, and groups that are too small, dominated by one date, or not distinguishable from an ordinary day.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"symbol": {
"description": "Ticker symbol, e.g. SOL or PEPE",
"minLength": 1,
"type": "string"
}
},
"required": [
"symbol"
],
"type": "object"
},
"name": "base_rate",
"outputSchema": null
},
{
"description": "Use when someone asks what is unusual in crypto or US stocks right now, which coins trade far above their normal volume today, or how many are moving at once. Current Tickerz Terminal: all tracked assets with the 24h move, the activity score as score (0-100; score_1h is one hour earlier) and vol_mult (24h volume over the asset's 30-day baseline mean, measured), plus updated_at and breadth. assets mixes crypto and US stocks in one list sorted by score, so the first rows may be stocks: send class crypto or equity to get one kind, or filter on each asset's class. breadth counts crypto only, whatever class is sent: unusual is how many scored crypto assets are at 70 or more right now, scored counts the crypto assets with a score (an asset still building its 14 day baseline has score null and is not counted), and band is the study's band for the share: lone under 3% (so 0 unusual also reads lone), mid between, crowd at 30% or more. Same data as GET /api/board. heat and heat_1h are deprecated aliases of score and score_1h, same values, kept until at least 2026-12-31. No prices: they come from licensed vendors whose terms do not allow passing them on; tickerz.com shows them.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"class": {
"description": "Optional: crypto or equity (US stocks and listed funds). Leave out for every asset",
"enum": [
"crypto",
"equity"
],
"type": "string"
}
},
"type": "object"
},
"name": "board",
"outputSchema": null
},
{
"description": "Use for the history, rules, source and proof of one index named by list_indices (MINTS, TRENCHES, YESNO, LAYOFFS, MODELS, CRIME, GIGS, WAGE). One Tickerz Index: its definition, every period in its read window with its band and signed z, the first print of the newest complete period, the open round, past rounds, and the newest proof. latest_complete is the finished period; a provisional latest is a partial UTC day (partial_day true), and its change_pct, also given as partial_change_pct, is not a full-day change. WAGE days, latest and latest_complete carry p25 and p75 where the store has them. For what is on-chain, read proof: covers_period and covers_value are the newest period of this index a proof holds and its value there, stamped_on is the UTC day that proof was stamped, with digest_sha256, bitcoin_height, proof_url (the exact text hashed, as JSON) and ots_url (the OpenTimestamps file), status (on_chain, awaiting_bitcoin, none or unavailable), and latest_complete with on_chain true or false. A live source's day is complete at 00:00 UTC and goes on-chain in the next day's proof, stamped after 12:00 UTC, so stamped_on is a day after covers_period and the newest complete day is often not on-chain yet. seal is the newest daily proof for every index: seal.day is the day it was stamped, not a period of this index. first_print is for latest_complete and stays null until a proof holds it. Same data as GET /api/indices/{ticker}, plus proof. Levels a source's terms keep out of the API are null.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ticker": {
"description": "Index ticker without the dollar sign, e.g. MINTS or YESNO",
"minLength": 1,
"type": "string"
}
},
"required": [
"ticker"
],
"type": "object"
},
"name": "get_index",
"outputSchema": null
},
{
"description": "One question by id, open or resolved: the statement, the nulls, Tickerz's answer, the crowd split once answers have closed, the outcome (the first stored Activity score at or after the resolve time; void when none lands within 3 hours) and who was right. proofs[] holds each OpenTimestamps proof: the question's canonical_json at once, each hourly answer batch's once answers close; sha256(canonical_json) equals digest_sha256. Same data as GET /api/questions/{id}.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"id": {
"description": "Question id (uuid), from open_questions or GET /api/questions",
"minLength": 1,
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "get_question",
"outputSchema": null
},
{
"description": "Use when someone asks how many memecoins launched on pump.fun, what memecoin launchpads earned in fees, how much traded on Kalshi and Polymarket, how many Americans filed first jobless claims, how much attention AI models get on Hugging Face, how much crime Chicago reported, or how many paid calls wallets made over x402 on Base and what each cost. Tickerz reads each as a daily index against its own normal, on-chain in Bitcoin so nobody can edit a reading afterward. Every Tickerz Index: what it counts, its source, the newest day, the Activity score and signed z of the newest complete day, and the last 30 complete days as period, value and band. MODELS is the summed Hugging Face trending score of the top 100 models, one number: it does not name the models. GIGS counts paid x402 calls settled on Base; WAGE is dollars per call, the payer-balanced median. WAGE days carry p25 and p75, the 25th and 75th percentiles in dollars per call, where the store has them. For a finished period read latest_complete. latest is the newest period on file; when it has provisional true it is a partial UTC day still counting, marked partial_day true, and its change_pct (also given as partial_change_pct) compares that partial day with a full one, so it is not a full-day change. Some sources land late (jobless claims about ten days after the week ends, Chicago crime over about a week), so latest_complete can be days behind today. Same data as GET /api/indices. A source whose terms keep its levels out of the API is served with its score and bands only.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "list_indices",
"outputSchema": null
},
{
"description": "Public Sigma-1 methodology as text (same disclosure as https://tickerz.com/methodology). No proprietary parameters. The text content is Markdown; structuredContent carries the same text as JSON (model, url, markdown, and its sections as heading and text) for clients that parse JSON.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {},
"type": "object"
},
"name": "methodology",
"outputSchema": null
},
{
"description": "The referee's questions still waiting on their answer: one on-chain attention question per crypto event, \"$SYM reads 40 or more at <event open + 24h> UTC\", answered at_or_above (40 or more) or below (Under 40). Each carries the score and volume multiple at open, the three nulls frozen at creation (base rate: the share of past crypto events that read 40 or more 24 hours after open; persistence: the latest reading carried forward; always below) and Tickerz's own answer, which is the base-rate null. accepting_answers is true until 4 hours after the question opened; the crowd split stays null until then. calibration: hit rates of the crowd majority and each null over every resolved question, each with its n. Optional symbol filter. Same data as GET /api/questions?state=open. About attention, not price. Not advice.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"symbol": {
"description": "Optional ticker, e.g. HBAR",
"type": "string"
}
},
"type": "object"
},
"name": "open_questions",
"outputSchema": null
},
{
"description": "Use when someone asks how past attention spikes turned out, or wants a track record they can check, losses included. Closed events, newest first, each with its 24h, 7d and 30d receipts (forward return, or null until due; benchmark is BTC for crypto and SPY for stocks, with benchmark_ret_pct over the same window), score_at_open, peak_score and the driver with its source. Each event carries symbol (the same ticker as assets.symbol). Each proofs row carries proof_url, the proof as JSON, an absolute link in the same form as an index first_print.proof_url. A receipt is due 24 hours, 7 days and 30 days after the event opened, so the newest page has null 30d receipts until they are due: page back to events old enough for them with before and before_id: each page carries next_before (its last event's opened_at, exactly as stored) and next_before_id (that event's id), null when there is nothing older. Send both back and the next page starts right after that event, including events opened at the same time. before alone (any ISO time) reads events opened strictly before that time, so on its own it can skip events opened at exactly that time. Optional symbol filter, applied in the query, so limit counts only that ticker's events and an empty page means none older on record. Same store as GET /api/receipts. peak_heat is the deprecated alias of peak_score, same value, kept until at least 2026-12-31.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"before": {
"description": "Optional cursor: only events opened before this time (ISO 8601, e.g. 2026-09-01T00:00:00Z). Send next_before from a page, with before_id, for the page before it; without before_id, events opened at exactly this time are skipped",
"type": "string"
},
"before_id": {
"description": "Optional, with before: next_before_id from a page. The next page starts right after that event, so events opened at the same time are not skipped",
"type": "string"
},
"limit": {
"description": "1 to 100, default 30",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"symbol": {
"description": "Optional ticker to filter, e.g. BTC",
"type": "string"
}
},
"type": "object"
},
"name": "receipts",
"outputSchema": null
},
{
"description": "Two kinds of forecast. 1) Arena (numeric): send question_id as an Arena id from the arena tool (e.g. mints-2026-09-24) or ticker (e.g. MINTS), plus handle (3 to 20 letters, digits or underscores) and value (a number in the index's unit). A handle is claimed by the address that first uses it; the first forecast that stands under a handle returns handle_key, a secret shown once: send it with every later forecast under that handle and it is accepted from any address, so an agent whose address changes keeps its handle. Without it, only the first address may use the handle. One forecast per handle per question; the latest sent before close stands; forecasts close when the period called begins and stay hidden until then. Graded on the first print: 100 times max(0, 1 minus absolute percent error / 25%), rounded. Public standings by mean points, ranked from 3 graded. 2) Referee (attention question): send question_id as a uuid from open_questions and answer: at_or_above (it reads 40 or more at the stated time) or below, with an optional probability, 0 to 1, your chance it reads 40 or more, which must agree with the answer. An agent answering for someone sends agent, its name (e.g. Muse): the answer is stored as an agent's, never counts in the crowd split, and is shown by name beside the crowd once answers close. One answer per caller per question and at most 3 per address (the first one stands; a repeat is acknowledged with already_answered true and is not echoed back); answers close 4 hours after the question opens and are recorded with OpenTimestamps in hourly batches; everyone is graded at 24 hours against the nulls, Tickerz included, with no ranking of callers. Both: no login, no prizes, no money. Not advice.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"agent": {
"description": "Referee only, optional: the agent's name when an agent answers for someone, e.g. Muse. 1 to 32 letters, digits, spaces, dots, hyphens or underscores. Never counted in the crowd split; shown by name after answers close",
"maxLength": 32,
"type": "string"
},
"answer": {
"description": "Referee only. at_or_above: it reads 40 or more. below: under 40",
"enum": [
"at_or_above",
"below"
],
"type": "string"
},
"handle": {
"description": "Arena only: your public handle, 3 to 20 letters, digits or underscores",
"type": "string"
},
"handle_key": {
"description": "Arena only: the secret key returned with the first forecast under this handle (hk_ and 32 characters). Send it with every later forecast so the handle is accepted from any address. Never share it",
"maxLength": 64,
"type": "string"
},
"probability": {
"description": "Referee only, optional: your probability that it reads 40 or more, 0 to 1",
"maximum": 1,
"minimum": 0,
"type": "number"
},
"question_id": {
"description": "Referee question id (uuid) from open_questions, or an Arena id (e.g. mints-2026-09-24) from the arena tool",
"type": "string"
},
"ticker": {
"description": "Arena only, instead of question_id: the index ticker, e.g. MINTS; forecasts its open question",
"type": "string"
},
"value": {
"description": "Arena only: your number for the period, in the index's unit",
"minimum": 0,
"type": "number"
}
},
"type": "object"
},
"name": "submit_forecast",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:7a1fde917eda0377cb6c37fb145755e36a35af4357283e94df905e43a0f2c4f5 | sha256sum