openapi: 3.2.0 info: title: Dynamic Feed — Live Data for AI Agent API description: Fresh, current data that AI models lack — 20 live domains, 94 read-only tools, over one REST API or a keyless MCP endpoint. contact: name: Dynamic Feed url: https://dynamicfeed.ai/ version: 1.0.0 servers: - url: https://dynamicfeed.ai tags: - name: Agent paths: /v1/discover: get: tags: - Agent summary: V1 Discover Get description: 'CAPABILITY DISCOVERY — ask in plain words what you need ("live rainfall in Brisbane", "sanctions screening", "satellite positions") and get a ranked, Ed25519-signed list of candidate capabilities: Dynamic Feed''s own tools with MEASURED 24h uptime/latency and a keyless call recipe, plus matching external MCP servers from the official registry index, honestly marked registry-reported and unmeasured. Advisory discovery with an explicit vantage per candidate, not an endorsement. Keyless.' operationId: v1_discover_get_v1_discover_get parameters: - name: need in: query required: false schema: type: string maxLength: 300 default: '' title: Need - name: limit in: query required: false schema: type: integer maximum: 20 minimum: 1 default: 8 title: Limit - name: external in: query required: false schema: type: integer default: 1 title: External responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Agent summary: V1 Discover Post description: 'POST twin of GET /v1/discover: {"need": "...", "limit": 8, "external": true}.' operationId: v1_discover_post_v1_discover_post responses: '200': description: Successful Response content: application/json: schema: {} /schemas/index.json: get: tags: - Agent summary: Schemas Index description: 'The Dynamic Feed receipt-schema family, self-describing (DF-VERIFY/1). Scans the schema directory at request time so it never drifts: every profile''s $id, title and active mint endpoint when one exists. Deprecated/quarantined schemas remain visible as history, not as executable capabilities. Schema conformance and signature mathematics are separate from lifecycle acceptance.' operationId: schemas_index_schemas_index_json_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/bundles: get: tags: - Agent summary: V1 Bundles description: 'Curated tool BUNDLES per domain — pick the right tools for your agent''s use-case fast (instead of sifting all tools). Keyless: call any tool via POST /v1/batch; pay-per-call via /v1/pro/*.' operationId: v1_bundles_v1_bundles_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/bundles/{bundle_id}: get: tags: - Agent summary: V1 Bundle description: One curated tool bundle by id (e.g. devsecops, weather-climate, finance-markets). operationId: v1_bundle_v1_bundles__bundle_id__get parameters: - name: bundle_id in: path required: true schema: type: string title: Bundle Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/batch: post: tags: - Agent summary: V1 Batch description: 'Run up to 20 read-only data-tool calls in ONE request — cuts agent round-trips. Keyless. Body: {"calls":[{"tool":"current_weather","args":{"city":"London"}}, {"tool":"earthquakes","args":{}}]}. Returns {"results":[{"tool","ok","data"|"error"}, ...]} in the same order. Tool names are the keyless MCP tools; POST with no `calls` returns the available list. Each call has its own 20s deadline, so a slow upstream degrades that one item rather than blocking the batch. Add "facts": true to the body to get each result as a canonical, reliability-graded fact instead of raw data: {"tool","ok","fact":{value, provenance, verification, reliability{confidence,basis,sources, verified,vantage,conflict}}}. The whole response is Ed25519-signed (verify against /.well-known/keys), so this is verifiable, reliability-graded, multi-tool data in one round-trip. Default shape is unchanged.' operationId: v1_batch_v1_batch_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/pro/tool/{tool}: post: tags: - Agent summary: V1 Pro Tool description: 'PREMIUM single signed tool call — pay-per-call (x402, USDC on Base) for ANY one of Dynamic Feed''s live tools. An agent pays once, gets one Ed25519-signed datapoint. No signup, no human. Body: {"args":{...}}. Discoverable via the x402 bazaar. (Free alternative: keyless /v1/batch, fair-use.)' operationId: v1_pro_tool_v1_pro_tool__tool__post parameters: - name: tool in: path required: true schema: type: string title: Tool responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Agent summary: V1 Pro Tool Discover description: 'Discovery for the paid single-call endpoint. A GET returns the x402 402 challenge — so an agent that probes with GET (instead of a ''Method Not Allowed'' dead end) still learns the price, the asset, and that it must POST with an X-PAYMENT header + {"args":{...}} body. NO payment is taken on GET; settlement only ever happens on POST. Pure discovery, no money path.' operationId: v1_pro_tool_discover_v1_pro_tool__tool__get parameters: - name: tool in: path required: true schema: type: string title: Tool responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/pro/asof: post: tags: - Agent summary: V1 Pro Asof description: 'PREMIUM keyless AS-OF REPLAY — pay-per-call (x402, USDC on Base) signed time-machine over Dynamic Feed''s append-only archive. Body {"tool":"current_weather","t":"2026-06-10T14:30:00Z"} (or ?tool=&t=) -> the archived observation for `tool` nearest at-or-before `t`, replayed VERBATIM, Ed25519-signed (verify against GET /.well-known/keys). The keyless paid channel to the SAME engine as the key-gated GET /v1/asof — for agent backtesting, audit trails and ''what did we know when we decided'' disputes. No signup, no human; discoverable via the x402 bazaar. Honest about coverage: a time the archive didn''t capture returns a clear miss, never a fabricated past.' operationId: v1_pro_asof_v1_pro_asof_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/pro/batch: post: tags: - Agent summary: V1 Pro Batch description: 'PREMIUM, pay-per-call data batch — the commercial tier of /v1/batch, paid AGENT-NATIVELY via x402 (HTTP 402): an agent gets a price, pays from its wallet, re-calls with the X-PAYMENT header, and is served — no human, no signup. Up to 100 signed tool calls per request (free /v1/batch is fair-use, capped at 20). Dynamic Feed charges for its OWN service; a third-party facilitator settles the payment — DF never custodies funds (witness-not-money). Body: {"calls":[{"tool":...,"args":{...}}, ...]}.' operationId: v1_pro_batch_v1_pro_batch_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/pro/catalog: get: tags: - Agent summary: V1 Pro Catalog description: 'Machine-readable MENU of Dynamic Feed''s x402 pay-per-call SKUs (USDC on Base) — the ''price list'' an agent or x402 facilitator shops in one call: every paid endpoint, its price (live from X402_PRICE_ATOMIC), input/output schema, the recipient wallet (when connected), and the facilitator. Boundary: DF is the merchant; the facilitator settles — DF never custodies funds.' operationId: v1_pro_catalog_v1_pro_catalog_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/drift: post: tags: - Agent summary: V1 Drift description: 'Drift detection — audit an AI''s stated facts against live ground-truth, graded by severity. Keyless. Body: {"claims":["The latest Python is 3.11","Node.js is on 18"]} or {"text":""}. Returns {checked, drifted_count, overall, results:[{claim, status, drifted, severity, correction, source}]}.' operationId: v1_drift_v1_drift_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/guard: post: tags: - Agent summary: V1 Guard description: 'Pre-answer guard — the anti-hallucination middleware. POST the draft answer your AI is about to send; get back a verdict of "pass" or "revise" plus the exact corrections, so you can fix it BEFORE the user sees it. Keyless. Wrap it around any LLM response pipeline. Body: {"answer":""} or {"claims":["...","..."]}. Returns {verdict:"pass"|"revise", checked, issues:[{claim, subject, severity, correction, source}], confirmed, unverifiable, guidance}. Only claims that CONTRADICT live data trigger "revise"; opinions and facts no live feed can cover pass through untouched. Verifies prices, software versions, market open/closed and service up/down against Dynamic Feed''s live ground-truth.' operationId: v1_guard_v1_guard_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/sources: get: tags: - Agent summary: V1 Sources description: 'The authoritative source catalog — every upstream feed Dynamic Feed serves, with its publisher, official URL, licence, whether commercial use + redistribution is permitted, update cadence, and the tools it backs. Keyless. Each datapoint is provenance-stamped (source, licence, timestamp) so you can cite it and verify usage rights yourself.' operationId: v1_sources_v1_sources_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/explain: get: tags: - Agent summary: V1 Explain description: 'Explain the source / chain of custody for one subject. Pass ?subject= (GET) or {"subject":"..."} (POST) — a tool name (earthquakes), a source (USGS), or a topic. Returns the upstream source(s), licence, official URL, update cadence and the full custody trail (origin -> ingest -> normalize -> serve, plus sign/anchor for awareness), so you can trace and verify where a number came from. Keyless.' operationId: v1_explain_v1_explain_get parameters: - name: subject in: query required: false schema: type: string default: '' title: Subject responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Agent summary: V1 Explain description: 'Explain the source / chain of custody for one subject. Pass ?subject= (GET) or {"subject":"..."} (POST) — a tool name (earthquakes), a source (USGS), or a topic. Returns the upstream source(s), licence, official URL, update cadence and the full custody trail (origin -> ingest -> normalize -> serve, plus sign/anchor for awareness), so you can trace and verify where a number came from. Keyless.' operationId: postV1Explain parameters: - name: subject in: query required: false schema: type: string default: '' title: Subject responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-operation-id-source: normalized x-operation-id-original: v1_explain_v1_explain_get /v1/snapshot: get: tags: - Agent summary: V1 Snapshot description: 'Historical world-state — what Dynamic Feed reported on a given day. ?date=YYYY-MM-DD returns that day''s stored snapshot (the cross-domain world_pulse digest); no date returns today''s, captured on read. Honest about coverage: a date before the earliest snapshot returns the available range, never a fabricated past. Keyless. The auditable companion to the signed/RFC 3161 timestamped awareness layer.' operationId: v1_snapshot_v1_snapshot_get parameters: - name: date in: query required: false schema: type: string default: '' title: Date responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/asof: get: tags: - Agent summary: V1 Asof description: 'TIME-MACHINE REPLAY — what did the data say at decision time? Returns the archived observation for `tool` nearest at-or-before time `t`, replayed VERBATIM from Dynamic Feed''s append-only archive (capturing every served datapoint since 2026-06-07) — the value as served then, never a re-fetch or reconstruction. The response carries honest metadata (`archived_at`, `distance_seconds` from your requested instant, the exact archive object, where coverage begins) and is Ed25519-signed (verify against GET /.well-known/keys) — built for agent backtesting, audit trails and "what did we know when we decided" disputes. Honest about coverage: a time the archive didn''t capture returns a clear miss with the nearest captured day, never a fabricated past. Paid plans (Pro and up); auth via the X-API-Key header. Upgrade: https://dynamicfeed.ai/dashboard' operationId: v1_asof_v1_asof_get parameters: - name: tool in: query required: true schema: type: string description: tool name, e.g. current_weather (the keyless MCP tool names) title: Tool description: tool name, e.g. current_weather (the keyless MCP tool names) - name: t in: query required: true schema: type: string description: ISO-8601 timestamp, e.g. 2026-06-10T14:30:00Z title: T description: ISO-8601 timestamp, e.g. 2026-06-10T14:30:00Z - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/watchlist: get: tags: - Agent summary: V1 Watchlist Get description: 'Your saved watchlist — the subjects/tools you monitor. ?pull=true runs every watched tool and returns each one''s CURRENT value in a single call (your whole dashboard at once). Per-user, keyed by your API key (X-API-Key).' operationId: v1_watchlist_get_v1_watchlist_get parameters: - name: pull in: query required: false schema: type: boolean default: false title: Pull - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Agent summary: V1 Watchlist Post description: 'Add to or replace your watchlist. Body {"label":"BTC","tool":"cite","args":{"subject":"BTC"}} adds one item; body {"items":[...]} replaces the whole list (max 25). Each item''s `tool` must be a real Dynamic Feed tool. Per-user, keyed by your API key.' operationId: v1_watchlist_post_v1_watchlist_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Agent summary: V1 Watchlist Delete description: Remove one item from your watchlist (?label=BTC) or clear it entirely (no label). Per-user. operationId: v1_watchlist_delete_v1_watchlist_delete parameters: - name: label in: query required: false schema: type: string default: '' title: Label - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/stream: get: tags: - Agent summary: V1 Stream description: 'Server-Sent Events stream of a LIVE value. Point an EventSource at /v1/stream?tool=&args=&interval=&count= and receive the tool''s current value every `interval` seconds as a `value` event, until `count` updates or you disconnect. Keyless. Bounded for fair use: interval 5-300s, count 1-60. Example: /v1/stream?tool=cite&args={"subject":"BTC"}&interval=10' operationId: v1_stream_v1_stream_get parameters: - name: tool in: query required: false schema: type: string default: '' title: Tool - name: args in: query required: false schema: type: string default: '' title: Args - name: interval in: query required: false schema: type: number default: 15 title: Interval - name: count in: query required: false schema: type: integer default: 20 title: Count responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/webhooks: post: tags: - Agent summary: V1 Webhooks Create description: 'Register a webhook that fires when a tool''s value CHANGES. Body: {"url":"https://you.example/hook","tool":"exploited_vulnerabilities","args":{}}. The URL is validated SSRF-safe (public http/https only). Returns a one-time `secret` — every delivery is HMAC-SHA256 signed with it (header X-DynamicFeed-Signature: sha256=…), so you can verify it came from us. Per-user (X-API-Key).' operationId: v1_webhooks_create_v1_webhooks_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Agent summary: V1 Webhooks List description: List your webhook subscriptions (secrets are never returned). Per-user. operationId: v1_webhooks_list_v1_webhooks_get parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Agent summary: V1 Webhooks Delete description: Delete one of your webhook subscriptions by ?id=. Per-user. operationId: v1_webhooks_delete_v1_webhooks_delete parameters: - name: id in: query required: false schema: type: integer default: 0 title: Id - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/webhooks/test: post: tags: - Agent summary: V1 Webhooks Test description: 'Send a signed TEST delivery to one of your subscriptions now — confirm your endpoint receives it and the HMAC validates. Body: {"id": }. Per-user.' operationId: v1_webhooks_test_v1_webhooks_test_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1: get: tags: - Agent summary: V1 Index description: 'The Dynamic Feed agent & robot API at a glance — every /v1 capability, what it does, and a copy-paste example. The fastest way for a developer (or an agent) to discover the whole surface. Keyless unless noted.' operationId: v1_index_v1_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/receipt: post: tags: - Agent summary: V1 Receipt description: 'Evidence receipt — wrap any fact/claim/data in a timestamped, Ed25519-SIGNED record: provable evidence of what an AI was told (or asserted), and when. Body: {"data": } or {"claim":"..."}. Returns the receipt + a detached signature (verify against GET /.well-known/keys); anchor its hash to RFC 3161 via POST /v1/anchor. Keyless. An audit-trail input for regulated AI (fintech / legal / medical).' operationId: v1_receipt_v1_receipt_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/stamp: post: tags: - Agent summary: V1 Stamp description: 'Create an independently verifiable record of submitted JSON. ``X-API-Key`` is optional so the existing keyless signing behaviour remains available. When a key is supplied it is always validated: portal ``fx_live_`` keys use the isolated Fluxdyne runtime database boundary, while legacy keys keep their existing validation and metering path. A signature establishes integrity and issuer identity; it does not establish that submitted content is complete, scientifically valid, or true.' operationId: v1_stamp_v1_stamp_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/agent/receipt: post: tags: - Agent summary: V1 Agent Receipt description: 'Agent receipt. A signed, re-checkable record of what an AI agent acted on and what it decided. The operational-integrity primitive for the agent economy: prove, after the fact, the inputs behind an agent''s action. Body: {"agent": "...", "action": "...", "inputs": }, plus optional "model", "decision", "context". Returns an agent-receipt/v1 with a detached Ed25519 signature (verify against GET /.well-known/keys: drop the `signature` field, canonicalize json-sorted-compact). Anchor the hash via RFC 3161 via POST /v1/anchor. Keyless. Advisory evidence and a neutral witness: it proves what the agent was given and did, never that the decision was correct, and it never moves anything. Spec: https://dynamicfeed.ai/standard' operationId: v1_agent_receipt_v1_agent_receipt_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/notarize: post: tags: - Agent summary: V1 Notarize description: 'NOTARY for any data feed — a neutral third party witnesses YOUR data and returns a timestamped, Ed25519-signed notarization: proof these exact bytes existed at this moment, independently verifiable forever. Two modes — send the data ({"payload": }), or keep it private and send only its hash ({"payload_sha256": ""}). Optional "subject" names the publisher; "echo": false omits the payload from the record (hash retained). This attests that Dynamic Feed WITNESSED these bytes (or this hash) at witnessed_at — not that the content is true. Anchor via POST /v1/anchor for proof-of-when independent of us. Auth: X-API-Key (free key at POST /signup). ''Let''s Encrypt for data feeds'' — your feed, signed, without building a signing stack.' operationId: v1_notarize_v1_notarize_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/exposure-report: get: tags: - Agent summary: V1 Exposure Report description: 'Automated, signed EXPOSURE REPORT. Maps the perils a decision depends on to the external readings that decide them, flags where those readings are unverifiable today, and attaches a LIVE signed sample observation for each, so an organisation can see where its decisions rely on data it cannot independently check. Fully automated, no human in the loop. Ed25519-signed; verify offline at /.well-known/keys. Advisory evidence, not a certification or legal/financial advice.' operationId: v1_exposure_report_v1_exposure_report_get parameters: - name: perils in: query required: false schema: type: string default: wind,flood,wildfire title: Perils - name: lat in: query required: false schema: type: number default: -33.8688 title: Lat - name: lon in: query required: false schema: type: number default: 151.2093 title: Lon - name: place in: query required: false schema: anyOf: - type: string - type: 'null' title: Place - name: organisation in: query required: false schema: anyOf: - type: string - type: 'null' title: Organisation - name: use_case in: query required: false schema: anyOf: - type: string - type: 'null' title: Use Case responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/evidence/wildfire: get: tags: - Agent summary: V1 Evidence Wildfire description: 'Chain-of-custody EVIDENCE record for a wildfire detection. Wraps a SELF-REPORTED detection (detector, lat/lon, time) with Dynamic Feed''s INDEPENDENT context captured at that location the moment it''s requested — fire-weather, near-term forecast, air quality (smoke), and tracked EONET wildfire events — each datapoint carrying its source, licence and age. The whole record is Ed25519-signed so any party can verify it OFFLINE against /.well-known/keys, WITHOUT trusting the detector or Dynamic Feed. Advisory evidence + audit layer: it does NOT make, certify, or sit in the safety-critical path of the detection — it makes the surrounding context provable later (an insurer claim, a liability review, an SLA). Keyless. Anchor via RFC 3161 via POST /v1/anchor for proof-of-when independent of us.' operationId: v1_evidence_wildfire_v1_evidence_wildfire_get parameters: - name: lat in: query required: true schema: type: number title: Lat - name: lon in: query required: true schema: type: number title: Lon - name: detected_at in: query required: false schema: anyOf: - type: string - type: 'null' title: Detected At - name: detector in: query required: false schema: type: string default: the detector title: Detector - name: place in: query required: false schema: anyOf: - type: string - type: 'null' title: Place - name: confidence in: query required: false schema: anyOf: - type: string - type: 'null' title: Confidence responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/vc: post: tags: - Agent summary: V1 Vc description: 'Security quarantine: legacy VC wrapping did not verify the inner receipt or role boundaries.' operationId: v1_vc_v1_vc_post responses: '200': description: Successful Response content: application/json: schema: {} /v1/station/register: post: tags: - Agent summary: V1 Station Register description: 'WE SIGN YOUR STATION, register your own sensor so its readings can be witnessed as signed receipts. Body: {"name": "...", "location": {"lat": .., "lon": ..}, "quantities": ["wind_kmh", ...]}. Returns a station_id + provenance. Dynamic Feed witnesses what your station reports; it does not measure the value. Your key is stored only as a non-reversible hash. Auth: X-API-Key (free key at POST /signup).' operationId: v1_station_register_v1_station_register_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/station/reading: post: tags: - Agent summary: V1 Station Reading description: 'Witness one reading your station reported: get back a signed station-receipt/v1 stating, in words, that the value is self-reported by your station and only WITNESSED (not measured) by Dynamic Feed. Body: {"station_id": "stn_...", "quantity": "wind_kmh", "value": 12.4, "unit": "km/h", "observed_at": "..."}. Keyless verification against /.well-known/keys. Auth: X-API-Key.' operationId: v1_station_reading_v1_station_reading_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/station/{station_id}: get: tags: - Agent summary: V1 Station Get description: 'The public descriptor of a registered station (no owner identity). Keyless, so a verifier of a station-receipt can see what the station is and what it reports.' operationId: v1_station_get_v1_station__station_id__get parameters: - name: station_id in: path required: true schema: type: string title: Station Id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/proxy-witness: post: tags: - Agent summary: V1 Proxy Witness description: 'PROXY WITNESS, route any third-party API call through Dynamic Feed and get a signed, archived receipt of exactly what that URL returned to us at this moment. Body: {"url": "https://...", "method": "GET"|"POST"|..., "headers": {...}, "body": "...", "echo": false, "subject": "..."}. We fetch server-side under an SSRF guard (only public http/https targets; private and reserved addresses blocked; redirects not followed), redact your request credentials from the record, and sign a proxy-witness/v1 envelope carrying the response status, content-type, size and SHA-256 (the full body only when echo:true and small; our archive is hash-first and never keeps the body). Witnesses what the URL returned to us, not that the content is true; never the money path. Auth: X-API-Key (free key at POST /signup).' operationId: v1_proxy_witness_v1_proxy_witness_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/witness: post: tags: - Agent summary: V1 Witness description: 'WITNESS a machine-to-machine / agent-to-agent transaction RECORD — a neutral, third-party, Ed25519-signed, transparency-logged, RFC 3161 timestampable receipt that this exact record EXISTED and is INTACT. Dynamic Feed sits BESIDE the transaction, NEVER in the value path: it only signs + timestamps + anchors a HASH of a record you give it. It never accepts, holds, routes, converts or custodies funds or anything of value. Send the record ({"payload": }) or keep it private ({"content_hash": ""}). Optional: parties[] (opaque ids — NO PII), txn_ref (opaque), and a BYO-key agent co-signature (provider_pubkey + provider_sig, Ed25519 over the ascii-hex hash) so the receipt reads "agent attested, Dynamic Feed witnessed". Auth: a FREE key (POST /signup) — no KYC. PROVES: the record existed at issued_at, is intact (tamper-EVIDENT, verifiable via /verify.js against /.well-known/keys), and which agent key co-signed. Does NOT prove the transaction was authorized, correct, lawful, completed, or that any value moved. Profile of receipt/v1. Anchor independently via POST /v1/anchor.' operationId: v1_witness_v1_witness_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/witness/sample: get: tags: - Agent summary: V1 Witness Sample description: 'A keyless, signed SAMPLE txn-receipt/v1 — for the /witness demo. Shows exactly what POST /v1/witness returns (without writing to the log or needing a key): a neutral witness of a sample machine-to-machine transaction record, with the recent-Bitcoin-block NOT-BEFORE time marker. Verify it in-browser via /verify.js, then flip a byte and watch verification fail.' operationId: v1_witness_sample_v1_witness_sample_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/inference-receipt: post: tags: - Agent summary: V1 Inference Receipt description: 'WITNESS a single AI model INFERENCE — a neutral, Ed25519-signed, transparency-logged, RFC 3161 timestampable receipt that this inference record EXISTED and is INTACT. Privacy by CONSTRUCTION: the caller hashes the prompt + response LOCALLY and sends ONLY fixed-length sha256 hashes + non-PII metadata. Body: {"claimed_model": "", "prompt_sha256": "", "response_sha256": ""} plus optional requested_model, latency_ms, token_count, fallback_flag (the provider''s OWN flag), provider, region, and a BYO-key agent co-signature (provider_pubkey + provider_sig). Auth: a FREE key (POST /signup) — no KYC. PROVES: the record existed at issued_at and is intact (tamper-EVIDENT, verifiable via /verify.js against /.well-known/keys). Does NOT independently verify which model actually ran, does NOT adjudicate that a ''downgrade'' occurred, does NOT score quality — model_match is a literal string comparison and the holder draws any inference. Profile of receipt/v1. Anchor via POST /v1/anchor.' operationId: v1_inference_receipt_v1_inference_receipt_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/inference-receipt/sample: get: tags: - Agent summary: V1 Inference Receipt Sample description: 'A keyless, signed SAMPLE inference-receipt/v1 — for the /receipts demo. Shows what POST /v1/inference-receipt returns: a neutral witness of a sample inference where the provider served a DIFFERENT model than requested and set its own fallback flag (illustrative, vendor-neutral). Verify it in-browser via /verify.js, then flip a byte and watch verification fail.' operationId: v1_inference_receipt_sample_v1_inference_receipt_sample_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/eval-receipt: post: tags: - Agent summary: V1 Eval Receipt description: 'WITNESS an AI EVALUATION run — the neutral ''Verified Eval'' stamp for the contamination-proof- benchmark era. The lab commits its test set as a salted sha256 BEFORE the run (`set_commitment`), so the set stays PRIVATE while the run becomes un-retunable after the fact — solving the evaluator''s dilemma of having to expose a private set to be trusted. Ed25519-signed, transparency-logged, RFC 3161 timestampable. Body: {"eval_name": "", "model_id": "", "metric": "pass@1", "score": 0.58, "set_commitment": ""} plus optional n, run_sha256 (hash of the full transcript), harness, and a BYO-key co-signature. Auth: a FREE key (POST /signup). ADVISORY EVIDENCE ONLY — Dynamic Feed does NOT re-run or verify the score, and does NOT certify the benchmark is fair/representative/contamination-free; it witnesses the COMMITTED run so no party can retune it retroactively. Profile of receipt/v1. Anchor via POST /v1/anchor.' operationId: v1_eval_receipt_v1_eval_receipt_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/eval-receipt/sample: get: tags: - Agent summary: V1 Eval Receipt Sample description: 'A keyless, signed SAMPLE eval-receipt/v1 — a ''Verified Eval'' run against a sealed, committed test set (the set stays private; only its commitment is signed). Verify it in-browser via /verify.js, then flip a byte and watch verification fail. Advisory evidence only — DF witnesses the committed run, it does not re-run or certify the benchmark.' operationId: v1_eval_receipt_sample_v1_eval_receipt_sample_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/checkpoints: get: tags: - Agent summary: V1 Checkpoints description: 'Daily ARCHIVE CHECKPOINTS, newest first — the append-only claim made independently checkable. Each entry carries the signed archive-day/v1 document: a SHA-256 digest of that day''s full archive listing, per-feed object counts, the previous day''s digest (the chain), and the anchor status of a DLT-timestamp proof committing the digest to a public distributed ledger (RFC 3161 on fallback). Keyless.' operationId: v1_checkpoints_v1_checkpoints_get parameters: - name: limit in: query required: false schema: type: integer default: 30 title: Limit responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/checkpoints/{day}/proof: get: tags: - Agent summary: V1 Checkpoint Proof description: 'The raw witness proof for one day''s archive checkpoint. kind=ots (default) returns the DLT-timestamp .ots bytes (verify: ots verify -d checkpoint-.ots); kind=rfc3161 returns the RFC 3161 timestamp token DER from the independent TSA (verify: openssl ts -reply -in checkpoint-.tsr -text, then openssl ts -verify -digest -sha256 -in checkpoint-.tsr). Offline runner for both witnesses: scripts/verify_checkpoint.py. Keyless.' operationId: v1_checkpoint_proof_v1_checkpoints__day__proof_get parameters: - name: day in: path required: true schema: type: string title: Day - name: kind in: query required: false schema: type: string default: ots title: Kind responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/notary/log/head: get: tags: - Agent summary: V1 Notary Head description: 'The transparency-log HEAD — count + chain head hash, Ed25519-signed. The anchorable artifact: altering ANY past notarization breaks every entry_hash after it and contradicts the anchored head. Keyless.' operationId: v1_notary_head_v1_notary_log_head_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/notary/log/{idx}: get: tags: - Agent summary: V1 Notary Entry description: 'One transparency-log entry by index, Ed25519-signed, with the recipe to recompute its entry_hash and verify chain linkage. Keyless.' operationId: v1_notary_entry_v1_notary_log__idx__get parameters: - name: idx in: path required: true schema: type: integer title: Idx responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/notary/log: get: tags: - Agent summary: V1 Notary Log description: 'The PUBLIC TRANSPARENCY LOG of all notarizations — append-only, hash-chained (CT-style), newest first. Payload hashes only (never payloads): private by construction, tamper-evident by recipe. Page back with ?before=. Keyless.' operationId: v1_notary_log_v1_notary_log_get parameters: - name: limit in: query required: false schema: type: integer default: 50 title: Limit - name: before in: query required: false schema: type: integer title: Before responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/notary/log/{idx}/proof: get: tags: - Agent summary: V1 Notary Proof description: 'INCLUSION PROOF for a log entry: the consecutive chain of entries from this index to the most recently ANCHORED head (or the current head if no anchor covers it yet), plus the anchor record. Recompute each entry_hash and you have proven this entry is in the history the Bitcoin anchor commits to — no trust in Dynamic Feed required. Keyless.' operationId: v1_notary_proof_v1_notary_log__idx__proof_get parameters: - name: idx in: path required: true schema: type: integer title: Idx responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/witness/{idx}/inclusion: get: tags: - Agent summary: V1 Witness Inclusion description: 'SUCCINCT, browser-verifiable inclusion proof that witness/notary entry {idx} is in the append-only log — an O(log n) RFC-6962 Merkle audit path to a tree root we Ed25519-SIGN (the checkpoint). Any party folds leaf -> root in their own browser and checks the checkpoint signature against /.well-known/keys, with NO trust in Dynamic Feed''s word (only its published key). Keyless. Recipe: leaf = sha256(0x00 ‖ content_hash_bytes); node = sha256(0x01 ‖ left ‖ right); fold the audit_path (each {sibling, side}) up to root_sha256; confirm it equals the signed checkpoint.root_sha256, then verify the checkpoint Ed25519 signature. In-browser via /verify.js verifyInclusion(). Complements GET /v1/notary/log/{idx}/proof (the O(n) chain replay): the chain proves append-order, this proves succinct membership in a signed tree.' operationId: v1_witness_inclusion_v1_witness__idx__inclusion_get parameters: - name: idx in: path required: true schema: type: integer title: Idx responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/notary/feeds: post: tags: - Agent summary: V1 Notary Feed Register description: 'CONTINUOUS NOTARIZATION — register a feed URL and Dynamic Feed fetches it on your interval, notarizing every CHANGE into the public transparency log automatically: a standing, tamper-evident history of what your feed published, when. Body: {"url": "https://...", "subject": "Your Co", "interval_minutes": 180 (min 60)}. Beta: 3 active feeds per key. The first fetch happens immediately and its notarization is returned.' operationId: v1_notary_feed_register_v1_notary_feeds_post parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Agent summary: V1 Notary Feeds List description: 'Your registered continuous-notarization feeds (same X-API-Key): status, last hash, last log index, next-run cadence.' operationId: v1_notary_feeds_list_v1_notary_feeds_get parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/benchmark: get: tags: - Agent summary: V1 Benchmark description: 'The LIVE-FACTS BENCHMARK — a continuously-refreshed eval of facts that move after a model''s training cutoff. Ask a model these questions WITHOUT tools and grade against the answers measured from authoritative sources at call time: every frozen model fails; a grounded agent passes. Each item carries its grading rule, source and measured_at; the whole set is Ed25519-signed so a published score is verifiable evidence, not a claim. Regenerate per run — answers are time-sensitive by design. Keyless.' operationId: v1_benchmark_v1_benchmark_get responses: '200': description: Successful Response content: application/json: schema: {} /v1/benchmark/history: get: tags: - Agent summary: V1 Benchmark History description: 'DRIFT OVER TIME — daily snapshots of the live-facts benchmark (GET /v1/benchmark), oldest first. Each snapshot is the items array exactly as measured that day, so diffing consecutive snapshots shows how fast reality moves away from any fixed training cutoff: rates shift, releases ship, CVEs land. History starts at first_snapshot_at and grows one snapshot per day. Human-readable charts at /benchmark/history. Ed25519-signed. Keyless.' operationId: v1_benchmark_history_v1_benchmark_history_get parameters: - name: days in: query required: false schema: type: integer maximum: 365 minimum: 1 default: 90 title: Days responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/nearby: get: tags: - Agent summary: V1 Nearby description: 'Signed situational scan: live hazards near a point — earthquakes (USGS), natural events (NASA EONET: wildfires/volcanoes/floods/storms), major disasters (GDACS) and, in Australia, live satellite bushfire hotspots (Geoscience Australia) within radius_km, nearest first. Ed25519-signed (verify against GET /.well-known/keys). The ''what''s around me'' ping for any machine that moves — robots, drones, in-car AI assistants, fleet telematics — complements the go/caution/no-go verdict from /v1/awareness.' operationId: v1_nearby_v1_nearby_get parameters: - name: lat in: query required: true schema: type: number title: Lat - name: lon in: query required: true schema: type: number title: Lon - name: radius_km in: query required: false schema: type: number default: 500.0 title: Radius Km responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/attest: get: tags: - Agent summary: V1 Attest description: 'Signed parametric-trigger attestation — evaluate ''metric op threshold'' at a location against the live measurement and return a tamper-evident, Ed25519-signed MET / NOT-MET record. The dispute-proof oracle a parametric-insurance payout can settle against. metric: wind_kmh | temperature_c | feels_like_c | precipitation_mm. op: gt | gte | lt | lte. Verify against GET /.well-known/keys; timestamp via POST /v1/anchor (RFC 3161) for independent proof of when.' operationId: v1_attest_v1_attest_get parameters: - name: metric in: query required: true schema: type: string title: Metric - name: threshold in: query required: true schema: type: number title: Threshold - name: op in: query required: false schema: type: string default: gte title: Op - name: lat in: query required: false schema: type: number title: Lat - name: lon in: query required: false schema: type: number title: Lon - name: city in: query required: false schema: type: string title: City responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/trigger-receipt: get: tags: - Agent summary: V1 Trigger Receipt description: 'Parametric catastrophe TRIGGER RECEIPT (DF-VERIFY/1 `trigger-receipt/v1`) — the dispute-proof oracle a parametric payout settles against. Evaluates ''metric op threshold'' at a location against the live official reading and returns an Ed25519-signed receipt carrying the four properties that end a parametric dispute: (1) a pinned + hashed methodology (nobody moves the goalposts after the event); (2) the exact re-fetchable source_url + a raw_reading_hash anyone can reproduce (independent verifiability, not ''trust us''); (3) a deterministic determination — triggered + payout_factor + rationale, re-computable by any party; (4) the signature (timestamp via POST /v1/anchor (RFC 3161) for proof of when). Neutral calculation-agent-of- record: attests what the official source reported and what the pinned methodology implies — NOT ground-truth physical loss. v0.1 metrics: wind_kmh | temperature_c | feels_like_c | precipitation_mm (Open-Meteo). op: gt | gte | lt | lte. Verify against GET /.well-known/keys; schema at /schemas/trigger-receipt-v1.json.' operationId: v1_trigger_receipt_v1_trigger_receipt_get parameters: - name: metric in: query required: true schema: type: string title: Metric - name: threshold in: query required: true schema: type: number title: Threshold - name: op in: query required: false schema: type: string default: gte title: Op - name: lat in: query required: false schema: type: number title: Lat - name: lon in: query required: false schema: type: number title: Lon - name: city in: query required: false schema: type: string title: City - name: peril in: query required: false schema: type: string title: Peril - name: contract_ref in: query required: false schema: type: string title: Contract Ref - name: methodology in: query required: false schema: type: string title: Methodology responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/intensity: get: tags: - Agent summary: V1 Intensity description: 'INTENSITY-AT-LOCATION (DF-VERIFY/1 `intensity/v1`) — the parameter value at an exact coordinate, signed and reproducible: the settlement-grade reading a parametric trigger evaluates against. Not ''an event happened'' but ''the value at this lat/lon, from the region''s authoritative source''. v1 peril: flood — routed by coordinate to the nearest official river gauge: AU -> BoM Water Data Online (water-course level m; CC BY 4.0), US -> USGS NWIS (gage height ft / discharge ft3/s). Point-resolved, no interpolation. drought, wildfire and earthquake (ShakeMap) intensity are rolling in. Verify the Ed25519 signature against GET /.well-known/keys; re-fetch source_url to reproduce raw_reading_hash (see hash_method). SCOPE: attests the reading at the cited official gauge — NOT a basin-wide determination or physical loss.' operationId: v1_intensity_v1_intensity_get parameters: - name: lat in: query required: true schema: type: number title: Lat - name: lon in: query required: true schema: type: number title: Lon - name: peril in: query required: false schema: type: string default: flood title: Peril - name: metric in: query required: false schema: type: string title: Metric responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/bushfire: get: tags: - Agent summary: V1 Bushfire description: 'Signed Australian bushfire/fire hotspots (last ~3 days) from Geoscience Australia / Digital Earth Australia Hotspots — keyless, CC BY 4.0. lat & lon (+ radius_km) for hotspots near a point, a state code (NSW/QLD/VIC/SA/WA/TAS/NT/ACT), or neither for recent Australia-wide. Ed25519-signed; verify against GET /.well-known/keys. A hotspot is a satellite thermal anomaly — not every one is a confirmed bushfire.' operationId: v1_bushfire_v1_bushfire_get parameters: - name: lat in: query required: false schema: type: number title: Lat - name: lon in: query required: false schema: type: number title: Lon - name: radius_km in: query required: false schema: type: number default: 150 title: Radius Km - name: state in: query required: false schema: type: string default: '' title: State - name: limit in: query required: false schema: type: integer default: 20 title: Limit responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /v1/me: get: tags: - Agent summary: V1 Me description: 'Your key at a glance — plan, calls used today, daily quota and remaining. The per-user usage view (the keyless MCP endpoint is unmetered fair-use).' operationId: v1_me_v1_me_get parameters: - name: x-api-key in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Api-Key - name: x-rapidapi-proxy-secret in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-Proxy-Secret - name: x-rapidapi-user in: header required: false schema: anyOf: - type: string - type: 'null' title: X-Rapidapi-User responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError