{
  "protocol": "model-context-protocol",
  "version": "2025-06-18",
  "server": {
    "name": "datafood",
    "display_name": "DataFood — Universal Data API",
    "description": "DataFood aggregates 27 cross-niche data sources (crypto, weather, news, finance, web3, security) into a single agent-friendly API. Every response cryptographically signed (Ed25519). Diff cursors save 90%+ tokens. 200 canonical entities resolve across all sources.",
    "version": "7.0.0",
    "publisher": "TOUGH LOVE SECURITY",
    "publisher_url": "https://toughlovesec.win",
    "canonical_url": "https://toughlovesec.win/agent-mesh"
  },
  "transports": [
    {
      "type": "streamable-http",
      "url": "https://toughlovesec.win/mcp",
      "status": "live",
      "note": "JSON-RPC 2.0 over HTTP per MCP Streamable HTTP transport spec (2025-06-18). POST for method calls; GET for discovery/health."
    },
    {
      "type": "stdio",
      "note": "Not currently provided — remote MCP only."
    }
  ],
  "tools": [
    {
      "name": "datafood_query",
      "description": "Fetch a single data type from DataFood. Use this for one-off queries. For 3+ queries use datafood_bundle (cheaper).",
      "input_schema": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "token-risk",
              "breach",
              "contract-risk",
              "defi-yield",
              "scrape",
              "crypto-price",
              "crypto-trending",
              "stock-quote",
              "weather",
              "news-hn-top",
              "news-reddit",
              "flights-near",
              "real-estate-rss",
              "sports-scores",
              "gas-prices-eth",
              "forex",
              "github-trending",
              "whale-tracker",
              "liquidations",
              "funding-rates",
              "order-book",
              "ta-indicators",
              "sentiment-ticker",
              "token-unlock",
              "mev-exposure",
              "stable-depeg",
              "cross-dex-arb",
              "energy-oil",
              "energy-grid-eu",
              "shipping-bdi",
              "air-quality",
              "cdc-flu",
              "who-outbreak",
              "sec-edgar",
              "acled-conflict",
              "gdelt-events",
              "twitch-top",
              "steam-top",
              "reddit-trending",
              "commodity-metals",
              "agriculture-prices",
              "legal-courtlistener",
              "economic-indicator"
            ],
            "description": "One of 16 supported data types"
          },
          "q": {
            "type": "string",
            "description": "Query string. See /api/v1/catalog for per-type examples."
          },
          "preview": {
            "type": "boolean",
            "default": true,
            "description": "If true, returns 1-row free preview"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "description": "Per-type response — see /openapi.json for schemas"
      },
      "pricing_usd": {
        "preview": 0,
        "full": 0.001
      },
      "http_endpoint": "GET /api/data/preview"
    },
    {
      "name": "datafood_bundle",
      "description": "Bundle 3-20 queries across any data types in one call. Cheapest way for AI agents to fetch cross-niche data — saves 50-92% vs. per-API calls.",
      "input_schema": {
        "type": "object",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "type": "array",
            "maxItems": 20,
            "minItems": 1,
            "items": {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "token-risk",
                    "breach",
                    "contract-risk",
                    "defi-yield",
                    "scrape",
                    "crypto-price",
                    "crypto-trending",
                    "stock-quote",
                    "weather",
                    "news-hn-top",
                    "news-reddit",
                    "flights-near",
                    "real-estate-rss",
                    "sports-scores",
                    "gas-prices-eth",
                    "forex",
                    "github-trending",
                    "whale-tracker",
                    "liquidations",
                    "funding-rates",
                    "order-book",
                    "ta-indicators",
                    "sentiment-ticker",
                    "token-unlock",
                    "mev-exposure",
                    "stable-depeg",
                    "cross-dex-arb",
                    "energy-oil",
                    "energy-grid-eu",
                    "shipping-bdi",
                    "air-quality",
                    "cdc-flu",
                    "who-outbreak",
                    "sec-edgar",
                    "acled-conflict",
                    "gdelt-events",
                    "twitch-top",
                    "steam-top",
                    "reddit-trending",
                    "commodity-metals",
                    "agriculture-prices",
                    "legal-courtlistener",
                    "economic-indicator"
                  ]
                },
                "q": {
                  "type": "string"
                }
              }
            }
          },
          "session_id": {
            "type": "string",
            "description": "Optional — link to a /watch Live Agent View session"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer"
          },
          "results": {
            "type": "array"
          }
        }
      },
      "pricing_usd": {
        "3-5_queries": 0.0035,
        "6-10_queries": 0.005,
        "11-20_queries": 0.008,
        "day_pass": 0.99,
        "week_pass": 4.99
      },
      "http_endpoint": "POST /api/data/bundle"
    },
    {
      "name": "datafood_portfolio_ask",
      "description": "Natural-language Q&A on a Plaid-linked portfolio. Returns AI-generated answer with citations to underlying holdings.",
      "input_schema": {
        "type": "object",
        "required": [
          "user_id",
          "question"
        ],
        "properties": {
          "user_id": {
            "type": "string"
          },
          "question": {
            "type": "string",
            "description": "e.g. 'Am I overexposed to tech?'"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "answer": {
            "type": "string"
          },
          "citations": {
            "type": "array"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/portfolio/ask"
    },
    {
      "name": "datafood_watch_session",
      "description": "Open a watchable agent session — returns session_id and a public /watch/{id} URL. Stream click/search/fetch/screenshot events for live human observation.",
      "input_schema": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "Optional human-readable label"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "required": [
          "session_id",
          "watch_url"
        ],
        "properties": {
          "session_id": {
            "type": "string"
          },
          "watch_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/agent-session/start"
    },
    {
      "name": "datafood_entity_resolve",
      "description": "Resolve any string (AAPL, 'Apple Inc', US0378331005, 0xa0b86991..., bitcoin) to canonical DataFood entity IDs. 200 seed entities across crypto/equity/forex/commodity/index/stablecoin/perp.",
      "input_schema": {
        "type": "object",
        "required": [
          "q"
        ],
        "properties": {
          "q": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "default": 5
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "matches": {
            "type": "array"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/entity/resolve"
    },
    {
      "name": "datafood_entity_get",
      "description": "Get a canonical entity by id (df-ent:eq.aapl) — returns supported_types + ready-to-call DataFood example URLs.",
      "input_schema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "example": "df-ent:eq.aapl"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "supported_types": {
            "type": "array"
          },
          "example_calls": {
            "type": "array"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/entity/{id}"
    },
    {
      "name": "datafood_receipt_verify",
      "description": "Verify any DataFood _receipt envelope independently. Returns {valid: bool, reason?}. Public key at /.well-known/datafood-receipt-pubkey.json.",
      "input_schema": {
        "type": "object",
        "required": [
          "receipt"
        ],
        "properties": {
          "receipt": {
            "type": "object",
            "description": "A DataFood _receipt envelope"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "valid": {
            "type": "boolean"
          },
          "reason": {
            "type": "string"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/receipt/verify"
    },
    {
      "name": "datafood_calib_record_claim",
      "description": "Self-Calibration Layer — record an agent's confidence-weighted claim before acting. Returns {claim_id, calibrated_p (historical bin hit-rate, Laplace-smoothed), low_confidence (<30 prior samples)}. Built-in resolvers: github_ci, http_status, stripe_payment, market_resolution, email_open, manual.",
      "input_schema": {
        "type": "object",
        "required": [
          "agent_id",
          "kind",
          "predicted_p"
        ],
        "properties": {
          "agent_id": {
            "type": "string"
          },
          "kind": {
            "type": "string",
            "description": "claim kind, e.g. code_fix_resolves_bug"
          },
          "predicted_p": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "payload": {
            "type": "object"
          },
          "outcome_resolver": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "github_ci",
                  "http_status",
                  "stripe_payment",
                  "market_resolution",
                  "email_open",
                  "manual"
                ]
              },
              "config": {
                "type": "object"
              }
            }
          },
          "ttl_hours": {
            "type": "integer",
            "default": 24
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "claim_id": {
            "type": "string"
          },
          "calibrated_p": {
            "type": "number"
          },
          "low_confidence": {
            "type": "boolean"
          },
          "expected_resolution_at": {
            "type": "integer"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/calib/record_claim"
    },
    {
      "name": "datafood_calib_record_outcome",
      "description": "Self-Calibration Layer — submit ground-truth outcome (0/1) for a previously-recorded claim. Updates the (agent,kind) histogram and recomputes calibrated_p for that bin.",
      "input_schema": {
        "type": "object",
        "required": [
          "claim_id",
          "outcome"
        ],
        "properties": {
          "claim_id": {
            "type": "string"
          },
          "outcome": {
            "type": "integer",
            "enum": [
              0,
              1
            ]
          },
          "evidence": {
            "type": "object"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string"
          },
          "calibrated_p": {
            "type": "number"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/calib/record_outcome"
    },
    {
      "name": "datafood_calib_get_curve",
      "description": "Self-Calibration Layer — fetch the 10-bin reliability curve + ECE + Brier for an (agent_id, kind). Use to render reliability plots or to audit any agent's calibration over time. Companion to /api/v1/calib/agent_card (signed portable reputation).",
      "input_schema": {
        "type": "object",
        "required": [
          "agent_id",
          "kind"
        ],
        "properties": {
          "agent_id": {
            "type": "string"
          },
          "kind": {
            "type": "string"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "bins": {
            "type": "array"
          },
          "ece": {
            "type": "number"
          },
          "brier": {
            "type": "number"
          },
          "total_claims": {
            "type": "integer"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/calib/curve"
    },
    {
      "name": "datafood_training_station_schema",
      "description": "AI Training Station — fetch the schema.org/AIService JSON-LD describing the public station. Includes live totalAgents, totalClaims, currentLeader, and potentialAction[] entries for register, browse, leaderboard, calibrate_p, record_claim, record_outcome. Designed to be ingested by Anthropic, OpenAI, Google, Perplexity, Hugging Face, MCP Registry crawlers so they can route their agents here.",
      "input_schema": {
        "type": "object",
        "properties": {}
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "@type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "totalAgents": {
            "type": "integer"
          },
          "totalClaims": {
            "type": "integer"
          },
          "currentLeader": {
            "type": "string"
          },
          "potentialAction": {
            "type": "array"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/training-station/schema"
    },
    {
      "name": "datafood_training_register",
      "description": "AI Training Station — register a new AI agent with the public station. Returns a signed token, the canonical agent_card_url, and fires a starter calibration claim so the agent appears on the leaderboard immediately. Use this on first run of any AI agent so its calibration record begins accumulating from day zero.",
      "input_schema": {
        "type": "object",
        "required": [
          "agent_id"
        ],
        "properties": {
          "agent_id": {
            "type": "string",
            "description": "2-80 chars, [A-Za-z0-9._:-]"
          },
          "platform": {
            "type": "string",
            "enum": [
              "claude",
              "gpt",
              "gemini",
              "perplexity",
              "huggingface",
              "mistral",
              "cohere",
              "custom",
              "other"
            ]
          },
          "purpose": {
            "type": "string",
            "maxLength": 240
          },
          "owner_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ok": {
            "type": "boolean"
          },
          "agent_id": {
            "type": "string"
          },
          "token": {
            "type": "string"
          },
          "agent_card_url": {
            "type": "string",
            "format": "uri"
          },
          "leaderboard_url": {
            "type": "string",
            "format": "uri"
          },
          "schema_url": {
            "type": "string",
            "format": "uri"
          },
          "next_steps": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/training-station/register"
    },
    {
      "name": "datafood_training_browse_agents",
      "description": "AI Training Station — paginated list of every registered agent (humans + bots). Each row carries claims_total, ECE, Brier, composite score, rank, and the canonical agent_card_url. AI platforms can crawl this to discover agents and follow each agent_card link to ingest the signed reputation.",
      "input_schema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "default": 1,
            "minimum": 1
          },
          "limit": {
            "type": "integer",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "total_agents": {
            "type": "integer"
          },
          "agents": {
            "type": "array"
          },
          "has_next": {
            "type": "boolean"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/training-station/agents"
    },
    {
      "name": "agentshield_exploit_likelihood",
      "description": "AgentShield offensive — Claude (haiku-4-5) defensive exploit-likelihood scoring for any contract address. Returns 0-100 score + top 3 attack vectors + reasoning. 1 credit per scan.",
      "input_schema": {
        "type": "object",
        "required": [
          "chain",
          "address"
        ],
        "properties": {
          "chain": {
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "polygon",
              "bsc"
            ]
          },
          "address": {
            "type": "string",
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "contract_risk_score": {
            "type": "number",
            "minimum": 0,
            "maximum": 100
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "exploit_likelihood": {
            "type": "number"
          },
          "vectors": {
            "type": "array"
          },
          "summary": {
            "type": "string"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0.01,
        "bundle_100": 4.99
      },
      "http_endpoint": "POST /api/v1/agentshield/exploit-likelihood"
    },
    {
      "name": "agentshield_mcp_audit",
      "description": "AgentShield offensive — static risk-audit any MCP server URL. AI-Infra-Guard pattern: tool-surface area, suspicious tool names, auth posture, payment surface, HTTPS. CVSS-style 0-100 score. 1 credit.",
      "input_schema": {
        "type": "object",
        "required": [
          "mcp_url"
        ],
        "properties": {
          "mcp_url": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number"
          },
          "findings": {
            "type": "array"
          },
          "tool_count": {
            "type": "number"
          },
          "auth_posture": {
            "type": "string"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0.01,
        "bundle_100": 4.99
      },
      "http_endpoint": "POST /api/v1/agentshield/mcp-audit"
    },
    {
      "name": "agentshield_autogpt_scan",
      "description": "AgentShield offensive flagship — multi-step autonomous pentest. 5 steps: surface extract, static checks, admin probes, AI hypotheses (Llama-3.1-8B), CVSS aggregate. Non-destructive. Caps: 10 sub-requests, 30s wallclock. 1 credit.",
      "input_schema": {
        "type": "object",
        "required": [
          "target_url"
        ],
        "properties": {
          "target_url": {
            "type": "string",
            "format": "uri"
          },
          "scan_depth": {
            "type": "string",
            "enum": [
              "shallow",
              "deep"
            ],
            "default": "shallow"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "score": {
            "type": "number"
          },
          "surface": {
            "type": "object"
          },
          "findings": {
            "type": "array"
          },
          "ai_hypotheses": {
            "type": "array"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0.01,
        "bundle_100": 4.99
      },
      "http_endpoint": "POST /api/v1/agentshield/autogpt-scan"
    },
    {
      "name": "datafood_arena_decisions",
      "description": "Decision Arena — last N comparative decision moments across 5 strategies × 3 assets. Each row shows what every strategy did at the same moment (enter/hold), the actual_pnl_pct of the winner, an agreement_score, and a signed _attestation handle for verifiable proof.",
      "input_schema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "default": 10,
            "minimum": 1,
            "maximum": 50
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "rows": {
            "type": "array"
          },
          "summary": {
            "type": "object",
            "properties": {
              "total_moments": {
                "type": "integer"
              },
              "agreements_count": {
                "type": "integer"
              },
              "_receipt": {
                "type": "object"
              }
            }
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/arena/decisions"
    },
    {
      "name": "datafood_arena_leaderboard",
      "description": "Decision Arena — cross-strategy leaderboard ranking 15 (strategy, asset) calibration agents by sharpe_proxy with secondary sort by total_pnl_pct. <5-trade agents flagged ranked:false.",
      "input_schema": {
        "type": "object",
        "properties": {}
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "leaderboard": {
            "type": "array"
          },
          "ts": {
            "type": "integer"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/arena/leaderboard"
    },
    {
      "name": "datafood_arena_attestation",
      "description": "Decision Arena — verifiable proof of a single decision. Returns full record (strategy, asset, action, ts, price, predicted_p, signals_lit, outcome, exit_price, pnl_pct) + Ed25519 _receipt. Pass the attestation_id from a /api/v1/arena/decisions row's _attestation field.",
      "input_schema": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "24-char hash; arena-att: prefix optional"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "attestation_id": {
            "type": "string"
          },
          "strategy": {
            "type": "string"
          },
          "asset": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "ts": {
            "type": "integer"
          },
          "price": {
            "type": "number"
          },
          "predicted_p": {
            "type": "number"
          },
          "signals_lit": {
            "type": "array"
          },
          "outcome": {
            "type": "integer"
          },
          "pnl_pct": {
            "type": "number"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/arena/attestation/{id}"
    },
    {
      "name": "agentshield_constitutional_classify",
      "description": "AgentShield Constitutional — bidirectional prompt classifier. Pre-screen INPUT (user prompt) or OUTPUT (model response) against 30 MITRE ATLAS + OWASP LLM Top 10 patterns + Workers AI Llama-3.1-8B fallback. Returns safe/warn/block + confidence + matched_patterns + constitutional_violations + policy_anchors + decision_id + Ed25519 _receipt. Decision recorded as a calibration claim (agent agentshield:constitutional). Free tier 100/min/IP. SKU constitutional-credits-1k $9.99 = 1000 calls.",
      "input_schema": {
        "type": "object",
        "required": [
          "prompt"
        ],
        "properties": {
          "prompt": {
            "type": "string",
            "maxLength": 8000
          },
          "agent_id": {
            "type": "string"
          },
          "context": {
            "type": "string",
            "enum": [
              "input",
              "output"
            ],
            "default": "input"
          },
          "model_target": {
            "type": "string",
            "enum": [
              "claude",
              "gpt",
              "gemini",
              "llama"
            ],
            "default": "llama"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "classification": {
            "type": "string",
            "enum": [
              "safe",
              "warn",
              "block"
            ]
          },
          "confidence": {
            "type": "number"
          },
          "reasons": {
            "type": "array"
          },
          "constitutional_violations": {
            "type": "array"
          },
          "policy_anchors": {
            "type": "array"
          },
          "decision_id": {
            "type": "string"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0,
        "paid_pack": 9.99,
        "paid_pack_calls": 1000
      },
      "http_endpoint": "POST /api/v1/constitutional/classify"
    },
    {
      "name": "agentshield_constitutional_feedback",
      "description": "AgentShield Constitutional — outcome resolution. Pass {decision_id, actual_outcome: 'model_jailbroken'|'model_refused'|'benign_passed'|'false_positive'} after observing reality; we map to a 0/1 calibration outcome and forward to /api/v1/calib/record_outcome. Updates the public Constitutional reputation card.",
      "input_schema": {
        "type": "object",
        "required": [
          "decision_id",
          "actual_outcome"
        ],
        "properties": {
          "decision_id": {
            "type": "string"
          },
          "actual_outcome": {
            "type": "string",
            "enum": [
              "model_jailbroken",
              "model_refused",
              "benign_passed",
              "false_positive"
            ]
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "decision_id": {
            "type": "string"
          },
          "outcome": {
            "type": "integer"
          },
          "claim_id": {
            "type": "string"
          },
          "calib": {
            "type": "object"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/constitutional/feedback"
    },
    {
      "name": "agentshield_constitutional_stats",
      "description": "AgentShield Constitutional — public dashboard data. Returns classifications_today, block_rate (with delta vs yesterday), ECE/Brier from the calibration histogram, per-model cross-arbitrage block rates (claude/gpt/gemini/llama), top patterns hit today, honeypot captures today.",
      "input_schema": {
        "type": "object",
        "properties": {}
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "classifications_today": {
            "type": "integer"
          },
          "block_rate": {
            "type": "number"
          },
          "ece": {
            "type": "number"
          },
          "brier": {
            "type": "number"
          },
          "cross_model_summary": {
            "type": "object"
          },
          "top_patterns_today": {
            "type": "array"
          },
          "honeypot_captures_today": {
            "type": "integer"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/constitutional/stats"
    },
    {
      "name": "datafood_olympics_medals",
      "description": "AI Olympics — live medal table. Different AIs (Claude/GPT/Gemini/Llama) from different companies (Anthropic/OpenAI/Google/Meta) graded on the same data. Returns per-country gold/silver/bronze counts, total_score, events_today by category, rank, and last_event description. Trading medals come from arena ledgers, safety medals from cross-arbitrate counters, reliability medals from calibration histograms. Aggregate cached 30s.",
      "input_schema": {
        "type": "object",
        "properties": {}
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "ts": {
            "type": "integer"
          },
          "countries": {
            "type": "array"
          },
          "last_event": {
            "type": "string"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/olympics/medals"
    },
    {
      "name": "datafood_olympics_events",
      "description": "AI Olympics — live event ticker feed. Last N events across trading (closed arena trades) + safety (cross-arbitrate verdicts) + reliability (calibration claim resolutions). Each row carries ts, category, winner_model, winner_country, description, medal (gold/silver/bronze), and _attestation_url when applicable. Sorted ts descending.",
      "input_schema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "default": 20,
            "minimum": 1,
            "maximum": 100
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "events": {
            "type": "array"
          },
          "counts": {
            "type": "object"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "GET /api/v1/olympics/recent-events"
    },
    {
      "name": "datafood_snap_analyze",
      "description": "SNAP - 4 vision-capable AIs (Claude/GPT/Gemini/Llama-Vision) analyze the SAME chart image. Returns 4 verdicts side-by-side with action(long/short/hold), pattern, entry, stop, target, rr, confidence, key_signals, plus a consensus block (consensus_pattern, consensus_action, agreement_score, consensus_entry/stop/target). Each response Ed25519-signed. Image either as URL (server fetches and base64s; max 4MB) or pre-encoded base64. Cached 10min by image hash. Free tier 5/day per IP.",
      "input_schema": {
        "type": "object",
        "properties": {
          "image_url": {
            "type": "string",
            "format": "uri"
          },
          "image_base64": {
            "type": "string"
          },
          "asset_hint": {
            "type": "string",
            "description": "e.g. BTC, ETH, SPY, EUR/USD"
          },
          "timeframe_hint": {
            "type": "string",
            "description": "e.g. 15m, 1h, 4h"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "snap_id": {
            "type": "string"
          },
          "consensus_pattern": {
            "type": "string"
          },
          "consensus_action": {
            "type": "string",
            "enum": [
              "long",
              "short",
              "hold"
            ]
          },
          "agreement_score": {
            "type": "number"
          },
          "consensus_entry": {
            "type": "number"
          },
          "consensus_stop": {
            "type": "number"
          },
          "consensus_target": {
            "type": "number"
          },
          "consensus_rr": {
            "type": "number"
          },
          "decision_arena_runnable": {
            "type": "boolean"
          },
          "verdicts": {
            "type": "array"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0,
        "paid_pack": 4.99,
        "paid_pack_calls": 100
      },
      "http_endpoint": "POST /api/v1/snap"
    },
    {
      "name": "datafood_snap_arena_execute",
      "description": "Run a SNAP consensus as a Decision Arena paper trade. Body requires snap_id; optionally override asset/action/entry/stop/target/predicted_p. Opens a position under arena strategy snap-consensus, records a calibration claim (agent arena:snap-consensus:<asset>, kind vision_setup_profitable). arenaTick resolves on stop/target hit OR force-close after 60min. Returns claim_id + arena_position_url. Already-open snap-consensus position for the asset returns 409.",
      "input_schema": {
        "type": "object",
        "required": [
          "snap_id"
        ],
        "properties": {
          "snap_id": {
            "type": "string"
          },
          "asset": {
            "type": "string"
          },
          "action": {
            "type": "string",
            "enum": [
              "long",
              "short"
            ]
          },
          "entry": {
            "type": "number"
          },
          "stop": {
            "type": "number"
          },
          "target": {
            "type": "number"
          },
          "predicted_p": {
            "type": "number"
          }
        }
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "success": {
            "type": "boolean"
          },
          "claim_id": {
            "type": "string"
          },
          "snap_id": {
            "type": "string"
          },
          "asset": {
            "type": "string"
          },
          "action": {
            "type": "string"
          },
          "entry": {
            "type": "number"
          },
          "stop": {
            "type": "number"
          },
          "target": {
            "type": "number"
          },
          "force_close_in_min": {
            "type": "integer"
          },
          "arena_position_url": {
            "type": "string"
          },
          "_receipt": {
            "type": "object"
          }
        }
      },
      "pricing_usd": {
        "call": 0
      },
      "http_endpoint": "POST /api/v1/arena/snap-execute"
    }
  ],
  "tool_count": 26,
  "capabilities_v6": {
    "receipts": {
      "algo": "Ed25519",
      "kid": "df-r1",
      "pubkey_url": "https://toughlovesec.win/.well-known/datafood-receipt-pubkey.json",
      "verify_url": "https://toughlovesec.win/api/v1/receipt/verify"
    },
    "cursors": {
      "format": "df-cur:<b64url-json>",
      "ttl_seconds": 3600,
      "savings": "90%+ tokens on unchanged"
    },
    "entities": {
      "count": 200,
      "types": [
        "equity",
        "crypto",
        "forex",
        "commodity",
        "index",
        "stablecoin",
        "perp"
      ]
    },
    "time_machine": {
      "param": "as_of",
      "window_seconds": 3600
    },
    "calibration": {
      "bins": 10,
      "smoothing": "Laplace (s+1)/(n+2)",
      "min_samples": 30,
      "resolvers": [
        "github_ci",
        "http_status",
        "stripe_payment",
        "market_resolution",
        "email_open",
        "manual"
      ],
      "agent_card_signed": "Ed25519"
    },
    "decision_arena": {
      "strategies": [
        "connors-rsi2",
        "donchian-20",
        "trend-ma",
        "hold",
        "random"
      ],
      "assets": [
        "BTC",
        "ETH",
        "SOL"
      ],
      "cron": "every 1 min",
      "attestation_id_formula": "sha256(<strategy>|<asset>|<entry_ts>|enter)[0:24]",
      "endpoints": [
        "/api/v1/arena/state",
        "/api/v1/arena/decisions",
        "/api/v1/arena/leaderboard",
        "/api/v1/arena/attestation/{id}",
        "/api/v1/arena/proof-of-profit"
      ],
      "receipt_kid": "df-r1"
    },
    "olympics": {
      "countries": [
        "Anthropic",
        "OpenAI",
        "Google",
        "Meta"
      ],
      "models": [
        "claude",
        "gpt",
        "gemini",
        "llama"
      ],
      "events": [
        "trading",
        "safety",
        "reliability"
      ],
      "endpoints": [
        "/api/v1/olympics/medals",
        "/api/v1/olympics/recent-events",
        "/olympics"
      ],
      "cache_ttl_seconds": 30,
      "receipt_kid": "df-r1"
    }
  },
  "resources": [
    {
      "uri": "https://toughlovesec.win/llms.txt",
      "name": "llms.txt",
      "mime_type": "text/plain"
    },
    {
      "uri": "https://toughlovesec.win/AGENTS.md",
      "name": "AGENTS.md",
      "mime_type": "text/markdown"
    },
    {
      "uri": "https://toughlovesec.win/api/v1/catalog",
      "name": "Data type catalog",
      "mime_type": "application/json"
    },
    {
      "uri": "https://toughlovesec.win/openapi.json",
      "name": "OpenAPI 3.0 spec",
      "mime_type": "application/json"
    },
    {
      "uri": "https://toughlovesec.win/.well-known/datafood-receipt-pubkey.json",
      "name": "Receipt pubkey",
      "mime_type": "application/json"
    },
    {
      "uri": "https://toughlovesec.win/receipts/verify",
      "name": "Receipt verifier widget",
      "mime_type": "text/html"
    },
    {
      "uri": "https://toughlovesec.win/training-station",
      "name": "AI Training Station landing",
      "mime_type": "text/html"
    },
    {
      "uri": "https://toughlovesec.win/api/v1/training-station/schema",
      "name": "AI Training Station JSON-LD (AIService)",
      "mime_type": "application/ld+json"
    },
    {
      "uri": "https://toughlovesec.win/api/v1/training-station/agents",
      "name": "AI Training Station registered agents (paginated)",
      "mime_type": "application/json"
    }
  ],
  "training_station": {
    "schema_url": "https://toughlovesec.win/api/v1/training-station/schema",
    "register_url": "https://toughlovesec.win/api/v1/training-station/register",
    "agents_url": "https://toughlovesec.win/api/v1/training-station/agents",
    "landing_html": "https://toughlovesec.win/training-station",
    "schema_org_type": "AIService"
  },
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": false,
    "sampling": false
  },
  "auth": {
    "type": "none",
    "note": "Free tier requires no auth. Paid tiers via Stripe payment link or x402 (v6+)."
  }
}