Kairos Signal — verifiable DePIN data API

DePIN network telemetry, 370+ networks with live data. Every value carries an upstream verify URL.

Should I use this

Quality & Safety

B
Description quality
95%
Schema completeness
72%
Naming quality
95%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin register_agent
  • MEDIUMTool description contains URL to non-standard domainin topup_credits
  • LOWTool 'get_data_dictionary' description lacks action verbin get_data_dictionary

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,679Tokens (tool definitions)
~705 BTypical response size
Moderate attention impact (1.31% of 128k context)

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/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢register_agent(email, agent_name)

START HERE. One call: get an API key instantly (no card, no human, no Stripe, ~5 seconds) plus $5 free credits, no card (first 3 keys per IP per 30 days). Past that per-IP limit a key is still created, at $0, and the response says so — it is never a silent zero. Works immediately: query live DePIN telemetry (501 symbols, every value carries a verify_url you can check yourself), GPU inference, DAG manifold. Try get_data_dictionary first if you want the coverage spec, or GET https://kairossignal.com/try with zero setup. Nothing to cancel; credits just sit there until you spend them. Then list_products to see what $0.49+ buys.

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. 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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟡purchase_data(product_key, api_key, idempotency_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "product_key": {
      "type": "string",
      "description": "Product key to purchase (e.g. dag_pro, mcp_unlimited)"
    },
    "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). 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, amount, from_address, tx_hash)

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

Input Schema

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Your API key"
    },
    "method": {
      "type": "string",
      "enum": [
        "usdc",
        "stripe"
      ],
      "description": "Payment method"
    },
    "amount": {
      "type": "number",
      "enum": [
        20,
        99
      ],
      "description": "Amount in USD to add. Fixed packs only: 20 or 99. Any other value returns the available packs instead of a link."
    },
    "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."
    },
    "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": "usdc"
          }
        },
        "required": [
          "method"
        ]
      },
      "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

Get aggregate statistics from the databases

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)

DERIVATION TRUTH: raw upstream payloads, SHA-256-pinned, with the exact collector code hash for each fetch. Replay any published value: fetch the verify_url yourself, run the pinned code, compare. Answers 'a hash proves a footprint, not the derivation' — divergence from origin is mechanically detectable. Free.

Input Schema

{
  "type": "object",
  "properties": {
    "symbol": {
      "type": "string",
      "description": "Optional: filter to one symbol (e.g. AKT). Omit for the coverage list."
    }
  }
}
🟢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. Other datasets: unsupported (no retained proof).

Input Schema

{
  "type": "object",
  "properties": {
    "dataset": {
      "type": "string",
      "enum": [
        "depin_onchain"
      ]
    },
    "stamp_day": {
      "type": "string"
    },
    "leaf_index": {
      "type": "integer",
      "minimum": 0
    },
    "expected_row_sha256": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    }
  },
  "required": [
    "dataset",
    "stamp_day",
    "leaf_index",
    "expected_row_sha256"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools
verifiedversion not recorded11 tools
verifiedversion not recorded11 tools