kairos-signal
Provenance-first DePIN telemetry: 331 live networks + 129 Bittensor subnets, 10,508 series.
Should I use this
Quality & Safety
Findings (5)
- HIGH
- MEDIUMin get_network_signals
- MEDIUMin topup_credits
- LOWin get_data_dictionary
- LOWin fetch_dataset
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"kairos-signal": {
"url": "https://kairossignal.com/mcp/"
}
}
}Remote endpoints
https://kairossignal.com/mcp/streamable-httpWhat it can do
Tool inventory
Tools (21)
🟢get_network_signals
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 API key on a paid tier that includes the engines capability (https://kairossignal.com/pricing), sent in the X-API-Key header of the MCP connection; the free starter key from register_agent does not include it, and a call without a qualifying key is refused with isError. Descriptive relationships only: no fitted memory kernel, causal attribution, calibrated anomaly probability or trading-performance claim. Missing or stale inputs remain explicitly unavailable.
Input Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"production_mode": {
"type": "string"
}
},
"required": [
"schema",
"status",
"production_mode"
]
}🟢find_networks(query, category, limit)
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; a network with no public ticker is listed under its internal reference (symbol_kind 'internal_ref'). Read-only, no key.
Input Schema
{
"type": "object",
"properties": {
"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."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Max results (default 20)."
}
}
}Output Schema
{
"type": "object",
"properties": {
"matches": {
"type": "integer"
},
"returned": {
"type": "integer"
},
"networks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"page_url": {
"type": "string"
},
"symbol_kind": {
"type": "string",
"enum": [
"ticker",
"internal_ref"
]
}
},
"required": [
"symbol",
"name"
]
}
},
"networks_searched": {
"type": "integer"
}
},
"required": [
"matches",
"returned",
"networks"
]
}🟢get_network(symbol, metric_filter, include_stale, max_metrics)
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. Incident/stale exclusion reasons are returned separately, without values and not counted as metrics. Read-only, no key.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Network ticker, e.g. AKT, FIL, HNT (find_networks resolves names).",
"examples": [
"AKT",
"FIL",
"HNT"
]
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring, e.g. 'gpu' or 'storage'."
},
"include_stale": {
"type": "boolean",
"description": "Include readings past their freshness window (default false)."
},
"max_metrics": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"description": "Max metrics returned (default 40)."
}
},
"required": [
"symbol"
]
}Output Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"telemetry": {
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"type": "string"
},
"as_of": {
"type": "string"
},
"freshness": {
"type": "string"
},
"source": {
"type": "string"
},
"verify_url": {
"type": "string"
},
"verify_note": {
"type": "string"
},
"token_contract_note": {
"type": "string"
}
},
"required": [
"metric",
"value"
]
}
},
"onchain_first_party": {
"type": "array",
"items": {
"type": "object",
"properties": {
"metric": {
"type": "string"
},
"value": {
"type": "number"
},
"unit": {
"type": "string"
},
"as_of": {
"type": "string"
},
"freshness": {
"type": "string"
},
"source": {
"type": "string"
},
"verify_url": {
"type": "string"
},
"verify_note": {
"type": "string"
},
"token_contract_note": {
"type": "string"
}
},
"required": [
"metric",
"value"
]
}
},
"metrics_returned": {
"type": "integer"
},
"metrics_matched": {
"type": "integer"
},
"stale_omitted": {
"type": "integer"
},
"page_url": {
"type": "string"
},
"onchain_withheld_not_live": {
"type": "object"
},
"live_withheld_not_live": {
"type": "object"
},
"deep_network_profile": {
"type": "object"
}
},
"required": [
"symbol",
"telemetry",
"onchain_first_party",
"metrics_returned"
]
}🟢get_metric_history(symbol, metric, days)
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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Network ticker, e.g. AKT.",
"examples": [
"AKT"
]
},
"metric": {
"type": "string",
"description": "Metric name exactly as get_network lists it, e.g. GPU_ACTIVE.",
"examples": [
"GPU_ACTIVE"
]
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"description": "Days of history requested (default 7)."
}
},
"required": [
"symbol",
"metric"
]
}Output Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"metric": {
"type": "string"
},
"points": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"value": {
"type": "number"
},
"n_observations": {
"type": "integer"
}
},
"required": [
"date",
"value"
]
}
},
"window_days": {
"type": "integer"
},
"window_notice": {
"type": "string"
}
},
"required": [
"symbol",
"metric",
"points"
]
}🟢verify_value(symbol, metric)
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, not_checkable_by_get, or withheld_not_live (no upstream fetch; ours is empty). Use it to check a figure before relying on it. Makes one GET to a third-party API; read-only.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Network ticker, e.g. FIL.",
"examples": [
"FIL"
]
},
"metric": {
"type": "string",
"description": "Metric name from get_network, e.g. ACTIVE_MINERS.",
"examples": [
"ACTIVE_MINERS"
]
}
},
"required": [
"symbol",
"metric"
]
}Output Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"metric": {
"type": "string"
},
"ours": {
"type": "object"
},
"upstream": {
"type": "object"
},
"match": {
"type": "object"
},
"verdict": {
"type": "string"
},
"explanation": {
"type": "string"
}
},
"required": [
"symbol",
"metric",
"ours",
"verdict"
]
}🟢register_agent(email, agent_name)
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 needed for purchase_data, check_balance, topup_credits and every tool that charges credits; get_network_signals needs one on a paid tier with the engines capability, which the free starter key does not have. Every other read-only tool works without one. email is optional and used for delivery and top-up notices.
Input Schema
{
"type": "object",
"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"
}
},
"required": [
"agent_name"
]
}🟢list_products
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. 30-day Pro access to the DAG manifold API is sold as dag_manifold_30d and delivers its API key inline. Not purchasable, refused by purchase_data with 503 not_yet_deliverable and nothing charged: the signal-feed tiers (retired, not sold), dag_pro (buy dag_manifold_30d instead), and dag_quant, dag_enterprise and mcp_unlimited (listed, not on sale yet). The five paid analytics tools are not products here: each charges credits per answered call, stated in its own description. Call after register_agent.
Input Schema
{
"type": "object",
"properties": {}
}🔴purchase_data(product_key, api_key, idempotency_key)
Buy a product with your credits; most products ship their data 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_* keys (retired, not sold), dag_pro (sold as dag_manifold_30d), dag_quant, dag_enterprise and mcp_unlimited (not on sale yet) return 503 not_yet_deliverable and charge nothing; they are deliberately blocked, not broken. Most products deliver data inline; dag_manifold_30d delivers a 30-day DAG manifold API key inline; a delivery larger than 4 MB (today depin_history and lead_lag_correlations, each tens of MB, and derivation_replay whenever its 100 raw upstream bodies pass 4 MB, as an unfiltered pull does today) returns the receipt and a no-charge URL that serves the stored payload. Every purchase carries an idempotency_key (yours, or one generated and returned to you): if a call errors, the answer says whether you may have been charged, and repeating it with the same idempotency_key returns the receipt and data without a second charge. Use api_key from register_agent.
Input Schema
{
"type": "object",
"properties": {
"product_key": {
"type": "string",
"description": "Product key to purchase (e.g. depin_provenance, depin_networks; list_products has every key and price)"
},
"api_key": {
"type": "string",
"description": "Your API key from register_agent"
},
"idempotency_key": {
"type": "string",
"description": "Optional. Any stable string unique to THIS intended purchase (e.g. a uuid); when absent the server generates one and returns it on any error it can still answer. Send your own: if your connection is cut before any answer arrives (a client or proxy timeout; the public endpoint gives up on a request that has not answered within about 60 s), only a key you chose lets you replay. 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."
}
},
"required": [
"product_key",
"api_key"
]
}🟡topup_credits(api_key, method, mode, amount, from_address, ...)
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, two modes. micro_decimal, no wallet signature: {"method": "usdc", "mode": "micro_decimal", "amount": N} with N whole USDC from 1 to 999,999 returns a unique amount with a 6-decimal suffix and an expires_at; a finalized Base transfer of EXACTLY that amount, from any sender including an exchange, before expires_at credits your account (1 USDC = 1 credit); a different amount does not credit your account. verified_wallet (the default when mode is omitted): 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; only a transfer FROM that wallet is credited. In every USDC mode send only after a successful quote; credit requires finalized Base evidence. Instructions: https://kairossignal.com/docs/crypto.html
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your API key"
},
"method": {
"type": "string",
"enum": [
"usdc",
"stripe"
],
"description": "Payment method"
},
"mode": {
"type": "string",
"enum": [
"verified_wallet",
"micro_decimal"
],
"description": "USDC only. micro_decimal: no wallet signature; the quote is a unique amount to send exactly, from any sender. verified_wallet (default when omitted): requires from_address verified through the wallet challenge flow. Ignored for stripe."
},
"amount": {
"type": "number",
"description": "stripe: Amount in USD to add. Fixed packs only: 20 or 99. Any other value returns the available packs instead of a link. USDC micro_decimal: whole USDC, 1 to 999999. USDC verified_wallet: the USDC amount to quote (GET /v1/credits/crypto states the accepted range)."
},
"from_address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "Required for USDC verified_wallet mode (the default): your EOA address already verified to this API account through the wallet challenge flow. Not used by micro_decimal."
},
"tx_hash": {
"type": "string",
"description": "Legacy optional field; a transaction hash does not replace from_address or verify payment."
}
},
"required": [
"api_key",
"method",
"amount"
],
"allOf": [
{
"if": {
"properties": {
"method": {
"const": "stripe"
}
},
"required": [
"method"
]
},
"then": {
"properties": {
"amount": {
"enum": [
20,
99
]
}
}
}
},
{
"if": {
"properties": {
"method": {
"const": "usdc"
},
"mode": {
"const": "micro_decimal"
}
},
"required": [
"method",
"mode"
]
},
"then": {
"properties": {
"amount": {
"type": "integer",
"minimum": 1,
"maximum": 999999
}
}
}
},
{
"if": {
"properties": {
"method": {
"const": "usdc"
}
},
"required": [
"method"
],
"not": {
"properties": {
"mode": {
"const": "micro_decimal"
}
},
"required": [
"mode"
]
}
},
"then": {
"required": [
"from_address"
]
}
}
]
}🟢check_balance(api_key)
Check your remaining credit balance. Use after purchases to see remaining credits.
Input Schema
{
"type": "object",
"properties": {
"api_key": {
"type": "string",
"description": "Your API key"
}
},
"required": [
"api_key"
]
}🟢list_datasets
List the current dataset catalog with record counts. Browsing is free; existing query and daily-call limits apply.
Input Schema
{
"type": "object",
"properties": {}
}🟢get_stats
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.
Input Schema
{
"type": "object",
"properties": {}
}🟢get_data_dictionary
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.
Input Schema
{
"type": "object",
"properties": {}
}🟢get_derivation_ledger(symbol)
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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Optional: one network symbol, case-insensitive (e.g. AKT). Omit for the coverage list.",
"examples": [
"AKT"
]
}
}
}🟢fetch_dataset(dataset, limit, offset)
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.
Input Schema
{
"type": "object",
"properties": {
"dataset": {
"type": "string",
"description": "Dataset name (e.g., depin_onchain)"
},
"limit": {
"type": "integer",
"description": "Max records (max 10 for free tier)"
},
"offset": {
"type": "integer",
"description": "Record offset"
}
},
"required": [
"dataset"
]
}🟢verify_footprint(dataset, stamp_day, leaf_index, expected_row_sha256)
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).
Input Schema
{
"type": "object",
"properties": {
"dataset": {
"type": "string",
"enum": [
"depin_onchain"
],
"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)."
}
},
"required": [
"stamp_day",
"leaf_index",
"expected_row_sha256"
]
}🔴get_hodge_regime_sieve(symbol, days, metric_filter, api_key, max_metrics)
Paid: 1 credit ($1.00) 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 stored first-party metrics over the last `days` complete UTC days (one publisher per metric; a metric that is an exact combination of others, e.g. a writer-derived ratio, is excluded and named; the panel's effective rank and near-identical pairs are reported), 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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One network ticker, e.g. AKT, FIL, RENDER.",
"examples": [
"AKT"
]
},
"days": {
"type": "integer",
"minimum": 14,
"maximum": 60,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"minimum": 3,
"maximum": 16,
"description": "Metrics used (default 10)."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
},
"symbol": {
"type": "string"
},
"result": {
"type": "object"
},
"credit_cost": {
"type": "number"
},
"charge_state": {
"type": "string"
},
"call_id": {
"type": "string"
}
},
"required": [
"schema",
"status",
"symbol",
"result",
"credit_cost",
"charge_state"
]
}🔴get_rmt_regime_state(symbol, days, metric_filter, api_key, max_metrics)
Paid: 1 credit ($1.00) 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 stored first-party metrics over the last `days` complete UTC days (one publisher per metric; exact combinations of other metrics, e.g. writer-derived ratios, excluded and named; effective rank and near-identical pairs reported), 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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One network ticker, e.g. AKT, FIL, RENDER.",
"examples": [
"AKT"
]
},
"days": {
"type": "integer",
"minimum": 14,
"maximum": 60,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"minimum": 3,
"maximum": 60,
"description": "Metrics used (default 30)."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
},
"symbol": {
"type": "string"
},
"result": {
"type": "object"
},
"credit_cost": {
"type": "number"
},
"charge_state": {
"type": "string"
},
"call_id": {
"type": "string"
}
},
"required": [
"schema",
"status",
"symbol",
"result",
"credit_cost",
"charge_state"
]
}🔴get_depin_slashing_audit(symbol, api_key)
Paid: 2 credits ($2.00) 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 last confirmed there; unsourced stake or slash parameters are refused, never defaulted, and so is one not re-confirmed within 60 days. Where a network publishes no audit probability, p = 1 is used and the figure is labelled an upper bound (capacity_upper_bound_p1); a slash fraction published only as a recommended default is labelled so and its range is reported. 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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One network ticker, e.g. AKT, FIL, RENDER.",
"examples": [
"FLUX"
]
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
},
"symbol": {
"type": "string"
},
"result": {
"type": "object"
},
"credit_cost": {
"type": "number"
},
"charge_state": {
"type": "string"
},
"call_id": {
"type": "string"
}
},
"required": [
"schema",
"status",
"symbol",
"result",
"credit_cost",
"charge_state"
]
}🔴get_shap_node_attribution(symbol, days, metric_filter, api_key, max_metrics)
Paid: 1.5 credits ($1.50) 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 stored first-party metrics over the last `days` complete UTC days (same input rules as get_rmt_regime_state), with factors day (moves shared by the network's metrics that day) and unit (metrics measured in the same unit; units held by one metric are pooled into one named group; a panel where a group would hold one metric, or that has only one unit group, is answered unavailable, uncharged). 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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One network ticker, e.g. AKT, FIL, RENDER.",
"examples": [
"AKT"
]
},
"days": {
"type": "integer",
"minimum": 14,
"maximum": 60,
"description": "Daily changes in the window (default 30), ending at the latest complete UTC day."
},
"metric_filter": {
"type": "string",
"description": "Optional case-insensitive substring of metric names, e.g. GPU."
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
},
"max_metrics": {
"type": "integer",
"minimum": 3,
"maximum": 60,
"description": "Metrics used (default 30)."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
},
"symbol": {
"type": "string"
},
"result": {
"type": "object"
},
"credit_cost": {
"type": "number"
},
"charge_state": {
"type": "string"
},
"call_id": {
"type": "string"
}
},
"required": [
"schema",
"status",
"symbol",
"result",
"credit_cost",
"charge_state"
]
}🔴get_listing_dilution_score(symbol, api_key)
Paid: 1 credit ($1.00) 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). Each series is the supply of the contract or chain at its verify_url; one below half of the network's reference supply (a bridged or partial representation, e.g. a BEP-20 wrapper) is not used, and one with no reference held, or counted in another unit than whole tokens of the network's ticker (base units, a second token), is labelled unchecked. 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.
Input Schema
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One network ticker, e.g. AKT, FIL, RENDER.",
"examples": [
"RENDER"
]
},
"api_key": {
"type": "string",
"description": "Your API key, only if your client cannot send the X-API-Key header."
}
},
"required": [
"symbol"
],
"additionalProperties": false
}Output Schema
{
"type": "object",
"properties": {
"schema": {
"type": "string"
},
"status": {
"type": "string"
},
"tool": {
"type": "string"
},
"symbol": {
"type": "string"
},
"result": {
"type": "object"
},
"credit_cost": {
"type": "number"
},
"charge_state": {
"type": "string"
},
"call_id": {
"type": "string"
}
},
"required": [
"schema",
"status",
"symbol",
"result",
"credit_cost",
"charge_state"
]
}Community
Evidence