DePIN network telemetry with the source, as_of time and an upstream verify URL on every value.
Call this server's tools from your browser. Nothing to install.
Optional. Your Kairos API key for paid depth; every read-only tool works without it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Check your remaining credit balance. Use after purchases to see remaining credits.
Your API key
Tool list last changed Oct 23, 2026.
Check your remaining credit balance. Use after purchases to see remaining credits.
| Argument | Type | Description |
|---|---|---|
| api_key* | string | Your API key |
{
"type": "object",
"required": [
"api_key"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your API key"
}
}
}Query records from a dataset with limit/offset. Free tier: 10 records per query. For depin_onchain, raw archived observations, including rejected rows, are retained. observation_quality reports limited PKT airdrop checks; not_checked means not validated. This read-time annotation is not covered by original proof hashes.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max records (max 10 for free tier) |
| offset | integer | Record offset |
| dataset* | string | Dataset name (e.g., depin_onchain) |
{
"type": "object",
"required": [
"dataset"
],
"properties": {
"limit": {
"type": "integer",
"description": "Max records (max 10 for free tier)"
},
"offset": {
"type": "integer",
"description": "Record offset"
},
"dataset": {
"type": "string",
"description": "Dataset name (e.g., depin_onchain)"
}
}
}Looks up DePIN networks (and Bittensor subnets) that have live data, by name or ticker, e.g. 'akash', 'helium', 'FIL'. Returns symbol, name, category and the network's public page. Use it to get the symbol that get_network, get_metric_history and verify_value take. Read-only, no key.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 20). |
| query | string | Name or ticker fragment, case-insensitive. Omit to list. |
| category | string | Optional category filter, e.g. compute, storage, wireless, AI. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results (default 20)."
},
"query": {
"type": "string",
"description": "Name or ticker fragment, case-insensitive. Omit to list."
},
"category": {
"type": "string",
"description": "Optional category filter, e.g. compute, storage, wireless, AI."
}
}
}ONBOARDING SPEC: freshness, history depth, coverage and endpoints per feed (depin_onchain, depin_daily, health_profiles, signal_ledger, market_ticks, zk_footprints). Machine-legible; answers 'how stale is this and how far back does it go' for every feed. Free, no key.
No arguments.
{
"type": "object",
"properties": {}
}Paid: 20 credits ($20) per answered call, charged once and only after a non-empty answer is computed; an unavailable answer, a refusal or an error costs nothing. Send your API key in the X-API-Key header or as api_key. Each call is a new answer and a new charge (no idempotency key). Computes the left-hand side of Theorem 1 in Qazi (2026, arXiv:2608.12576), the enforcement capacity p * (lambda*S + delta*min Phi): the largest per-audit deterrence ratio a network's slashing and probation can support, in the network's stake unit. Inputs are the network's published protocol parameters (stake per provider, slash fraction, audit probability, probation ladder, hardware-identity binding), each returned with the URL it was read from and the date it was checked; unsourced parameters are refused, never defaulted. Structural screens (deviations that cannot be detected, missing identity binding) are reported. A ceiling, not a verdict: the cheating gain it would have to exceed is private, so no incentive-compatibility answer is given. Networks without sourced parameters are answered unavailable and not charged.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | One network ticker, e.g. AKT, FIL, RENDER. |
| api_key | string | Your API key, only if your client cannot send the X-API-Key header. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"examples": [
"FLUX"
],
"description": "One network ticker, e.g. AKT, FIL, RENDER."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
}
},
"additionalProperties": false
}Returns the derivation ledger index. With a symbol: up to 20 recent archived upstream fetches behind that network, each with time, verify_url, the SHA-256 and size of the raw payload, the collector code hash and the fetch status, so a published value can be traced to the exact bytes and build that produced it (the payload bytes themselves are the paid derivation_replay product). A network with live data that the ledger does not cover yet returns entries: [] with ledger_status not_yet_covered and the covered symbols. Without a symbol: every covered symbol with its latest fetch time and entry count. Read-only, no key. To compare a live value with its upstream right now, use verify_value.
| Argument | Type | Description |
|---|---|---|
| symbol | string | Optional: one network symbol, case-insensitive (e.g. AKT). Omit for the coverage list. |
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"examples": [
"AKT"
],
"description": "Optional: one network symbol, case-insensitive (e.g. AKT). Omit for the coverage list."
}
}
}Paid: 10 credits ($10) per answered call, charged once and only after a non-empty answer is computed; an unavailable answer, a refusal or an error costs nothing. Send your API key in the X-API-Key header or as api_key. Each call is a new answer and a new charge (no idempotency key). For one DePIN network: daily closes of its measured first-party metrics over the last `days` complete UTC days, each metric's daily log change, and the lag-1 lead-lag flow between every pair (correlation of one metric today with the other yesterday, minus the reverse). A Helmholtz-Hodge decomposition on the complete graph splits the flow into a gradient part (one consistent ordering, reported as a lead score per metric) and a curl part (cyclic lead-lag); the harmonic part is zero on a complete graph and is shown as a check. Descriptive, no significance test; the flow size expected under independence is given for scale. Uses up to `max_metrics` (3-16, default 10) metrics, by name order. Every input daily close is returned with its as_of and verify_url. The tool name is historical: no regime classification or trading signal is produced.
| Argument | Type | Description |
|---|---|---|
| days | integer | Daily changes in the window (default 30), ending at the latest complete UTC day. |
| symbol* | string | One network ticker, e.g. AKT, FIL, RENDER. |
| api_key | string | Your API key, only if your client cannot send the X-API-Key header. |
| max_metrics | integer | Metrics used (default 10). |
| metric_filter |
Paid: 10 credits ($10) per answered call, charged once and only after a non-empty answer is computed; an unavailable answer, a refusal or an error costs nothing. Send your API key in the X-API-Key header or as api_key. Each call is a new answer and a new charge (no idempotency key). For one DePIN network: each first-party on-chain supply series it has (eligible metrics whose name contains 'supply', e.g. onchain_total_supply), its daily close at the latest complete UTC day and 7 and 30 days earlier, the percentage changes, and each change annualised by compounding ((end/start)^(365/days) - 1, so a 7-day move is heavily amplified). A series with 2 or fewer distinct daily closes in 30 days is not used (a stuck feed cannot be told from a fixed supply). Every endpoint carries its as_of and verify_url; nothing is interpolated. No exchange-listing, price, funding, market-cap or aggregator data is used; the tool name is historical. Networks without an eligible supply series are answered unavailable and not charged.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | One network ticker, e.g. AKT, FIL, RENDER. |
| api_key | string | Your API key, only if your client cannot send the X-API-Key header. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"examples": [
"RENDER"
],
"description": "One network ticker, e.g. AKT, FIL, RENDER."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
}
},
"additionalProperties": false
}Returns the daily series for one network metric (one point per UTC day, with how many observations backed it), e.g. symbol=AKT metric=GPU_ACTIVE. Days with no observation are absent, never zero. The free tier serves the last 7 days and says so in window_notice; an X-API-Key header on the connection serves your tier's window. Read-only.
| Argument | Type | Description |
|---|---|---|
| days | integer | Days of history requested (default 7). |
| metric* | string | Metric name exactly as get_network lists it, e.g. GPU_ACTIVE. |
| symbol* | string | Network ticker, e.g. AKT. |
{
"type": "object",
"required": [
"symbol",
"metric"
],
"properties": {
"days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Days of history requested (default 7)."
},
"metric": {
"type": "string",
"examples": [
"GPU_ACTIVE"
],
"description": "Metric name exactly as get_network lists it, e.g. GPU_ACTIVE."
},
"symbol": {
"type": "string",
"examples": [
"AKT"
],
"description": "Network ticker, e.g. AKT."
}
}
}Returns the latest first-party measurements for one DePIN network (GPU and CPU capacity, storage, node or hotspot counts, on-chain totals), each with value, unit, as_of, freshness and the verify_url on the network's own API that you can open to check it. Market prices are not included. metric_filter narrows by substring; stale readings are omitted unless include_stale is true. Read-only, no key.
| Argument | Type | Description |
|---|---|---|
| symbol* | string | Network ticker, e.g. AKT, FIL, HNT (find_networks resolves names). |
| max_metrics | integer | Max metrics returned (default 40). |
| include_stale | boolean | Include readings past their freshness window (default false). |
| metric_filter | string | Optional case-insensitive substring, e.g. 'gpu' or 'storage'. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"symbol": {
"type": "string",
"examples": [
"AKT",
"FIL",
"HNT"
],
"description": "Network ticker, e.g. AKT, FIL, HNT (find_networks resolves names)."
},
"max_metrics": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "Max metrics returned (default 40)."
},
"include_stale": {
"type": "boolean",
"description": "Include readings past their freshness window (default false)."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring, e.g. 'gpu' or 'storage'."
}
}
}Returns the current scheduled Hodge and lag-relation snapshots, coverage, observation times, invariants and timestamped history for configured market, DePIN and world cohorts. Requires an existing engines-capable API key in the X-API-Key header. Descriptive relationships only: no fitted memory kernel, causal attribution, calibrated anomaly probability or trading-performance claim. Missing or stale inputs remain explicitly unavailable.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Paid: 10 credits ($10) per answered call, charged once and only after a non-empty answer is computed; an unavailable answer, a refusal or an error costs nothing. Send your API key in the X-API-Key header or as api_key. Each call is a new answer and a new charge (no idempotency key). For one DePIN network: the correlation matrix of the daily log changes of its measured first-party metrics over the last `days` complete UTC days, its eigenvalues, and the Marchenko-Pastur edges for the same number of independent series (q = N / (T-1)). Reports the largest eigenvalue over the upper edge, how many eigenvalues exceed it, the absorption ratio (variance share of the top ceil(N/5) eigenvalues) and each metric's loading on the top eigenvector. The edge is a reference for independent light-tailed series; telemetry changes are neither, so exceeding it describes co-movement and is not a test. Uses up to `max_metrics` (3-60, default 30) metrics, by name order. Every input daily close is returned with its as_of and verify_url. No regime label, position size or trading mode is produced.
| Argument | Type | Description |
|---|---|---|
| days | integer | Daily changes in the window (default 30), ending at the latest complete UTC day. |
| symbol* | string | One network ticker, e.g. AKT, FIL, RENDER. |
| api_key | string | Your API key, only if your client cannot send the X-API-Key header. |
| max_metrics | integer | Metrics used (default 30). |
| metric_filter | string |
Paid: 15 credits ($15) per answered call, charged once and only after a non-empty answer is computed; an unavailable answer, a refusal or an error costs nothing. Send your API key in the X-API-Key header or as api_key. Each call is a new answer and a new charge (no idempotency key). For one DePIN network: an exact two-factor functional ANOVA of the daily log changes of its measured first-party metrics over the last `days` complete UTC days, with factors day (moves shared by the network's metrics that day) and unit (metrics measured in the same unit). Returns each factor's variance share, their interaction and the metric-specific remainder, the mean absolute Shapley value per factor, and for the latest day each metric's change split exactly into its day and unit Shapley values plus remainder (additivity error reported). Descriptive: not causal, not a forecast. Uses up to `max_metrics` (3-60, default 30) metrics, by name order. Every input daily close is returned with its as_of and verify_url.
| Argument | Type | Description |
|---|---|---|
| days | integer | Daily changes in the window (default 30), ending at the latest complete UTC day. |
| symbol* | string | One network ticker, e.g. AKT, FIL, RENDER. |
| api_key | string | Your API key, only if your client cannot send the X-API-Key header. |
| max_metrics | integer | Metrics used (default 30). |
| metric_filter | string | Optional case-insensitive substring of metric names, e.g. GPU. |
Returns the row count of every dataset served here (depin_onchain, market_ticks and the rest), their total, the scope statement and the free-tier limits. No arguments, no key, read-only. For one network's live values use get_network; for freshness and history depth per feed use get_data_dictionary.
No arguments.
{
"type": "object",
"properties": {}
}List the current dataset catalog with record counts. Browsing is free; existing query and daily-call limits apply.
No arguments.
{
"type": "object",
"properties": {}
}Browse purchasable products with prices in credits ($1 = 1 credit). DePIN supply-telemetry, provenance, derivation-replay, history and the intel bundle start at $0.49. Grade purchases are conditional on measured-grade availability; check /v1/credits/pricing before buying. Signal-feed tiers, DAG-manifold tiers and mcp_unlimited are priced but NOT yet purchasable: their entitlement is not wired into the serving API, so purchase_data refuses them with 503 not_yet_deliverable rather than charging you for nothing. Call after register_agent.
No arguments.
{
"type": "object",
"properties": {}
}Buy a product with your credits; the data ships inline in the response. Deliverability is product-specific, including grade availability; check /v1/credits/pricing before buying — call list_products for the live prices rather than trusting a figure restated here, which is how a price in a second place drifts from the first. The signal_*, dag_* and mcp_unlimited keys are priced but return 503 not_yet_deliverable — they are deliberately blocked, not broken, because nothing grants their entitlement yet. Credits buy DATA; they do not change your access tier. Use api_key from register_agent.
| Argument | Type | Description |
|---|---|---|
| api_key* | string | Your API key from register_agent |
| product_key* | string | Product key to purchase (e.g. depin_provenance, depin_networks; list_products has every key and price) |
| idempotency_key | string | Optional. Any stable string unique to THIS intended purchase (e.g. a uuid). If a network error makes you retry the same call, re-send the SAME idempotency_key: the retry returns the same receipt and re-delivers the data without a second charge. |
{
"type": "object",
"required": [
"product_key",
"api_key"
],
"properties": {
"api_key": {
"type": "string",
"description": "Your API key from register_agent"
},
"product_key": {
"type": "string",
"description": "Product key to purchase (e.g. depin_provenance, depin_networks; list_products has every key and price)"
},
"idempotency_key": {
"type": "string",
"description": "Optional. Any stable string unique to THIS intended purchase (e.g. a uuid). If a network error makes you retry the same call, re-send the SAME idempotency_key: the retry returns the same receipt and re-delivers the data without a second charge."
}
}
}Creates an API key for this agent and grants the free starter credits ($5 free credits, no card (first 3 keys per IP per 30 days)). Past the per-IP limit a key is still created, with $0, and the response says so. A key is only needed for purchase_data, check_balance and topup_credits; every read-only tool works without one. email is optional and used for delivery and top-up notices.
| Argument | Type | Description |
|---|---|---|
| string | OPTIONAL contact email (for delivery and topup notifications). Omit to register anonymously. | |
| agent_name* | string | Your agent name |
{
"type": "object",
"required": [
"agent_name"
],
"properties": {
"email": {
"type": "string",
"description": "OPTIONAL contact email (for delivery and topup notifications). Omit to register anonymously."
},
"agent_name": {
"type": "string",
"description": "Your agent name"
}
}
}Add credits. Card (one call): {"method": "stripe", "amount": N} where N is $20 or $99 — returns a Stripe checkout_url already bound to your api_key, and credits post automatically once Stripe confirms payment at $1 = 1 credit. No human step and no wallet needed. USDC on Base ({"method": "usdc"}) is also accepted but requires more work: verify your sender first via POST /v1/credits/crypto/challenge and /verify with X-API-Key, sign the returned challenge with your own EOA, then pass the verified from_address and send only after a successful quote — credit requires finalized Base evidence. Instructions: https://kairossignal.com/docs/crypto.html
| Argument | Type | Description |
|---|---|---|
| amount* | number | Amount in USD to add. Fixed packs only: 20 or 99. Any other value returns the available packs instead of a link. |
| method* | string | Payment method |
| api_key* | string | Your API key |
| tx_hash | string | Legacy optional field; a transaction hash does not replace from_address or verify payment. |
| from_address | string | Required for USDC: your EOA address already verified to this API account through the wallet challenge flow. |
{
"type": "object",
"allOf": [
{
"if": {
"required": [
"method"
],
"properties": {
"method": {
"const": "usdc"
}
}
},
"then": {
"required": [
"from_address"
]
}
}
],
"required": [
"api_key",
"method",
"amount"
],
"properties": {
"amount": {
"enum": [
20,
99
],
"type": "number",
"description": "Amount in USD to add. Fixed packs only: 20 or 99. Any other value returns the available packs instead of a link."
},
"method": {
"enum": [
"usdc",
"stripe"
],
"type": "string",
"description": "Payment method"
},
"api_key": {
"type": "string",
"description": "Your API key"
},
"tx_hash": {
"type": "string",
"description": "Legacy optional field; a transaction hash does not replace from_address or verify payment."
},
"from_address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Required for USDC: your EOA address already verified to this API account through the wallet challenge flow."
}
}
}Retained Merkle-membership check for one depin_onchain observation: stamp_day (YYYYMMDD), leaf_index (0-based row in /attestations/batch_<day>.tsv), expected_row_sha256. verified=true ONLY when the row at that index hashes to expected_row_sha256 AND its inclusion path reaches that day's manifest merkle_root. Says nothing about Bitcoin status or upstream accuracy. Returns JSON: row_sha256, merkle_root, row_hash_matches, inclusion_path_reaches_root, verified, proof_url. Use it when you hold a row from a daily batch and want to show it was committed that day; a call with arguments missing lists the days with a proof ready and a working example. Read-only, no key. Other datasets: unsupported (no retained proof).
| Argument | Type | Description |
|---|---|---|
| dataset | string | Only depin_onchain has retained proofs (the default). |
| stamp_day* | string | Batch day as YYYYMMDD (UTC); separators are ignored. |
| leaf_index* | integer | 0-based line number of the row in /attestations/batch_<stamp_day>.tsv. |
| expected_row_sha256* | string | Lowercase hex SHA-256 of that row's exact bytes (no trailing newline). |
{
"type": "object",
"required": [
"stamp_day",
"leaf_index",
"expected_row_sha256"
],
"properties": {
"dataset": {
"enum": [
"depin_onchain"
],
"type": "string",
"default": "depin_onchain",
"description": "Only depin_onchain has retained proofs (the default)."
},
"stamp_day": {
"type": "string",
"description": "Batch day as YYYYMMDD (UTC); separators are ignored."
},
"leaf_index": {
"type": "integer",
"minimum": 0,
"description": "0-based line number of the row in /attestations/batch_<stamp_day>.tsv."
},
"expected_row_sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$",
"description": "Lowercase hex SHA-256 of that row's exact bytes (no trailing newline)."
}
}
}Re-reads the upstream API behind one of our values right now and reports where the same number appears in the upstream response (JSONPath), the relative difference, and a verdict: exact, within_1pct, within_10pct, no_matching_field or not_checkable_by_get. Use it to check a figure before relying on it. Makes one GET to a third-party API; read-only.
| Argument | Type | Description |
|---|---|---|
| metric* | string | Metric name from get_network, e.g. ACTIVE_MINERS. |
| symbol* | string | Network ticker, e.g. FIL. |
{
"type": "object",
"required": [
"symbol",
"metric"
],
"properties": {
"metric": {
"type": "string",
"examples": [
"ACTIVE_MINERS"
],
"description": "Metric name from get_network, e.g. ACTIVE_MINERS."
},
"symbol": {
"type": "string",
"examples": [
"FIL"
],
"description": "Network ticker, e.g. FIL."
}
}
}| string |
| Optional case-insensitive substring of metric names, e.g. GPU. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"days": {
"type": "integer",
"maximum": 60,
"minimum": 14,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"symbol": {
"type": "string",
"examples": [
"AKT"
],
"description": "One network ticker, e.g. AKT, FIL, RENDER."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"maximum": 16,
"minimum": 3,
"description": "Metrics used (default 10)."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
}
},
"additionalProperties": false
}| Optional case-insensitive substring of metric names, e.g. GPU. |
{
"type": "object",
"required": [
"symbol"
],
"properties": {
"days": {
"type": "integer",
"maximum": 60,
"minimum": 14,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"symbol": {
"type": "string",
"examples": [
"AKT"
],
"description": "One network ticker, e.g. AKT, FIL, RENDER."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"maximum": 60,
"minimum": 3,
"description": "Metrics used (default 30)."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"symbol"
],
"properties": {
"days": {
"type": "integer",
"maximum": 60,
"minimum": 14,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"symbol": {
"type": "string",
"examples": [
"AKT"
],
"description": "One network ticker, e.g. AKT, FIL, RENDER."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"maximum": 60,
"minimum": 3,
"description": "Metrics used (default 30)."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
}
},
"additionalProperties": false
}