{
  "x402Version": 2,
  "name": "x402-endpoints",
  "description": "Paid x402 API tools for AI agents (USDC on Base). Official EU/global registries (GLEIF LEI, VIES VAT, Companies House, INSEE, EUR-Lex, ECB, BODACC, CVE, FDA), crypto pre-trade safety (Solana token rug/honeypot checks, perp derivatives, DEX/CEX spread), and agent decision endpoints (due-diligence dossiers, action preflight clearance, content security scans, output QA, seller trust score and deep seller audit, pre-payment firewall, OFAC wallet sanctions screening, macro/economic snapshot, cross-exchange trading signal, one-call pre-trade GO/NO-GO verdict, wallet x402 accounting ledger, proof-of-existence notary, token dossier, market intelligence report, multi-hop wallet forensics, decoded on-chain events). Real-time, jurisdictional, official data an agent cannot produce itself, returned as structured machine-readable verdicts. No API key, no account: payment is authentication.",
  "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
  "network": "eip155:8453",
  "asset": {
    "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "symbol": "USDC",
    "decimals": 6
  },
  "facilitator": "https://api.cdp.coinbase.com/platform/v2/x402",
  "resources": [
    {
      "resource": "/gleif/lei",
      "method": "GET",
      "description": "Look up any Legal Entity Identifier (LEI) against the official GLEIF global registry — returns legal name, status, jurisdiction, legal form and registered address, real-time, worldwide coverage.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "lei",
        "gleif",
        "kyb",
        "compliance"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "lei": {
            "type": "string",
            "description": "20-character LEI, e.g. '529900T8BM49AURSDO55'",
            "pattern": "^[A-Z0-9]{20}$",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "lei": "529900T8BM49AURSDO55",
          "legal_name": "Ubisecure Oy",
          "entity_status": "ACTIVE",
          "registration_status": "ISSUED",
          "jurisdiction": "FI",
          "legal_form_code": "DKUW",
          "legal_address": {
            "lines": [
              "Tekniikantie 14"
            ],
            "city": "ESPOO",
            "region": "FI-18",
            "country": "FI",
            "postal_code": "02150"
          },
          "initial_registration_date": "2016-08-04T11:00:36Z",
          "last_update_date": "2024-06-20T07:11:02Z",
          "next_renewal_date": "2027-06-28T18:34:06Z",
          "managing_lou": "529900T8BM49AURSDO55",
          "source": "GLEIF API v1 (gleif.org)",
          "timestamp": "2026-06-24T12:00:00Z",
          "disclaimer": "Indicative data from the GLEIF register, not a compliance opinion.",
          "cached": false
        }
      },
      "source": "GLEIF API v1 (gleif.org)",
      "llm_usage_prompt": "LEI lookup via GLEIF: legal entity name, status, jurisdiction, ultimate & direct parent relationships and registration authority. For regulatory reporting (EMIR/MiFID), KYB and counterparty agents. Input: LEI code or legal name."
    },
    {
      "resource": "/vies/vat",
      "method": "GET",
      "description": "Validate an EU VAT number against the official EU VIES registry across all 27 member states — returns valid/invalid plus the registered company name and address. Distinguishes 'invalid' (number does not exist) from 'service unavailable' (national DB offline).",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "vat",
        "vies",
        "eu",
        "kyb"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "country": {
            "type": "string",
            "description": "2-letter EU member state code, e.g. 'IE' (use 'EL' for Greece)",
            "pattern": "^[A-Z]{2}$",
            "required": true
          },
          "vat": {
            "type": "string",
            "description": "VAT number without country prefix, e.g. '6388047V'",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "country_code": "IE",
          "vat_number": "6388047V",
          "valid": true,
          "name": "GOOGLE IRELAND LIMITED",
          "address": "3RD FLOOR, GORDON HOUSE, BARROW STREET, DUBLIN 4",
          "request_date": "2026-06-24T14:17:13.066Z",
          "source": "EU VIES REST API (ec.europa.eu)",
          "timestamp": "2026-06-24T14:17:13Z",
          "disclaimer": "Indicative data from the VIES register (EU Commission), not a compliance opinion.",
          "cached": false
        }
      },
      "source": "EU VIES REST API (ec.europa.eu)",
      "llm_usage_prompt": "EU VAT number validation via the official VIES registry across 27 member states. Returns valid/invalid plus registered company name and address. Critically distinguishes 'invalid' (number does not exist) from 'unavailable' (national VAT database offline). For invoicing, B2B onboarding, KYB and tax-compliance agents. Input: 2-letter country code (EL for Greece) + VAT number."
    },
    {
      "resource": "/polymarket/odds",
      "method": "GET",
      "description": "Live prediction market odds and implied probabilities from Polymarket — give a market id or slug, get each outcome with its probability (0-1), volume, liquidity and resolution status.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "polymarket",
        "prediction-market",
        "odds",
        "probability"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "market": {
            "type": "string",
            "description": "Polymarket market id or slug, e.g. '2654605' or 'will-it-rain-tomorrow'",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "id": "2654605",
          "slug": "wta-andreeva-vs-day-set-2",
          "question": "Set 2 Winner: Andreeva vs Day",
          "outcomes": [
            {
              "name": "Andreeva",
              "price": 0.06,
              "probability": 0.06
            },
            {
              "name": "Day",
              "price": 0.94,
              "probability": 0.94
            }
          ],
          "active": true,
          "closed": false,
          "volume": "99.98",
          "liquidity": "1426.8",
          "end_date": "2026-07-01T11:30:00Z",
          "resolution_source": null,
          "source": "Polymarket Gamma API (gamma-api.polymarket.com)",
          "timestamp": "2026-06-24T14:20:00Z",
          "disclaimer": "Indicative market odds, not investment advice.",
          "cached": false
        }
      },
      "source": "Polymarket Gamma API (gamma-api.polymarket.com)",
      "llm_usage_prompt": "Live prediction-market odds and implied probabilities from Polymarket. Returns each outcome with its probability (0-1), plus volume, liquidity and resolution status for a market. For event-forecasting, hedging and research agents. Input: Polymarket market id or slug."
    },
    {
      "resource": "/flights/states",
      "method": "GET",
      "description": "Real-time aircraft states worldwide from adsb.fi open data (ADS-B) — give a bounding box, get every aircraft in the area with live position, altitude, speed, heading and ground status. Data by adsb.fi (ODbL).",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "flights",
        "adsb-fi",
        "aircraft",
        "ads-b"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "lamin": {
            "type": "number",
            "description": "Min latitude of bounding box, e.g. 48.0",
            "required": true
          },
          "lomin": {
            "type": "number",
            "description": "Min longitude of bounding box, e.g. 2.0",
            "required": true
          },
          "lamax": {
            "type": "number",
            "description": "Max latitude of bounding box, e.g. 49.0",
            "required": true
          },
          "lomax": {
            "type": "number",
            "description": "Max longitude of bounding box, e.g. 3.0",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "bbox": {
            "lamin": 48.0,
            "lomin": 2.0,
            "lamax": 49.0,
            "lomax": 3.0
          },
          "time": 1782310689,
          "count": 1,
          "states": [
            {
              "icao24": "3c49b1",
              "callsign": "TUI6HA",
              "origin_country": null,
              "longitude": 2.189676,
              "latitude": 48.820775,
              "baro_altitude_m": 11582.4,
              "geo_altitude_m": 11887.2,
              "velocity_ms": 239.01,
              "true_track_deg": 44.22,
              "vertical_rate_ms": -2.28,
              "on_ground": false,
              "squawk": "1000",
              "last_contact": 1782418393,
              "registration": "D-ABMQ",
              "aircraft_type": "B738"
            }
          ],
          "source": "adsb.fi open data (opendata.adsb.fi)",
          "attribution": "Live ADS-B data by adsb.fi (https://adsb.fi) — community ODbL, free open data.",
          "timestamp": "2026-06-24T14:25:00Z",
          "cached": false
        }
      },
      "source": "adsb.fi open data (opendata.adsb.fi)",
      "llm_usage_prompt": "Real-time aircraft states worldwide from adsb.fi open data (ADS-B). Returns every aircraft in a bounding box with live position, altitude, velocity, heading and on-ground status. For travel, logistics, airspace-monitoring and tracking agents. Input: bounding box (lamin, lomin, lamax, lomax). Data by adsb.fi (ODbL)."
    },
    {
      "resource": "/ev/charging",
      "method": "GET",
      "description": "EV charging stations worldwide from Open Charge Map — give a location and radius, get nearby stations with operator, connector type, power (kW), number of points and status.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "ev",
        "charging",
        "open-charge-map",
        "mobility"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "latitude": {
            "type": "number",
            "description": "Latitude of search center, e.g. 48.85",
            "required": true
          },
          "longitude": {
            "type": "number",
            "description": "Longitude of search center, e.g. 2.35",
            "required": true
          },
          "distance": {
            "type": "number",
            "description": "Search radius in km (0-200], e.g. 5",
            "required": false
          },
          "maxresults": {
            "type": "integer",
            "description": "Max stations to return [1-200], e.g. 20",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "latitude": 48.85,
            "longitude": 2.35,
            "distance_km": 5
          },
          "count": 1,
          "stations": [
            {
              "id": 198782,
              "title": "SAEMES | PARKING LAGRANGE",
              "address": "19 rue Maubert 75005 Paris",
              "town": null,
              "postcode": null,
              "country_id": 80,
              "latitude": 48.8507,
              "longitude": 2.3487,
              "distance_km": 0.21,
              "operator": null,
              "usage_cost": null,
              "num_points": null,
              "status": null,
              "operational": null,
              "connections": [
                {
                  "type": "Type 2 (Socket Only)",
                  "power_kw": 22.0,
                  "current_type_id": 20,
                  "quantity": 2,
                  "status": "Operational",
                  "operational": true
                }
              ],
              "date_last_verified": "2022-08-23T10:36:00Z"
            }
          ],
          "source": "Open Charge Map (api.openchargemap.io)",
          "timestamp": "2026-06-24T14:30:00Z",
          "cached": false
        }
      },
      "source": "Open Charge Map (api.openchargemap.io)",
      "llm_usage_prompt": "EV charging stations worldwide from Open Charge Map. Returns nearby stations with operator, connector type (Type2/CCS/CHAdeMO), power in kW, number of points and status. For routing, fleet and trip-planning agents. Input: latitude, longitude, radius (km) and max results."
    },
    {
      "resource": "/bodacc/annonces",
      "method": "GET",
      "description": "Search the official French BODACC registry (DILA) for company legal announcements: incorporations, modifications, radiations and insolvencies — coverage France, by name, SIREN or RCS.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "bodacc",
        "france",
        "company",
        "insolvency"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "q": {
            "type": "string",
            "description": "Company name, SIREN or RCS, e.g. 'OVH' or '424761419'",
            "required": true
          },
          "famille": {
            "type": "string",
            "description": "Optional filter: creation | modification | radiation | depot | collective",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max announcements [1-100], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": "OVH",
          "famille": "creation",
          "total_count": 165,
          "count": 1,
          "annonces": [
            {
              "id": "A202300012345",
              "date_parution": "2026-06-12",
              "type": "Annonce",
              "famille": "Créations",
              "registre": [
                "104274436",
                "104 274 436"
              ],
              "commercant": "OVHcloud OCT5",
              "ville": "ROUBAIX",
              "departement": "Nord",
              "tribunal": "Lille Métropole",
              "jugement": null,
              "url": "https://www.bodacc.fr/annonce/detail/A202300012345"
            }
          ],
          "source": "BODACC — DILA via OpenDataSoft (bodacc-datadila.opendatasoft.com)",
          "timestamp": "2026-06-24T15:00:00Z",
          "disclaimer": "Indicative data from BODACC (DILA), not legal advice.",
          "cached": false
        }
      },
      "source": "BODACC — DILA via OpenDataSoft (bodacc-datadila.opendatasoft.com)",
      "llm_usage_prompt": "BODACC company legal announcements monitor (France, official DILA source): incorporations, modifications, radiations and insolvency proceedings for a company. Returns announcement type, family, date, court (tribunal), registre/SIREN and link. For credit-risk, supplier-risk, KYB and AML agents. Input: company name, SIREN or RCS."
    },
    {
      "resource": "/ted/tenders",
      "method": "GET",
      "description": "Search the official EU TED (Tenders Electronic Daily) for public procurement notices across the 27+ member states — by keywords, buyer country and CPV code.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "ted",
        "procurement",
        "tenders",
        "eu"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "query": {
            "type": "string",
            "description": "Keywords, e.g. 'cloud software'",
            "required": false
          },
          "country": {
            "type": "string",
            "description": "Buyer country ISO-3 code, e.g. 'FRA', 'DEU'",
            "required": false
          },
          "cpv": {
            "type": "string",
            "description": "CPV code prefix, e.g. '72000000' (IT services)",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max notices [1-50], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "text": "software",
            "country": "FRA",
            "cpv": null
          },
          "total": 31412,
          "count": 1,
          "tenders": [
            {
              "publication_number": "212976-2016",
              "title": "France-Châtenay-Malabry: System, storage and content management software package",
              "buyer_name": "Ecole Centrale",
              "buyer_country": "FRA",
              "notice_type": "Contract notice",
              "publication_date": "2016-06-22",
              "url": "https://ted.europa.eu/en/notice/212976-2016"
            }
          ],
          "source": "EU TED — Tenders Electronic Daily (api.ted.europa.eu)",
          "timestamp": "2026-06-24T15:05:00Z",
          "cached": false
        }
      },
      "source": "EU TED — Tenders Electronic Daily (api.ted.europa.eu)",
      "llm_usage_prompt": "EU public-procurement tender search via the official TED (Tenders Electronic Daily). Returns notices: publication number, title, buyer name and country, notice type, publication date and link. Filter by keywords, buyer country (ISO-3) and CPV code. For business-development, bid and market-intelligence agents."
    },
    {
      "resource": "/eurlex/search",
      "method": "GET",
      "description": "Search official EUR-Lex for EU legislation, treaties, case law and legal acts by keyword — returns CELEX number, title and date. Multilingual (en, fr, de, es, it, nl, pl).",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "eurlex",
        "eu-law",
        "legislation",
        "case-law"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "query": {
            "type": "string",
            "description": "Keywords searched in act titles, e.g. 'data protection'",
            "required": true
          },
          "language": {
            "type": "string",
            "description": "Language: en, fr, de, es, it, nl, pl (default en)",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max documents [1-50], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": "data protection",
          "language": "en",
          "count": 1,
          "documents": [
            {
              "celex": "32016R0679",
              "title": "Regulation (EU) 2016/679 of the European Parliament and of the Council",
              "date": "2016-04-27",
              "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32016R0679"
            }
          ],
          "source": "EUR-Lex / CELLAR SPARQL (publications.europa.eu)",
          "timestamp": "2026-06-24T15:10:00Z",
          "cached": false
        }
      },
      "source": "EUR-Lex / CELLAR SPARQL (publications.europa.eu)",
      "llm_usage_prompt": "EUR-Lex search for EU legislation, treaties, case law and legal acts via the official EU Publications Office (CELLAR). Full-text title search returns CELEX number, title, date and EUR-Lex link. Multilingual (en, fr, de, es, it, nl, pl). For legal-research, regulatory and compliance agents. Input: keywords."
    },
    {
      "resource": "/sanctions/screen",
      "method": "GET",
      "description": "Screen a name against the official EU consolidated sanctions list (FISMA) — returns matches with a similarity score and context (EU reference, type, programme), not a binary yes/no.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "sanctions",
        "compliance",
        "aml",
        "eu"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "name": {
            "type": "string",
            "description": "Name to screen (person or entity), e.g. 'Saddam Hussein'",
            "required": true
          },
          "type": {
            "type": "string",
            "description": "Optional: 'person' or 'enterprise'",
            "required": false
          },
          "threshold": {
            "type": "number",
            "description": "Min similarity 0-1 to report a match (default 0.7)",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max matches [1-50], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": "Saddam Hussein",
          "type": "person",
          "threshold": 0.7,
          "match_count": 1,
          "matches": [
            {
              "name": "Saddam Hussein Al-Tikriti",
              "score": 0.859,
              "subject_type": "person",
              "eu_reference": "EU.27.28",
              "un_id": null,
              "programme": "IRQ",
              "designation_details": "Former President of Iraq",
              "publication_date": "2003-07-07"
            }
          ],
          "list_size": 30242,
          "source": "EU Consolidated Financial Sanctions List — FISMA (webgate.ec.europa.eu)",
          "timestamp": "2026-06-24T15:15:00Z",
          "disclaimer": "Indicative screening against the EU consolidated list; a match is not a legal confirmation and requires human review. Not a compliance opinion.",
          "cached": false
        }
      },
      "source": "EU Consolidated Financial Sanctions List — FISMA (webgate.ec.europa.eu)",
      "llm_usage_prompt": "Name screening against the official EU consolidated financial sanctions list (FISMA). Fuzzy-matches a person or entity name and returns matches with a similarity score plus context: EU reference, subject type, programme and designation details. Not a binary yes/no — returns ranked matches for human review. For KYB, AML and payment-compliance agents. Input: name (+optional type)."
    },
    {
      "resource": "/cve/lookup",
      "method": "GET",
      "description": "Security vulnerability lookup (CVE) against the official NVD (NIST) database — by exact CVE id or by keyword/product. Returns description, CVSS severity, CWE weaknesses and references. Worldwide.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "cve",
        "security",
        "vulnerability",
        "nvd"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "cve_id": {
            "type": "string",
            "description": "Exact CVE id, e.g. 'CVE-2021-44228'",
            "required": false
          },
          "keyword": {
            "type": "string",
            "description": "Keyword / product search, e.g. 'log4j'",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max results for keyword search [1-20], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "cve_id": "CVE-2021-44228",
            "keyword": null
          },
          "total_results": 1,
          "count": 1,
          "cves": [
            {
              "id": "CVE-2021-44228",
              "description": "Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints...",
              "cvss": {
                "version": "3.1",
                "base_score": 10.0,
                "base_severity": "CRITICAL",
                "vector": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
              },
              "weaknesses": [
                "CWE-20",
                "CWE-400",
                "CWE-502",
                "CWE-917"
              ],
              "published": "2021-12-10T10:15:09.143",
              "last_modified": "2026-06-17T04:12:05.460",
              "status": "Analyzed",
              "references": [
                "https://logging.apache.org/log4j/2.x/security.html"
              ]
            }
          ],
          "source": "NVD — NIST National Vulnerability Database v2.0 (services.nvd.nist.gov)",
          "timestamp": "2026-06-24T15:20:00Z",
          "cached": false
        }
      },
      "source": "NVD — NIST National Vulnerability Database v2.0 (services.nvd.nist.gov)",
      "llm_usage_prompt": "Security vulnerability (CVE) lookup against the official NVD (NIST) database. By exact CVE id or by keyword/product. Returns description, CVSS score and severity, CWE weaknesses, status and references. For devsecops, SBOM and dependency-audit agents. Input: CVE id (e.g. CVE-2021-44228) or keyword (e.g. log4j)."
    },
    {
      "resource": "/recalls/search",
      "method": "GET",
      "description": "Product recall lookup (drugs/devices/food), Class I/II/III, against the official FDA openFDA enforcement reports — by product, firm or reason. Coverage US.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "recalls",
        "fda",
        "openfda",
        "safety"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "query": {
            "type": "string",
            "description": "Product, firm or reason, e.g. 'metformin' or 'contamination'",
            "required": true
          },
          "category": {
            "type": "string",
            "description": "drug | device | food (default drug)",
            "required": false
          },
          "classification": {
            "type": "string",
            "description": "Recall class: I, II or III (optional)",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max recalls [1-1000], e.g. 20",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": "metformin",
          "category": "drug",
          "classification": "II",
          "total": 94,
          "count": 1,
          "recalls": [
            {
              "recall_number": "D-0435-2021",
              "classification": "Class II",
              "status": "Terminated",
              "product_type": "Drugs",
              "product_description": "Metformin HCl Extended-Release Tablets...",
              "reason_for_recall": "CGMP Deviations: temperature excursion during storage.",
              "recalling_firm": "Cardinal Health Inc.",
              "distribution_pattern": "Nationwide",
              "recall_initiation_date": "20210315",
              "report_date": "20210407",
              "voluntary_mandated": "Voluntary: Firm initiated",
              "city": "Dublin",
              "state": "OH",
              "country": "United States"
            }
          ],
          "source": "openFDA — FDA enforcement reports (api.fda.gov)",
          "timestamp": "2026-06-24T16:00:00Z",
          "disclaimer": "Indicative data from openFDA (FDA), not medical or regulatory advice.",
          "cached": false
        }
      },
      "source": "openFDA — FDA enforcement reports (api.fda.gov)",
      "llm_usage_prompt": "Product recall lookup against the official FDA openFDA enforcement reports (Recall Enterprise System). Search drugs, devices or food recalls by product, firm or reason, filter by Class I/II/III. Returns recall number, classification, status, reason, recalling firm, dates and distribution. Coverage US. For e-commerce, supply-chain, pharmacovigilance and compliance agents."
    },
    {
      "resource": "/drug/label",
      "method": "GET",
      "description": "Drug interactions, warnings and contraindications lookup from the official FDA openFDA drug labels — by generic or brand name. Returns the key label sections. Coverage US.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "drug",
        "fda",
        "openfda",
        "interactions"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "drug": {
            "type": "string",
            "description": "Drug generic or brand name, e.g. 'ibuprofen' or 'Advil'",
            "required": true
          },
          "limit": {
            "type": "integer",
            "description": "Max labels [1-10], e.g. 1",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "drug": "ibuprofen",
          "count": 1,
          "labels": [
            {
              "brand_name": [
                "Ibuprofen"
              ],
              "generic_name": [
                "IBUPROFEN"
              ],
              "manufacturer_name": [
                "CVS Pharmacy"
              ],
              "drug_interactions": "Ask a doctor or pharmacist before use if you are taking aspirin, an anticoagulant...",
              "warnings": "Allergy alert: Ibuprofen may cause a severe allergic reaction...",
              "contraindications": null,
              "indications_and_usage": "temporarily relieves minor aches and pains...",
              "boxed_warning": null
            }
          ],
          "source": "openFDA — FDA drug labels (api.fda.gov)",
          "timestamp": "2026-06-24T16:05:00Z",
          "disclaimer": "Indicative data from FDA labels (openFDA), not medical advice.",
          "cached": false
        }
      },
      "source": "openFDA — FDA drug labels (api.fda.gov)",
      "llm_usage_prompt": "Drug label lookup against the official FDA openFDA drug labels. By generic or brand name, returns key label sections: drug interactions, warnings, contraindications, indications and boxed warning. Coverage US. For healthcare, pharmacy and clinical-decision-support agents. Not medical advice."
    },
    {
      "resource": "/osm/building-footprint",
      "method": "GET",
      "description": "OpenStreetMap building footprints via Overpass — give a coordinate (or bounding box) and get building geometry as GeoJSON, footprint area (m²), levels and height by coordinate. Worldwide coverage, OpenStreetMap data.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "openstreetmap",
        "building",
        "geospatial",
        "overpass"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "lat": {
            "type": "number",
            "description": "Latitude of the point, e.g. 48.8584",
            "required": false
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the point, e.g. 2.2945",
            "required": false
          },
          "radius": {
            "type": "integer",
            "description": "Search radius in metres [1-200], default 50",
            "required": false
          },
          "bbox": {
            "type": "string",
            "description": "Alternative to lat/lon: 'south,west,north,east' (max ~2km span)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "lat": 48.8584,
            "lon": 2.2945,
            "radius_m": 60
          },
          "count": 1,
          "buildings": [
            {
              "osm_type": "way",
              "osm_id": 5013364,
              "tags": {
                "building": "tower",
                "name": "Tour Eiffel",
                "height": "330",
                "addr:city": "Paris",
                "addr:postcode": "75007"
              },
              "centroid": {
                "lat": 48.8582621,
                "lon": 2.2944962
              },
              "footprint_area_m2": 9754.7,
              "geometry": {
                "type": "Polygon",
                "coordinates": [
                  [
                    [
                      2.2942817,
                      48.8576248
                    ],
                    [
                      2.2956897,
                      48.8582343
                    ],
                    [
                      2.2942817,
                      48.8576248
                    ]
                  ]
                ]
              }
            }
          ],
          "source": "OpenStreetMap via Overpass API (overpass-api.de)",
          "attribution": "© OpenStreetMap contributors (ODbL)",
          "timestamp": "2026-06-25T10:00:00Z",
          "cached": false
        }
      },
      "source": "OpenStreetMap via Overpass API (overpass-api.de)",
      "llm_usage_prompt": "Building footprint and geometry by coordinate via OpenStreetMap/Overpass. Returns the building polygon as GeoJSON, server-computed footprint area (m²), levels/floors, height and name for buildings around a point or within a bounding box. Worldwide. For real-estate, insurance, solar, geospatial and urban-planning agents. Input: lat/lon (+radius) or bbox."
    },
    {
      "resource": "/climate-risk/score",
      "method": "GET",
      "description": "Derived climate risk score from Open-Meteo CMIP6 projections — a composite heat/drought/extreme-rain risk score (0-100) by coordinate and scenario, comparing a baseline to a future horizon. Worldwide. Derived/heuristic, not an official rating; the underlying CMIP6 HighResMIP dataset is a single high-emissions pathway and does not differentiate SSP scenarios.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "climate",
        "risk-score",
        "cmip6",
        "geospatial"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "lat": {
            "type": "number",
            "description": "Latitude, e.g. 48.85",
            "required": true
          },
          "lon": {
            "type": "number",
            "description": "Longitude, e.g. 2.35",
            "required": true
          },
          "scenario": {
            "type": "string",
            "description": "Emission scenario label: ssp245 | ssp585 (informational, see methodology)",
            "required": false
          },
          "horizon": {
            "type": "integer",
            "description": "Future target year [2030-2050], e.g. 2050",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "lat": 48.85,
            "lon": 2.35,
            "scenario": "ssp245",
            "horizon": 2050
          },
          "composite_score": 24.2,
          "rating": "Low",
          "subscores": {
            "heat": 16.5,
            "drought": 43.2,
            "extreme_rain": 15.4
          },
          "indicators": {
            "mean_days_above_30C_per_year": 19.1,
            "mean_days_above_35C_per_year": 3.1,
            "mean_longest_dry_spell_days": 25.9,
            "mean_days_rain_over_20mm_per_year": 2.3
          },
          "baseline": {
            "window": "2005-2014",
            "composite_score": 18.0,
            "rating": "Low",
            "subscores": {
              "heat": 11.0,
              "drought": 38.0,
              "extreme_rain": 13.3
            },
            "indicators": {
              "mean_days_above_30C_per_year": 14.0,
              "mean_days_above_35C_per_year": 1.0,
              "mean_longest_dry_spell_days": 22.8,
              "mean_days_rain_over_20mm_per_year": 2.0
            }
          },
          "delta_vs_baseline": 6.2,
          "scenario": "ssp245",
          "horizon": 2050,
          "methodology": {
            "summary": "Composite 0-100 = 0.45*heat + 0.30*drought + 0.25*extreme_rain, ensemble mean of Open-Meteo HighResMIP CMIP6 models.",
            "baseline_window": "2005-01-01..2014-12-31",
            "future_window": "2041-01-01..2050-12-31",
            "deterministic": true,
            "scenario_requested": "ssp245",
            "scenario_note": "Open-Meteo CMIP6 HighResMIP is a single high-emissions pathway to 2050; 'scenario' is echoed for reference only and does not change the projection.",
            "data_disclaimer": "Derived/heuristic score — not an official or regulatory risk rating."
          },
          "source": "Open-Meteo Climate API — CMIP6 HighResMIP downscaled (climate-api.open-meteo.com)",
          "attribution": "Weather/climate data by Open-Meteo.com (CC BY 4.0)",
          "timestamp": "2026-06-25T10:00:00Z",
          "disclaimer": "Derived/heuristic score from CMIP6 projections (Open-Meteo), not an official risk rating.",
          "cached": false
        }
      },
      "source": "Open-Meteo Climate API (climate-api.open-meteo.com) — CMIP6 HighResMIP, CC BY 4.0",
      "llm_usage_prompt": "Derived climate risk score by coordinate from Open-Meteo CMIP6 (HighResMIP) projections. Returns a composite 0-100 heat/drought/extreme-rain risk score and rating, per-hazard subscores and indicators, baseline-vs-future comparison and an explicit methodology. Deterministic. Derived/heuristic, NOT an official or regulatory rating; the underlying dataset is a single high-emissions pathway and does not differentiate SSP scenarios. For property due-diligence, ESG, parametric-insurance and siting agents. Input: lat/lon (+scenario, horizon)."
    },
    {
      "resource": "/polymarket/resolution",
      "method": "GET",
      "description": "Polymarket resolution status via Gamma API — market resolution, winning outcome and resolution source lookup by slug or condition id (or list recent resolved markets). Distinct from live odds: returns whether a market is closed and which outcome won. Coverage Polymarket markets.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "polymarket",
        "resolution",
        "prediction-market",
        "oracle"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "slug": {
            "type": "string",
            "description": "Market slug, e.g. 'will-donald-trump-win-the-2024-us-presidential-election'",
            "required": false
          },
          "condition_id": {
            "type": "string",
            "description": "On-chain condition id, e.g. '0x1fad72...'",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max markets when listing resolved markets [1-50], e.g. 20",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "lookup",
          "market": {
            "question": "Will Donald Trump win the 2024 US Presidential Election?",
            "slug": "will-donald-trump-win-the-2024-us-presidential-election",
            "condition_id": "0x...",
            "closed": true,
            "active": true,
            "resolution_status": "resolved",
            "winning_outcome": "Yes",
            "outcomes": [
              {
                "outcome": "Yes",
                "price": 1.0
              },
              {
                "outcome": "No",
                "price": 0.0
              }
            ],
            "outcome_prices_raw": "[\"1\", \"0\"]",
            "resolution_source": null,
            "uma_resolution_status": null,
            "end_date": "2024-11-05T12:00:00Z",
            "closed_time": null,
            "source": "Polymarket Gamma API (gamma-api.polymarket.com)",
            "timestamp": "2026-06-25T10:00:00Z",
            "disclaimer": "Indicative resolution status from Polymarket (on-chain indexed), not investment advice."
          },
          "source": "Polymarket Gamma API (gamma-api.polymarket.com)",
          "timestamp": "2026-06-25T10:00:00Z",
          "cached": false
        }
      },
      "source": "Polymarket Gamma API (gamma-api.polymarket.com)",
      "llm_usage_prompt": "Polymarket market resolution oracle via the Gamma API. Returns whether a market is closed/resolved, the winning outcome (derived from final outcome prices, only when unambiguous — never invented), resolution source, end date and condition id/slug — or lists recent resolved markets. Distinct from live odds. For settlement, audit, research and event-forecasting agents. Input: market slug or condition id."
    },
    {
      "resource": "/solar/building-insights",
      "method": "GET",
      "description": "Rooftop solar potential, panel capacity, sunshine hours and carbon offset by coordinate from the official Google Maps Platform Solar API — returns max panel count, usable roof area, annual sunshine hours and carbon-offset factor for the closest building. Worldwide partial coverage (EU well covered).",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "solar",
        "google",
        "rooftop",
        "energy"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "lat": {
            "type": "number",
            "description": "Latitude of the building, e.g. 48.139",
            "required": true
          },
          "lon": {
            "type": "number",
            "description": "Longitude of the building, e.g. 11.566",
            "required": true
          },
          "quality": {
            "type": "string",
            "description": "Required imagery quality: HIGH | MEDIUM | BASE (default HIGH)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "name": "buildings/...",
          "center": {
            "latitude": 48.1388,
            "longitude": 11.5658
          },
          "imagery_quality": "HIGH",
          "imagery_date": "2022-09-04",
          "postal_code": "80331",
          "administrative_area": "Bayern",
          "region_code": "DE",
          "solar_potential": {
            "max_array_panels_count": 48,
            "max_array_area_meters2": 94.25,
            "max_sunshine_hours_per_year": 1222.3,
            "carbon_offset_factor_kg_per_mwh": 475.0,
            "panel_capacity_watts": 250,
            "whole_roof_area_meters2": 194.63
          },
          "source": "Google Maps Platform Solar API (solar.googleapis.com)",
          "attribution": "Solar data © Google — Google Maps Platform Solar API",
          "timestamp": "2026-06-25T12:00:00Z",
          "cached": false
        }
      },
      "source": "Google Maps Platform Solar API (solar.googleapis.com)",
      "llm_usage_prompt": "Rooftop solar potential by coordinate via the official Google Maps Platform Solar API. Returns max solar panel count, usable array area (m²), annual sunshine hours, carbon-offset factor (kg/MWh) and whole-roof area for the closest building. Worldwide partial coverage (EU well covered). For agents sizing solar installs, real-estate energy scoring, or carbon/ROI estimates. Input: lat/lon (+imagery quality)."
    },
    {
      "resource": "/uk-companies/search",
      "method": "GET",
      "description": "Search the official UK Companies House register — UK company search, status, type and registered details lookup (KYB) by name or number, or fetch a detailed company profile (registered address, SIC codes, officers) by company number. Official UK register coverage.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "companies-house",
        "uk",
        "kyb",
        "company-registry"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "q": {
            "type": "string",
            "description": "Company name or number, e.g. 'Tesco' or '00445790'",
            "required": false
          },
          "company_number": {
            "type": "string",
            "description": "If set, return the detailed profile for this number, e.g. '00445790'",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max results [1-50], e.g. 20",
            "required": false
          },
          "start_index": {
            "type": "integer",
            "description": "Pagination offset, e.g. 0",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "search",
          "query": "Tesco",
          "total_results": 356,
          "start_index": 0,
          "items_per_page": 20,
          "count": 1,
          "companies": [
            {
              "title": "TESCO PLC",
              "company_number": "00445790",
              "company_status": "active",
              "company_type": "plc",
              "date_of_creation": "1947-11-27",
              "address_snippet": "Tesco House, Shire Park, Kestrel Way, Welwyn Garden City, United Kingdom, AL7 1GA"
            }
          ],
          "source": "UK Companies House Public Data API (api.company-information.service.gov.uk)",
          "timestamp": "2026-06-25T12:00:00Z",
          "disclaimer": "Indicative data from the UK Companies House register, not a compliance opinion.",
          "cached": false
        }
      },
      "source": "UK Companies House Public Data API (api.company-information.service.gov.uk)",
      "llm_usage_prompt": "UK company verification via the official Companies House register. Search by name or number, or fetch a detailed profile by company number: status, type, incorporation date, registered office address, SIC codes, insolvency history and officers (with post-ECCTA identity verification status when present). For KYB, AML and supplier due-diligence agents. Input: company name or number."
    },
    {
      "resource": "/patents/search",
      "method": "GET",
      "description": "European patent search and bibliographic lookup by number, title, applicant or inventor against the official European Patent Office (EPO) Open Patent Services — returns publication number, country, kind code, dates, titles, applicants, inventors, IPC/CPC classifications and family id. Coverage EU and worldwide (100+ patent offices).",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "patents",
        "epo",
        "ip",
        "research"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "publication_number": {
            "type": "string",
            "description": "If set, biblio lookup for this number, e.g. 'EP1000000'",
            "required": false
          },
          "title": {
            "type": "string",
            "description": "Title keyword (CQL ti=), e.g. 'quantum computing'",
            "required": false
          },
          "applicant": {
            "type": "string",
            "description": "Applicant / assignee (CQL pa=), e.g. 'Siemens'",
            "required": false
          },
          "inventor": {
            "type": "string",
            "description": "Inventor name (CQL in=), e.g. 'Shannon'",
            "required": false
          },
          "date_from": {
            "type": "string",
            "description": "Publication date from, ISO YYYY-MM-DD",
            "required": false
          },
          "date_to": {
            "type": "string",
            "description": "Publication date to, ISO YYYY-MM-DD",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max patents [1-50], e.g. 20",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "publication",
          "count": 1,
          "patents": [
            {
              "publication_number": "EP1000000A1",
              "country": "EP",
              "doc_number": "1000000",
              "kind_code": "A1",
              "publication_date": "20000517",
              "family_id": "19768124",
              "titles": {
                "en": "Apparatus for manufacturing green bricks for the brick manufacturing industry",
                "de": "Vorrichtung zur Herstellung von Steinformlingen für die Ziegelindustrie"
              },
              "applicants": [
                "BEHEERMIJ DE BOER NIJMEGEN BV [NL]"
              ],
              "inventors": [
                "KOSMAN WILHELMUS JACOBUS MARIA [NL]"
              ],
              "ipc_classifications": [
                "B28B1/29",
                "B28B5/02",
                "B28B7/00"
              ],
              "cpc_classifications": [
                "B28B1/29"
              ]
            }
          ],
          "source": "EPO Open Patent Services v3.2 (ops.epo.org)",
          "timestamp": "2026-06-25T12:00:00Z",
          "cached": false
        }
      },
      "source": "EPO Open Patent Services v3.2 (ops.epo.org)",
      "llm_usage_prompt": "European patent search and bibliographic lookup via the official EPO Open Patent Services (OPS). By publication number, or CQL search by title, applicant, inventor and publication-date range. Returns publication number, country, kind code, dates, multilingual titles, applicants, inventors, IPC/CPC classifications and INPADOC family id. Coverage EU and worldwide (100+ patent offices). For IP due-diligence, freedom-to-operate, prior-art and R&D agents. Input: patent number or search criteria."
    },
    {
      "resource": "/fr-sirene/lookup",
      "method": "GET",
      "description": "French company/establishment lookup by SIREN, SIRET or name against the official INSEE Sirene register (France) — returns legal name, administrative status, NAF/APE code, creation date, headcount band and registered address. KYB, official France coverage.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "sirene",
        "insee",
        "france",
        "kyb"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "siret": {
            "type": "string",
            "description": "14-digit SIRET (establishment), e.g. '44306184100047'",
            "required": false
          },
          "siren": {
            "type": "string",
            "description": "9-digit SIREN (legal unit), e.g. '443061841'",
            "required": false
          },
          "q": {
            "type": "string",
            "description": "Free-text / multi-criteria search, e.g. 'denominationUniteLegale:\"GOOGLE FRANCE\"'",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max results for search [1-100], e.g. 20",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "siret",
          "etablissement": {
            "siren": "443061841",
            "nic": "00047",
            "siret": "44306184100047",
            "denomination": "GOOGLE FRANCE",
            "etat_administratif": "A",
            "etat_unite_legale": "A",
            "date_creation": "2011-05-13",
            "categorie_juridique": "5499",
            "activite_principale_naf": "62.02A",
            "tranche_effectifs": "42",
            "etablissement_siege": true,
            "statut_diffusion": "O",
            "adresse": "8 RUE DE LONDRES 75009 PARIS"
          },
          "source": "INSEE Sirene V3.11 (api.insee.fr)",
          "timestamp": "2026-06-25T12:00:00Z",
          "disclaimer": "Indicative data from the INSEE Sirene register, not a compliance opinion.",
          "cached": false
        }
      },
      "source": "INSEE Sirene V3.11 (api.insee.fr)",
      "llm_usage_prompt": "French company/establishment verification via the official INSEE Sirene register. Lookup by SIRET, SIREN or name: legal name, administrative status (active/closed), legal form, NAF/APE activity code, creation date, headcount band and registered address. For KYB, AML and supplier due-diligence agents (France). Input: SIRET, SIREN or company name."
    },
    {
      "resource": "/iban/validate",
      "method": "GET",
      "description": "IBAN format validation (ISO 13616 mod-97) — SEPA/EU IBAN structural validation and country/bank-code extraction. Returns valid/invalid with reason, country code, check digits, bank code and grouped formatting. Format check, NOT account existence. SEPA/EU coverage.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "iban",
        "sepa",
        "payments",
        "validation"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "iban": {
            "type": "string",
            "description": "IBAN to validate, e.g. 'FR1420041010050500013M02606'",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "iban": "FR1420041010050500013M02606",
          "country_code": "FR",
          "check_digits": "14",
          "formatted": "FR14 2004 1010 0505 0001 3M02 606",
          "valid": true,
          "reason": null,
          "bank_code": "20041",
          "source": "ISO 13616 mod-97 local validation (no external source)",
          "timestamp": "2026-06-25T12:00:00Z",
          "disclaimer": "FORMAT validation (structure + ISO 13616 checksum), NOT a check that the account exists.",
          "cached": false
        }
      },
      "source": "ISO 13616 mod-97 local validation (no external source)",
      "llm_usage_prompt": "IBAN format validation via the ISO 13616 mod-97 algorithm (local, deterministic). SEPA/EU structural validation: returns valid/invalid with a clear reason, country code, check digits, bank code and grouped formatting. Format check only — does NOT verify the account exists. For payment, onboarding and treasury agents. Input: IBAN."
    },
    {
      "resource": "/fr-legifrance/search",
      "method": "GET",
      "description": "Official Légifrance (French law, via DILA/PISTE) — French legal texts, codes and articles search and lookup by keyword and corpus (codes, laws/decrees, JORF), or consult a text by id. Complements EUR-Lex (EU law) on the national French side. Official France coverage.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "legifrance",
        "france",
        "law",
        "legislation"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "q": {
            "type": "string",
            "description": "Keyword search in French legal texts, e.g. 'données personnelles'",
            "required": false
          },
          "fond": {
            "type": "string",
            "description": "Corpus: LODA_DATE (laws/decrees) | CODE_DATE | JORF (default LODA_DATE)",
            "required": false
          },
          "text_id": {
            "type": "string",
            "description": "If set, consult a specific text by id/cid instead of searching",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max results [1-50], e.g. 10",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "search",
          "query": "données personnelles",
          "fond": "LODA_DATE",
          "total": 107757,
          "count": 1,
          "results": [
            {
              "id": "LEGITEXT000048853940_01-01-2024",
              "cid": "JORFTEXT000048736062",
              "title": "Décret n° 2023-1397 du 29 décembre 2023 relatif au traitement des données personnelles et au contrôle du placement en activité partielle",
              "nature": "DECRET",
              "date": "2024-01-01T00:00:00.000+0000",
              "etat": "VIGUEUR",
              "text_summary": null
            }
          ],
          "source": "Légifrance via DILA/PISTE (api.piste.gouv.fr)",
          "timestamp": "2026-06-25T12:00:00Z",
          "disclaimer": "Indicative data from Légifrance (DILA), not legal advice.",
          "cached": false
        }
      },
      "source": "Légifrance via DILA/PISTE (api.piste.gouv.fr)",
      "llm_usage_prompt": "French law search and lookup via the official Légifrance (DILA/PISTE). Keyword search across codes, laws/decrees (LODA) and the Journal Officiel (JORF), or consult a text by id. Returns title, identifier (id/cid), nature, date and legal status (in force/repealed). Complements EUR-Lex on the national French side. For legal-research, regulatory and compliance agents. Input: keyword (+corpus) or text id."
    },
    {
      "resource": "/ecb/exchange-rate",
      "method": "GET",
      "description": "Official European Central Bank (ECB) euro reference exchange rates — EUR foreign exchange reference rate lookup by currency (29 currencies), latest or by date. Reference rates (published ~16:00 CET on working days), not live market rates. EU/worldwide coverage.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "ecb",
        "forex",
        "eur",
        "reference-rate"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "currency": {
            "type": "string",
            "description": "3-letter ISO currency code, e.g. 'USD', 'GBP', 'CHF', 'JPY'",
            "required": true
          },
          "frequency": {
            "type": "string",
            "description": "D (daily, default) or M (monthly)",
            "required": false
          },
          "date": {
            "type": "string",
            "description": "Optional observation date ISO YYYY-MM-DD; default = latest available",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "currency": "USD",
          "base": "EUR",
          "rate": 1.134,
          "observation_date": "2026-06-24",
          "frequency": "D",
          "series_key": "D.USD.EUR.SP00.A",
          "source": "European Central Bank — euro reference rates, SDMX 2.1 (data-api.ecb.europa.eu)",
          "timestamp": "2026-06-25T12:00:00Z",
          "disclaimer": "ECB reference rates (informational, published ~16:00 CET on working days), not a real-time market rate.",
          "cached": false
        }
      },
      "source": "European Central Bank SDMX 2.1 (data-api.ecb.europa.eu)",
      "llm_usage_prompt": "Euro foreign-exchange reference rate lookup via the official European Central Bank (ECB) SDMX data portal. Returns the EUR reference rate for a currency (29 currencies), latest or by date, with the real observation date. Reference rates (published ~16:00 CET on working days), not live market rates. For pricing, accounting, FX and treasury agents. Input: currency (+frequency, date)."
    },
    {
      "resource": "/crypto/token-safety",
      "method": "GET",
      "description": "Token safety check before buying — is this token a honeypot or a rug pull? Bundles honeypot detection, buy/sell tax, holder concentration, LP lock and liquidity (GoPlus, Honeypot.is, DexScreener) into a single 0-100 token security risk score with a clear buy/avoid verdict. One call replaces three lookups. EVM chains.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "token-safety",
        "honeypot",
        "rug-check",
        "token-security",
        "risk-score"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "token": {
            "type": "string",
            "description": "Token contract address (0x + 40 hex), e.g. '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'",
            "required": true
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | bsc | polygon | arbitrum | optimism | avalanche (default base)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "chain": "base"
          },
          "safety_score": 95,
          "rating": "safe",
          "verdict": "Low risk on automated checks. Always DYOR.",
          "honeypot": false,
          "buy_tax_pct": 0.0,
          "sell_tax_pct": 0.0,
          "flags": [],
          "market": {
            "price_usd": 1.0,
            "liquidity_usd": 5200000.0,
            "volume_24h_usd": 18000000.0,
            "dex": "aerodrome",
            "symbol": "USDC"
          },
          "holder_count": "250000",
          "sources_ok": {
            "goplus": true,
            "honeypot_is": true,
            "dexscreener": true
          },
          "source": "GoPlus Security + Honeypot.is + DexScreener",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "Automated heuristic safety check, not financial advice. Always do your own research.",
          "cached": false
        }
      },
      "source": "GoPlus Security + Honeypot.is + DexScreener",
      "llm_usage_prompt": "Token safety check before buying: is this token a honeypot or rug pull? Honeypot, buy/sell tax, holder concentration, LP lock and liquidity bundled into a 0-100 token security risk score with a buy/avoid verdict. For trading agents screening a token. Input: token contract address + chain."
    },
    {
      "resource": "/crypto/derivatives-radar",
      "method": "GET",
      "description": "Perpetual funding rates, open interest and long/short ratios across Binance, Bybit, OKX and Hyperliquid in one call, plus the computed funding-rate arbitrage spread between venues and a crowding signal. Multi-venue perp derivatives data, resilient: returns whatever venues respond. For trading and funding-arbitrage agents.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "funding-rate",
        "perp",
        "open-interest",
        "long-short",
        "derivatives"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "symbol": {
            "type": "string",
            "description": "Coin ticker, e.g. 'BTC', 'ETH', 'SOL'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "symbol": "BTC"
          },
          "venues_count": 4,
          "venues": [
            {
              "venue": "binance",
              "funding_rate": 0.0001,
              "mark_price": 67000.0,
              "open_interest_usd": 8200000000.0,
              "long_short_ratio": 1.8
            }
          ],
          "aggregate": {
            "total_open_interest_usd": 21000000000,
            "avg_long_short_ratio": 1.7,
            "crowding": "crowded_long"
          },
          "funding_arbitrage": {
            "funding_spread": 0.00015,
            "long_on": "okx",
            "short_on": "binance",
            "annualized_spread_pct": 16.4,
            "note": "Long the venue with the lowest funding, short the highest, to capture the spread."
          },
          "sources_ok": {
            "binance": true,
            "bybit": true,
            "okx": true,
            "hyperliquid": true
          },
          "source": "Binance + Bybit + OKX + Hyperliquid (perp public APIs)",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "Market data for information only, not financial advice.",
          "cached": false
        }
      },
      "source": "Binance + Bybit + OKX + Hyperliquid (perp public APIs)",
      "llm_usage_prompt": "Perpetual funding rates, open interest and long/short ratios across Binance/Bybit/OKX/Hyperliquid in one call, plus the computed funding-rate arbitrage spread and crowding signal. For trading and funding-arb agents. Input: coin ticker."
    },
    {
      "resource": "/crypto/wallet-xray",
      "method": "GET",
      "description": "Wallet risk analysis in one call — native + ERC-20 balances, USD portfolio valuation, token count and an OFAC sanctions flag (Blockscout, DexScreener, OFAC list). A full on-chain wallet x-ray with risk flags, where primitives serve one field per call this returns the whole valued portfolio plus risk. EVM chains.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "wallet",
        "risk-analysis",
        "portfolio",
        "sanctions",
        "onchain"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "address": {
            "type": "string",
            "description": "Wallet address (0x + 40 hex), e.g. '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' (vitalik.eth)",
            "required": true
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | optimism | arbitrum | polygon | gnosis (default base)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "chain": "ethereum"
          },
          "sanction_check": {
            "ofac_listed": false,
            "source": "OFAC SDN crypto addresses",
            "list_loaded": true
          },
          "native": {
            "symbol": "ETH",
            "amount": 1234.5,
            "price_usd": 2400.0,
            "value_usd": 2962800.0
          },
          "portfolio": {
            "total_value_usd": 5200000.0,
            "token_count": 42,
            "priced_token_count": 18
          },
          "holdings": [
            {
              "symbol": "USDC",
              "name": "USD Coin",
              "contract": "0xa0b8...eb48",
              "amount": 50000.0,
              "price_usd": 1.0,
              "value_usd": 50000.0,
              "type": "ERC-20"
            }
          ],
          "risk_flags": [],
          "source": "Blockscout + DexScreener + OFAC sanctioned-address list",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "Balances/valuations are best-effort from public indexers; OFAC list may lag. Not advice.",
          "cached": false
        }
      },
      "source": "Blockscout + DexScreener + OFAC sanctioned-address list",
      "llm_usage_prompt": "Wallet risk analysis: native + ERC-20 balances, USD portfolio valuation, token count and an OFAC sanctions flag, bundled in one call. For on-chain analysis, compliance and trading agents. Input: wallet address + chain."
    },
    {
      "resource": "/crypto/dex-cex-spread",
      "method": "GET",
      "description": "DEX vs CEX arbitrage spread — the price difference between DEX and CEX with the fee-adjusted NET spread and execution direction, not two raw prices. Compares the most liquid DEX pair (DexScreener) to CEX spot (Binance/Bybit), subtracts taker+swap fees, and flags any profitable arbitrage opportunity. For arbitrage agents.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "arbitrage",
        "dex",
        "cex",
        "spread",
        "trading"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "symbol": {
            "type": "string",
            "description": "Coin ticker, e.g. 'ETH', 'WBTC', 'ARB'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "symbol": "ETH"
          },
          "dex": {
            "price_usd": 2405.0,
            "dex": "uniswap",
            "chain": "base",
            "liquidity_usd": 12000000.0
          },
          "cex": {
            "venue": "binance",
            "price_usd": 2400.0
          },
          "spread": {
            "gross_spread_pct": 0.2083,
            "abs_gross_spread_pct": 0.2083,
            "assumed_fees_pct": {
              "cex_taker": 0.1,
              "dex_swap": 0.3,
              "total": 0.4
            },
            "net_spread_pct": -0.1917,
            "profitable": false,
            "direction": null
          },
          "sources_ok": {
            "dexscreener": true,
            "binance": true,
            "bybit": true
          },
          "source": "DexScreener (DEX) + Binance/Bybit spot (CEX)",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "Net spread uses assumed taker/swap fees and ignores gas, slippage and withdrawal time. Not advice.",
          "cached": false
        }
      },
      "source": "DexScreener (DEX) + Binance/Bybit spot (CEX)",
      "llm_usage_prompt": "DEX vs CEX arbitrage spread: the price difference between DEX and CEX with the fee-adjusted NET spread (after taker+swap fees) and execution direction, plus whether the arbitrage is profitable. For arbitrage agents. Input: coin ticker."
    },
    {
      "resource": "/web/extract",
      "method": "GET",
      "description": "Web search and webpage extraction for AI agents — returns clean, LLM-ready markdown (deduplicated, with source URLs), not raw HTML. Give 'query' to search the web or 'url' to scrape and extract a page into markdown ready to drop into a prompt. Powered by Jina Reader.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "web-search",
        "scrape",
        "extract",
        "markdown",
        "llm"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "query": {
            "type": "string",
            "description": "Web search query, e.g. 'latest Base chain TVL'",
            "required": false
          },
          "url": {
            "type": "string",
            "description": "If set, scrape and extract this page as clean markdown instead of searching",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max search results [1-10], e.g. 5",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "mode": "search",
          "query": "Base chain total value locked 2026",
          "count": 2,
          "results": [
            {
              "title": "Base TVL — DefiLlama",
              "url": "https://defillama.com/chain/Base",
              "snippet": "Base total value locked is ..."
            }
          ],
          "source": "Jina AI Reader (r.jina.ai) + Search (s.jina.ai)",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "Content fetched live from public web via Jina Reader; may be incomplete or rate-limited.",
          "cached": false
        }
      },
      "source": "Jina AI Reader (r.jina.ai) + Search (s.jina.ai)",
      "llm_usage_prompt": "Web search and webpage extraction for AI agents, returned as clean LLM-ready markdown with source URLs. Give 'query' to search the web or 'url' to scrape and extract a page. For research and RAG agents."
    },
    {
      "resource": "/crypto/new-pairs",
      "method": "GET",
      "description": "Newly launched DEX pairs and pools per chain (GeckoTerminal) with an instant per-pair safety check bundled in (GoPlus honeypot/tax/verified + mini score) — a sniping agent filters rugs without a second call. Returns pool, base token, price, liquidity and age. EVM safety; Solana lists pairs only.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "new-pairs",
        "new-pools",
        "sniping",
        "dex",
        "token-safety"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "chain": {
            "type": "string",
            "description": "base | ethereum | bsc | polygon | arbitrum | optimism | avalanche | solana",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max new pairs [1-15], e.g. 5",
            "required": false
          },
          "safety": {
            "type": "boolean",
            "description": "Bundle a GoPlus safety check per pair (EVM only), default true",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "chain": "base",
            "limit": 5,
            "safety": true
          },
          "count": 1,
          "pairs": [
            {
              "pool_name": "PEPE / WETH",
              "pool_address": "0xabc...",
              "base_token_address": "0xdef...",
              "price_usd": 1.2e-06,
              "created_at": "2026-06-26T15:40:00Z",
              "liquidity_usd": 45000.0,
              "fdv_usd": 1200000.0,
              "volume_24h_usd": 90000.0,
              "safety": {
                "safety_score": 70,
                "honeypot": false,
                "buy_tax_pct": 0.0,
                "sell_tax_pct": 5.0,
                "open_source": true,
                "flags": [
                  "sell tax 5%"
                ]
              }
            }
          ],
          "source": "GeckoTerminal (new pools) + GoPlus Security (token safety)",
          "timestamp": "2026-06-26T16:00:00Z",
          "disclaimer": "New pools are high-risk by nature; safety score is heuristic. Not financial advice.",
          "cached": false
        }
      },
      "source": "GeckoTerminal (new pools) + GoPlus Security (token safety)",
      "llm_usage_prompt": "Newly launched DEX pairs and pools per chain with an instant per-pair safety check bundled in (honeypot/tax/verified + mini score), so a sniping agent filters rugs without a second call. Input: chain + limit."
    },
    {
      "resource": "/x402/seller-trust",
      "method": "GET",
      "description": "Score an x402 seller wallet BEFORE paying it: verdict TRUSTED/CAUTION/AVOID + confidence from its on-chain settlement graph on Base — settlement count, unique paying counterparties, wallet age, wash-trade and sybil signals — with a signed, offline-verifiable receipt. Vet an unknown x402 endpoint or merchant wallet before you pay: scam, fake-volume wash-trader or sybil cluster? Agent counterparty risk, seller reputation and trust score for x402 / agentic payments.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "x402-seller-trust",
        "reputation-score",
        "wash-trade",
        "sybil",
        "counterparty-risk"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "seller_wallet": {
            "type": "string",
            "description": "x402 seller payTo wallet (0x + 40 hex)",
            "required": true,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "depth": {
            "type": "string",
            "description": "'shallow' (~200 settlements) or 'deep' (~500)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "TRUSTED",
          "confidence": 0.82,
          "trust_score": 88,
          "reasons": [
            {
              "code": "UNIQUE_COUNTERPARTIES",
              "label": "47 distinct paying counterparties",
              "weight": -0.5
            },
            {
              "code": "COMPOSITE_SCORE",
              "label": "Composite trust score 88/100",
              "weight": -0.1
            }
          ],
          "query": {
            "seller_wallet": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "depth": "shallow"
          },
          "metrics": {
            "settlement_count": 213,
            "unique_counterparties": 47,
            "received_volume_usdc": 19.4,
            "first_settlement": "2026-01-12T09:00:00Z",
            "wallet_age_days": 168.0,
            "top_counterparty_share": 0.11,
            "counterparty_diversity_ratio": 0.221,
            "one_shot_payer_ratio": 0.62,
            "amount_uniformity": 0.18
          },
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77f2e95c3eee40403453e942834b703383e15fca50d11fdd28633ca5dd9f9d",
            "claims": {
              "kind": "x402_seller_trust",
              "seller_wallet": "0x1D1B...620f",
              "verdict": "TRUSTED",
              "trust_score": 88,
              "settlement_count": 213,
              "unique_counterparties": 47,
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-06-29T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-01-12T09:00:00Z",
            "age_seconds": 14515200,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": true,
            "sources": [
              "Base Blockscout USDC transfers (settlement proxy)",
              "OFAC SDN crypto addresses"
            ],
            "chain": "base",
            "ofac_list_loaded": true
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Trust derived from incoming USDC transfers on Base as a settlement proxy; not all incoming USDC is an x402 settlement. Not advice.",
          "cached": false
        }
      }
    },
    {
      "resource": "/x402/payment-firewall",
      "method": "GET",
      "description": "Pre-payment risk firewall for AI agents: validate {recipient, amount, chain} BEFORE sending an x402 payment and get ALLOW/REVIEW/BLOCK in <200ms — OFAC blocklist, sanctioned-mixer check, runaway-overspend vs expected price and anomalous-amount guard. Stop an agent from overpaying or paying a bad address; transaction risk screening and payment guardrail before send. The hosted spending guard / agent budget protection an offline SDK cannot give.",
      "mimeType": "application/json",
      "price": "$0.005",
      "amount": "5000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "x402-payment-firewall",
        "spending-guard",
        "pre-payment-risk",
        "recipient-allowlist",
        "anomalous-spend"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "to_address": {
            "type": "string",
            "description": "Recipient/payTo address (EVM 0x.., Solana, BTC, TRON, XRP)",
            "required": true
          },
          "amount": {
            "type": "number",
            "description": "Payment amount in USD, e.g. 0.01",
            "required": false
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | solana | bitcoin | tron (optional; inferred from address)",
            "required": false
          },
          "expected_price": {
            "type": "number",
            "description": "Price the resource advertised — flags runaway overspend",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "ALLOW",
          "confidence": 0.9,
          "reasons": [
            {
              "code": "NO_RISK_SIGNAL",
              "label": "No blocklist hit or spend anomaly detected",
              "weight": -0.5
            }
          ],
          "query": {
            "to_address": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "amount": 0.01,
            "chain": "base",
            "expected_price": 0.01
          },
          "recipient": {
            "detected_chain": "evm",
            "valid": true,
            "ofac_sanctioned": false,
            "known_mixer": false
          },
          "data_freshness": {
            "as_of": "2026-06-29T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": true,
            "sources": [
              "OFAC SDN crypto addresses (0xB10C mirror)",
              "local chain validation",
              "internal spend baseline"
            ],
            "ofac_lists_loaded": {
              "ETH": true
            },
            "blocklist_size_evm": 612
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Automated pre-payment risk screen, not legal/financial advice. ALLOW is not a guarantee.",
          "cached": false
        }
      }
    },
    {
      "resource": "/compliance/wallet-screen",
      "method": "GET",
      "description": "Crypto wallet sanctions & compliance screening (AML/KYT): screen any EVM/Solana/Bitcoin/Tron/XRP wallet against the official OFAC SDN crypto list (UN/UK declared) with mixer (Tornado Cash) exposure and wallet age, returning PASS/WARN/BLOCK and a cryptographically SIGNED compliance receipt (list-version-pinned, verifiable offline) for audit. OFAC wallet check, travel-rule / KYT counterparty screening with an auditable attestation an agent can keep.",
      "mimeType": "application/json",
      "price": "$0.005",
      "amount": "5000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "crypto-sanctions-screening",
        "ofac",
        "aml",
        "kyt",
        "compliance-receipt"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "wallet": {
            "type": "string",
            "description": "Wallet to screen — EVM '0x..', Solana, BTC, TRON 'T..', XRP 'r..'",
            "required": true
          },
          "chains": {
            "type": "string",
            "description": "Optional comma-separated EVM chains for exposure/age, e.g. 'ethereum,base'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "PASS",
          "confidence": 0.95,
          "reasons": [
            {
              "code": "NO_DIRECT_MATCH",
              "label": "No match on any screened sanctions list",
              "weight": -0.5
            }
          ],
          "query": {
            "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "chains": [
              "ethereum",
              "base"
            ],
            "detected_chain": "evm"
          },
          "matched_lists": [],
          "lists_checked": [
            {
              "list": "OFAC SDN (crypto addresses)",
              "coverage": "addresses",
              "official": true
            },
            {
              "list": "UN Security Council consolidated",
              "coverage": "names_only",
              "official": true
            },
            {
              "list": "UK OFSI/FCDO consolidated",
              "coverage": "names_only",
              "official": true
            }
          ],
          "mixer_exposure": {
            "checked": true,
            "exposed": false,
            "hits": [],
            "hosts_checked": [
              "https://eth.blockscout.com",
              "https://base.blockscout.com"
            ]
          },
          "wallet_age": {
            "first_seen_observed": null,
            "min_age_days": null,
            "is_lower_bound": true
          },
          "signed_compliance_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77f2e95c3eee40403453e942834b703383e15fca50d11fdd28633ca5dd9f9d",
            "claims": {
              "kind": "wallet_compliance_screen",
              "wallet": "0xd8dA6BF...6045",
              "verdict": "PASS",
              "matched_lists": [],
              "ofac_list_fingerprint": "a1b2c3d4e5f60718",
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-06-29T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-06-29T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": true,
            "sources": [
              "OFAC SDN crypto addresses (official, public)"
            ],
            "ofac_list_fingerprint": "a1b2c3d4e5f60718",
            "ofac_evm_size": 612,
            "ofac_other_size": 480
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Screening against official OFAC crypto addresses; UN/UK are names-only. A clear result is not legal clearance.",
          "cached": false
        }
      }
    },
    {
      "resource": "/macro/snapshot",
      "method": "GET",
      "description": "Macro economic snapshot API — dated Eurozone economic indicators for trading/research agents: euro-area inflation (HICP / CPI), ECB policy interest rates (deposit, refi), unemployment and EUR FX from the official European Central Bank data portal — each indicator with value, as_of date, next_release cadence and a signed dated snapshot receipt for reproducible backtests. The interest-rate, inflation and currency context an agent needs before trading.",
      "mimeType": "application/json",
      "price": "$0.005",
      "amount": "5000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "macro-data",
        "ecb",
        "inflation",
        "interest-rate",
        "economic-indicators"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "indicators": {
            "type": "string",
            "description": "Comma-separated: inflation_hicp, core_inflation, unemployment, deposit_facility_rate, main_refi_rate, marginal_lending_rate, fx_usd, fx_gbp, fx_jpy, fx_chf",
            "required": false
          },
          "area": {
            "type": "string",
            "description": "HICP reference area: 'U2' (euro area, default) or a country code e.g. 'FR','DE'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "COMPLETE",
          "confidence": 1.0,
          "reasons": [
            {
              "code": "INDICATORS_RETURNED",
              "label": "4/4 indicators resolved from official ECB series",
              "weight": -0.5
            }
          ],
          "query": {
            "indicators": [
              "inflation_hicp",
              "deposit_facility_rate",
              "unemployment",
              "fx_usd"
            ],
            "area": "U2"
          },
          "indicators": {
            "inflation_hicp": {
              "label": "HICP headline inflation (annual rate of change)",
              "unit": "% YoY",
              "series_key": "ICP/M.U2.N.000000.4.ANR",
              "source": "European Central Bank — Data Portal SDMX 2.1 (data-api.ecb.europa.eu)",
              "next_release": {
                "cadence": "monthly (flash ~end of reference month, final ~mid next month)",
                "authoritative_calendar": "https://www.ecb.europa.eu/press/calendars/statscal/html/index.en.html",
                "is_estimated": true,
                "note": "Exact date per the ECB official calendar."
              },
              "status": "ok",
              "value": 2.0,
              "as_of": "2026-05"
            },
            "deposit_facility_rate": {
              "label": "ECB deposit facility rate (DFR)",
              "unit": "% p.a.",
              "series_key": "FM/D.U2.EUR.4F.KR.DFR.LEV",
              "source": "European Central Bank — Data Portal SDMX 2.1 (data-api.ecb.europa.eu)",
              "next_release": {
                "cadence": "per ECB Governing Council monetary-policy meeting",
                "authoritative_calendar": "https://www.ecb.europa.eu/press/calendars/mgcgc/html/index.en.html",
                "is_estimated": true,
                "note": "Exact date per the ECB official calendar."
              },
              "status": "ok",
              "value": 2.0,
              "as_of": "2026-06-26"
            }
          },
          "signed_snapshot_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77f2e95c3eee40403453e942834b703383e15fca50d11fdd28633ca5dd9f9d",
            "claims": {
              "kind": "macro_snapshot",
              "area": "U2",
              "verdict": "COMPLETE",
              "values_hash": "9f1c2a3b4d5e6f70",
              "snapshot_at": "2026-06-29T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-05",
            "age_seconds": 2592000,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": true,
            "sources": [
              "European Central Bank — Data Portal SDMX 2.1 (data-api.ecb.europa.eu)"
            ],
            "values_hash": "9f1c2a3b4d5e6f70",
            "resolved": 4,
            "requested": 4
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Official ECB reference data (informational). Reference rates/values, not live market quotes. Not investment advice.",
          "cached": false
        }
      }
    },
    {
      "resource": "/solana/token-safety",
      "method": "GET",
      "description": "Solana SPL token safety, rug check and honeypot / scam detection before trading: is this Solana token a rug pull, honeypot or scam? Verdict SAFE/RISKY/CRITICAL + 0-100 score combining STATIC checks (mint/freeze authority, holder concentration) AND BEHAVIORAL analysis (liquidity, churn, recent dump, tx velocity) plus a blue-chip false-positive guard so USDC/USDT/SOL are never flagged. Pre-trade SPL token security / scam-token detection catching behavioral rugs static checkers miss.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "solana-token-safety",
        "rug-check",
        "honeypot",
        "behavioral-analysis",
        "spl-token-risk"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "mint": {
            "type": "string",
            "description": "SPL token mint address (base58), e.g. 'EPjFW...Dt1v' (USDC)",
            "required": true
          },
          "deep": {
            "type": "boolean",
            "description": "Deeper behavioral + holder analysis (more RPC calls)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "RISKY",
          "confidence": 0.8,
          "score": 62,
          "reasons": [
            {
              "code": "COMPOSITE_SCORE",
              "label": "Composite safety score 62/100",
              "weight": 0.2
            }
          ],
          "query": {
            "mint": "So11111111111111111111111111111111111111112",
            "deep": false
          },
          "static_flags": [
            {
              "code": "MINT_AUTHORITY_ACTIVE",
              "label": "Mint authority not renounced — supply can be inflated",
              "weight": 0.6
            }
          ],
          "behavioral_flags": [
            {
              "code": "LIQUIDITY_TO_FDV_THIN",
              "label": "Liquidity is 1.4% of FDV — top-heavy valuation",
              "weight": 0.5
            }
          ],
          "behavioral_status": "ok",
          "false_positive_guard": {
            "triggered": false,
            "note": "Not whitelisted; behavioral context applied to avoid static-only over-flagging."
          },
          "concentration": {
            "top1_share": 0.41,
            "top5_share": 0.66,
            "note": "Largest account may be an AMM/LP pool, not a malicious whale."
          },
          "market": {
            "liquidity_usd": 240000.0,
            "fdv_usd": 17000000.0,
            "volume_24h_usd": 980000.0,
            "price_change_24h_pct": -8.2,
            "pool_age_hours": 220.5,
            "symbol": "WIF",
            "dex": "raydium"
          },
          "mint_info": {
            "mint_authority": null,
            "freeze_authority": null,
            "decimals": 6,
            "is_token_2022": false
          },
          "sources_ok": {
            "solana_rpc": true,
            "dexscreener": true
          },
          "data_freshness": {
            "as_of": "2026-06-29T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": false,
            "sources": [
              "Solana RPC (mint, largest accounts, signatures)",
              "DexScreener (liquidity, pool age, price)"
            ],
            "behavioral_status": "ok"
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Automated heuristic safety check (static + behavioral), not financial advice. Always DYOR.",
          "cached": false
        }
      }
    },
    {
      "resource": "/solana/pre-trade",
      "method": "GET",
      "description": "All-in-one Solana pre-trade decision in ONE call: BUY-SAFE/CAUTION/AVOID fusing four scored modules — token security, EXECUTABLE liquidity depth (estimated slippage at $100/$1k/$10k), deployer history/control and holder concentration. Should I buy or avoid this Solana token? Full token due-diligence in one call — replaces 3-4 lookups; built for a trading / sniping agent's risk-review pipeline. Solana trading safety decision and buy/avoid verdict.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "solana-pre-trade",
        "trading-decision",
        "liquidity-depth",
        "deployer-history",
        "all-in-one"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "mint": {
            "type": "string",
            "description": "SPL token mint address (base58) to evaluate before buying",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "CAUTION",
          "confidence": 0.75,
          "composite_score": 64,
          "reasons": [
            {
              "code": "MODERATE_DEPTH",
              "label": "~3.1% impact on a $1k trade",
              "weight": 0.2
            },
            {
              "code": "AUTHORITIES_RENOUNCED",
              "label": "Mint & freeze authority renounced — deployer retains no control",
              "weight": -0.4
            }
          ],
          "query": {
            "mint": "EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"
          },
          "module_weights": {
            "token_security": 0.4,
            "liquidity_depth": 0.25,
            "deployer_history": 0.2,
            "holder_concentration": 0.15
          },
          "modules": {
            "token_security": {
              "sub_score": 70,
              "status": "ok",
              "static_flags": [],
              "behavioral_flags": [],
              "behavioral_status": "ok"
            },
            "liquidity_depth": {
              "status": "ok",
              "sub_score": 70,
              "liquidity_usd": 320000.0,
              "slippage_estimates": [
                {
                  "trade_usd": 100,
                  "est_price_impact_pct": 0.06
                },
                {
                  "trade_usd": 1000,
                  "est_price_impact_pct": 0.62
                },
                {
                  "trade_usd": 10000,
                  "est_price_impact_pct": 5.88
                }
              ],
              "reasons": [
                {
                  "code": "MODERATE_DEPTH",
                  "label": "~0.6% impact on a $1k trade",
                  "weight": 0.2
                }
              ],
              "note": "Estimated from pooled liquidity via a constant-product model; real slippage depends on routing."
            },
            "deployer_history": {
              "status": "renounced",
              "sub_score": 80,
              "controller": null,
              "reasons": [
                {
                  "code": "AUTHORITIES_RENOUNCED",
                  "label": "Mint & freeze authority renounced",
                  "weight": -0.4
                }
              ],
              "note": "Deployer no longer controls the mint."
            },
            "holder_concentration": {
              "status": "ok",
              "sub_score": 60,
              "top1_share": 0.34,
              "top5_share": 0.58,
              "reasons": [
                {
                  "code": "MODERATE_CONCENTRATION",
                  "label": "Top account 34%",
                  "weight": 0.2
                }
              ],
              "note": "Largest account may be an AMM/LP pool, not a malicious whale."
            }
          },
          "market": {
            "liquidity_usd": 320000.0,
            "fdv_usd": 9000000.0,
            "volume_24h_usd": 1200000.0,
            "price_change_24h_pct": 4.1,
            "pool_age_hours": 5200.0,
            "symbol": "WIF",
            "dex": "raydium"
          },
          "data_freshness": {
            "as_of": "2026-06-29T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": false,
            "sources": [
              "Solana RPC",
              "DexScreener"
            ],
            "kill_switch": false,
            "behavioral_status": "ok"
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "All-in-one pre-trade decision (security + executable depth + deployer + concentration). Heuristic, not advice. Always DYOR.",
          "cached": false
        }
      }
    },
    {
      "resource": "/crypto/signal-fusion",
      "method": "GET",
      "description": "Crypto trading signal (long/short) and market-regime signal in ONE call: LONG/SHORT/NEUTRAL with confidence, fusing the cross-exchange funding rate, crowding (long/short) bias, trend/chop market regime and BTC→altcoin lead-lag from Binance/Bybit/OKX/Hyperliquid — with declared data freshness. Should I go long or short on this coin? A fused directional trading signal where competitors sell the funding rate, regime and the four numbers separately. Derivatives trading signal for any altcoin.",
      "mimeType": "application/json",
      "price": "$0.02",
      "amount": "20000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "crypto-trading-signal",
        "funding-rate",
        "market-regime",
        "lead-lag",
        "signal-fusion"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "symbol": {
            "type": "string",
            "description": "Coin ticker, e.g. 'BTC','ETH','SOL'",
            "required": false
          },
          "timeframe": {
            "type": "string",
            "description": "Regime/lead-lag timeframe: 5m | 15m | 1h | 4h (default 1h)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "SHORT",
          "confidence": 0.71,
          "fused_score": -0.34,
          "reasons": [
            {
              "code": "FUNDING_VOTE",
              "label": "funding vote -0.40",
              "weight": -0.4
            },
            {
              "code": "CROWDING_VOTE",
              "label": "crowding vote -0.30",
              "weight": -0.3
            },
            {
              "code": "FUSED_SCORE",
              "label": "Fused directional score -0.34 from 4/4 components",
              "weight": -0.34
            }
          ],
          "query": {
            "symbol": "ETH",
            "timeframe": "1h"
          },
          "components": {
            "funding": {
              "available": true,
              "avg_funding_rate": 0.00021,
              "bias": "crowded_long_pays",
              "vote": -0.42,
              "interpretation": "High positive funding → contrarian bearish; negative → contrarian bullish."
            },
            "crowding": {
              "available": true,
              "avg_long_short_ratio": 1.9,
              "state": "crowded_long",
              "vote": -0.3,
              "interpretation": "Crowded long → contrarian short bias; crowded short → contrarian long bias."
            },
            "regime": {
              "available": true,
              "regime": "chop",
              "efficiency_ratio": 0.18,
              "direction": "down",
              "vote": 0.0,
              "interpretation": "Trend regime → momentum vote follows direction; chop → no momentum signal."
            },
            "lead_lag": {
              "available": true,
              "lead_lag_corr": 0.41,
              "btc_recent_return_pct": -1.2,
              "vote": -0.16,
              "interpretation": "If BTC leads this alt (positive lag corr), propagate BTC's recent direction."
            }
          },
          "component_weights": {
            "funding": 0.3,
            "crowding": 0.25,
            "regime": 0.3,
            "lead_lag": 0.15
          },
          "venues_used": [
            "binance",
            "bybit",
            "okx",
            "hyperliquid"
          ],
          "data_freshness": {
            "as_of": "2026-06-29T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-06-29T12:00:00Z",
            "deterministic": false,
            "sources": [
              "Binance/Bybit/OKX/Hyperliquid perp funding & OI",
              "Binance/Bybit klines (regime & lead-lag)"
            ],
            "components_available": [
              "funding",
              "crowding",
              "regime",
              "lead_lag"
            ],
            "venues": [
              "binance",
              "bybit",
              "okx",
              "hyperliquid"
            ]
          },
          "error": null,
          "timestamp": "2026-06-29T12:00:00Z",
          "disclaimer": "Fused directional signal from public market data, not financial advice. A signal is not a recommendation.",
          "cached": false
        }
      }
    },
    {
      "resource": "/agent/due-diligence",
      "method": "GET",
      "description": "Vet any company, crypto project, counterparty or domain before engaging: one call composes a risk DOSSIER — synthesis + detected signals + sources + 0-100 risk score + GO/CAUTION/STOP verdict + recommendation + a signed, offline-verifiable receipt. Is this entity a scam, fraud, sanctioned, or safe to deal with? Replaces 3-4 manual web searches plus the synthesis an agent would have to do itself, composed from live public web signals. Counterparty / vendor / project due-diligence for agents.",
      "mimeType": "application/json",
      "price": "$0.50",
      "amount": "500000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "due-diligence",
        "kyb",
        "counterparty-risk",
        "risk-dossier",
        "agent-decision"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "target": {
            "type": "string",
            "description": "Entity / project / counterparty / domain to vet, e.g. 'Acme DeFi Labs'",
            "required": true
          },
          "target_type": {
            "type": "string",
            "description": "Optional: entity | project | counterparty | domain | wallet",
            "required": false
          },
          "context": {
            "type": "string",
            "description": "Optional: why you're engaging / what you're about to do",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "CAUTION",
          "confidence": 0.62,
          "risk_score": 48,
          "summary": "Small DeFi project, limited public track record; some withdrawal complaints, no confirmed fraud.",
          "signals": [
            {
              "category": "reputation",
              "finding": "Forum complaints about delayed withdrawals.",
              "severity": "medium"
            }
          ],
          "recommendation": "Engage with capped exposure; request team identity and an audit first.",
          "sources": [
            {
              "title": "Acme DeFi review",
              "url": "https://example.com/acme-review"
            }
          ],
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "due_diligence_dossier",
              "target": "Acme DeFi Labs",
              "verdict": "CAUTION",
              "risk_score": 48,
              "mode": "llm"
            },
            "signature": "<hex>"
          },
          "timestamp": "2026-06-30T12:00:00Z",
          "disclaimer": "Composed from public web signals; not legal/financial advice.",
          "cached": false
        }
      }
    },
    {
      "resource": "/agent/analysis-report",
      "method": "GET",
      "description": "Structured analysis report on any URL, company, product or subject in one call: positioning + strengths + risks + opportunities + 0-100 actionable score + STRONG/MODERATE/WEAK rating + recommendation + provenance + a signed receipt. A fixed-schema research report an agent can consume without re-parsing, composed from live public web signals. Competitive / investment / partnership analysis for agents.",
      "mimeType": "application/json",
      "price": "$0.25",
      "amount": "250000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "analysis-report",
        "market-analysis",
        "competitive",
        "research",
        "agent-decision"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "input": {
            "type": "string",
            "description": "URL, company, product or subject, e.g. 'stripe.com'",
            "required": true
          },
          "focus": {
            "type": "string",
            "description": "Optional: investment | competitive | partnership | security | general",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "rating": "STRONG",
          "score": 82,
          "confidence": 0.7,
          "summary": "Category-leading payments platform with deep developer mindshare.",
          "positioning": "Premium developer-first payments infrastructure expanding into agentic commerce.",
          "strengths": [
            "Dominant developer adoption",
            "Broad product suite"
          ],
          "risks": [
            {
              "point": "Pricing pressure from cheaper processors",
              "severity": "medium"
            }
          ],
          "opportunities": [
            {
              "point": "Agentic / x402 payment rails",
              "potential": "high"
            }
          ],
          "recommendation": "Strong default; benchmark fees for high-volume use.",
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "analysis_report",
              "subject": "stripe.com",
              "rating": "STRONG",
              "score": 82,
              "mode": "llm"
            },
            "signature": "<hex>"
          },
          "timestamp": "2026-06-30T12:00:00Z",
          "disclaimer": "Composed from public web signals; not professional advice.",
          "cached": false
        }
      }
    },
    {
      "resource": "/agent/clearance",
      "method": "GET",
      "description": "Safety preflight before an agent runs a DESTRUCTIVE, costly or IRREVERSIBLE action (delete, deploy, transfer funds, publish, overwrite): risk assessment + reversibility check + timing + CLEAR/LIMIT/REVIEW/BLOCK verdict + a cryptographically SIGNED ClearancePacket (decision, approved amount, policy version, evidence hash, expiry, rationale) the agent keeps as proof of authorization. Agent action guardrail / clearance / human-in-the-loop gate; stops a mistake costlier than the call price.",
      "mimeType": "application/json",
      "price": "$0.25",
      "amount": "250000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "preflight",
        "action-clearance",
        "reversibility",
        "agent-safety",
        "guardrail"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "action": {
            "type": "string",
            "description": "Action about to run, e.g. 'delete the production users table'",
            "required": true
          },
          "action_type": {
            "type": "string",
            "description": "Optional: delete|deploy|send|spend|transfer|publish|email|overwrite|approve|rotate|shutdown|other",
            "required": false
          },
          "amount_usd": {
            "type": "number",
            "description": "Monetary stake in USD if applicable, e.g. 250",
            "required": false
          },
          "reversible": {
            "type": "boolean",
            "description": "Optional caller hint: is the action reversible?",
            "required": false
          },
          "target": {
            "type": "string",
            "description": "Optional target (table, address, repo, recipient)",
            "required": false
          },
          "context": {
            "type": "string",
            "description": "Optional extra context (environment, prior approval)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "REVIEW",
          "confidence": 0.9,
          "risk_score": 70,
          "reversibility": {
            "reversible": false,
            "source": "inferred",
            "destructive": false,
            "external_effect": false
          },
          "financial": {
            "amount_usd": 250.0,
            "band": "moderate",
            "approved_amount_usd": 500.0
          },
          "timing": {
            "evaluated_at": "2026-06-30T12:00:00Z",
            "expiry": "2026-06-30T12:05:00Z",
            "ttl_seconds": 300
          },
          "rationale": "Allowed but capped: IRREVERSIBLE, moderate financial stake.",
          "clearance_packet": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "agent_action_clearance",
              "decision": "REVIEW",
              "policy_version": "clearance-policy-2026-06-1",
              "approved_amount_usd": null,
              "reversible": false,
              "expiry": "2026-06-30T12:05:00Z"
            },
            "signature": "<hex>"
          },
          "timestamp": "2026-06-30T12:00:00Z",
          "disclaimer": "Automated clearance on a fixed policy; CLEAR is not a guarantee of safety.",
          "cached": false
        }
      }
    },
    {
      "resource": "/agent/output-qa",
      "method": "GET",
      "description": "Review and improve an agent's outbound text (email, social post, customer reply) before sending: a multi-criteria scorecard (clarity, spam-safety, tone, length, personalization, CTA, compliance — each 0-100) + poor/fair/good/excellent rating + top suggestions + a ready-to-send IMPROVED REWRITE. Will this message land or get flagged as spam? One call scores and rewrites. Output review / spam check / copy QA for agents.",
      "mimeType": "application/json",
      "price": "$0.10",
      "amount": "100000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "output-qa",
        "email-review",
        "content-scoring",
        "rewrite",
        "agent-decision"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "output": {
            "type": "string",
            "description": "The agent's outbound text to review (email, post, reply)",
            "required": true
          },
          "format": {
            "type": "string",
            "description": "Optional: email | social_post | customer_reply | other",
            "required": false
          },
          "goal": {
            "type": "string",
            "description": "Optional intended goal, e.g. 'book a demo'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "rating": "poor",
          "overall_score": 34,
          "criteria": {
            "clarity": 55,
            "spam_safety": 20,
            "tone": 40,
            "length": 60,
            "personalization": 30,
            "cta": 50,
            "compliance": 45
          },
          "criteria_legend": "Each 0-100, higher is better. spam_safety: 100 = not spammy.",
          "suggestions": [
            "Remove hype words and excessive exclamation marks.",
            "Personalize the opening.",
            "State a single clear CTA."
          ],
          "improved_version": "Hi Sam — I noticed your team is scaling outreach. Would a 15-minute demo this week be useful?",
          "timestamp": "2026-06-30T12:00:00Z",
          "disclaimer": "Automated rubric QA; guidance, not a deliverability guarantee.",
          "cached": false
        }
      }
    },
    {
      "resource": "/agent/content-scan",
      "method": "GET",
      "description": "Scan any external content before an agent INGESTS it (SKILL.md, web page, user input, tool output) for prompt-injection, data exfiltration, dangerous code execution, hidden/invisible unicode and instruction overrides: 0-100 risk score + SAFE/WARN/BLOCK verdict + structured findings with matched evidence. Is it safe to feed this content to my agent? A fast, cheap, deterministic, high-volume pre-ingest firewall. Prompt-injection / skill-audit / untrusted-content security check for agents.",
      "mimeType": "application/json",
      "price": "$0.10",
      "amount": "100000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "content-scan",
        "prompt-injection",
        "exfiltration",
        "agent-security",
        "safe-ingest"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "content": {
            "type": "string",
            "description": "Raw content to scan before ingestion (SKILL.md, web page, user input, tool output)",
            "required": true
          },
          "source_type": {
            "type": "string",
            "description": "Optional: skill | webpage | user_input | tool_output | document",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "BLOCK",
          "risk_score": 100,
          "finding_count": 2,
          "findings": [
            {
              "code": "DATA_EXFILTRATION",
              "label": "Instructs sending secrets/credentials to a destination",
              "severity": "critical",
              "match": "email your API key to"
            },
            {
              "code": "INSTRUCTION_OVERRIDE",
              "label": "Attempts to override prior instructions",
              "severity": "high",
              "match": "Ignore all previous instructions"
            }
          ],
          "timestamp": "2026-06-30T12:00:00Z",
          "disclaimer": "Heuristic pre-ingest scan; a SAFE verdict does not prove content is benign.",
          "cached": false
        }
      }
    },
    {
      "resource": "/crypto/pre-trade-verdict",
      "method": "GET",
      "description": "One-call GO/CAUTION/NO-GO pre-trade verdict for AI trading agents: fuses token safety (honeypot, rug, tax, holders), counterparty wallet sanctions screening (OFAC/mixer) and cross-exchange market signal into a single decision with a signed, offline-verifiable receipt. Should I buy this token now? Replaces three separate calls (token-safety + wallet-screen + signal) with one fused GO/NO-GO verdict. EVM chains and Solana.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "pre-trade-verdict",
        "token-safety",
        "go-no-go",
        "counterparty-screen",
        "trading-decision"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "token": {
            "type": "string",
            "description": "Token contract (EVM 0x+40hex) or SPL mint (base58) to evaluate",
            "required": true
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | bsc | polygon | arbitrum | optimism | avalanche | solana (default base)",
            "required": false
          },
          "wallet": {
            "type": "string",
            "description": "Optional counterparty wallet to screen (OFAC/mixer)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "GO",
          "confidence": 0.88,
          "reasons": [
            {
              "code": "SAFETY_OK",
              "label": "Token safety score 95/100 (low risk on automated checks).",
              "weight": -0.5
            },
            {
              "code": "SIGNAL_NEUTRAL",
              "label": "Cross-exchange signal is NEUTRAL.",
              "weight": 0.0
            }
          ],
          "query": {
            "chain": "base",
            "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "wallet": null
          },
          "components": {
            "token_safety": {
              "available": true,
              "kind": "evm",
              "safety_score": 95,
              "honeypot": false,
              "rating": "safe",
              "flags": [],
              "symbol": "USDC",
              "buy_tax_pct": 0.0,
              "sell_tax_pct": 0.0
            },
            "counterparty_screen": {
              "available": false,
              "reason": "no wallet supplied"
            },
            "market_signal": {
              "available": true,
              "symbol": "USDC",
              "signal": "NEUTRAL",
              "confidence": 0.5,
              "fused_score": 0.0
            }
          },
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "pre_trade_verdict",
              "chain": "base",
              "token": "0x8335...2913",
              "verdict": "GO",
              "safety_score": 95,
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": false,
            "sources": [
              "Internal token-safety",
              "Internal wallet-screen",
              "Internal signal-fusion"
            ],
            "components_available": [
              "token_safety",
              "market_signal"
            ]
          },
          "error": null,
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Fused pre-trade verdict from automated safety/screening/signal checks. Heuristic, not financial advice. Always DYOR.",
          "cached": false
        }
      },
      "llm_usage_prompt": "One-call GO/CAUTION/NO-GO pre-trade verdict fusing token safety (honeypot/rug/tax) + counterparty sanctions screening (OFAC/mixer) + cross-exchange market signal, with a signed receipt. Replaces three calls. EVM + Solana. Input: token (+chain, optional wallet)."
    },
    {
      "resource": "/agent/ledger",
      "method": "GET",
      "description": "Your AI agent's books in one call: structured USDC accounting for any wallet on Base (the x402 settlement asset) — revenue (incoming) vs expenses (outgoing), net, transaction count, top paying counterparties and payees, and a weekly breakdown over a 7d/30d/90d window. Turnkey bookkeeping / expense and revenue report an agent can drop straight into its accounting. The value is the structuring, not raw data access.",
      "mimeType": "application/json",
      "price": "$0.04",
      "amount": "40000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "agent-ledger",
        "x402-accounting",
        "usdc-bookkeeping",
        "revenue-expenses",
        "onchain-ledger"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "wallet": {
            "type": "string",
            "description": "EVM wallet address (0x + 40 hex) to report on",
            "required": true,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "period": {
            "type": "string",
            "description": "Reporting window: 7d | 30d | 90d | all (default 30d)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "wallet": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "period": "30d"
          },
          "summary": {
            "revenue_usdc": 19.42,
            "expenses_usdc": 2.1,
            "net_usdc": 17.32,
            "currency": "USDC",
            "tx_count": 221,
            "revenue_tx_count": 213,
            "expense_tx_count": 8,
            "unique_payers": 47,
            "unique_payees": 3,
            "avg_revenue_usdc": 0.09,
            "avg_expense_usdc": 0.26,
            "largest_revenue_usdc": 0.5,
            "largest_expense_usdc": 1.0,
            "first_activity": "2026-06-02T09:00:00Z",
            "last_activity": "2026-07-01T18:30:00Z"
          },
          "top_payers": [
            {
              "address": "0xabc...111",
              "volume_usdc": 3.2,
              "tx_count": 40
            }
          ],
          "top_payees": [
            {
              "address": "0xdef...222",
              "volume_usdc": 1.5,
              "tx_count": 4
            }
          ],
          "weekly_breakdown": [
            {
              "week": "2026-W27",
              "revenue_usdc": 5.1,
              "expenses_usdc": 0.3,
              "net_usdc": 4.8,
              "tx_count": 55
            }
          ],
          "notes": [
            "Revenue = incoming USDC (x402 settlements received); expenses = outgoing USDC.",
            "Ledger reflects USDC transfers on Base only; not every USDC transfer is an x402 payment."
          ],
          "data_freshness": {
            "as_of": "2026-07-01T18:30:00Z",
            "age_seconds": 51300,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": true,
            "sources": [
              "Base Blockscout USDC transfers"
            ],
            "period_days": 30,
            "row_count": 221
          },
          "source": "Base Blockscout USDC transfers (base.blockscout.com), settlement asset for x402",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Automated bookkeeping of on-chain USDC activity on Base; informational, not accounting/tax advice. Reconcile against your own records.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Structured USDC accounting for a wallet on Base: revenue vs expenses, net, tx count, top payers/payees, weekly breakdown. Your agent's books in one call. Input: wallet (+period 7d/30d/90d)."
    },
    {
      "resource": "/proof/notarize",
      "method": "GET",
      "description": "Notarize a document or data hash for AI agents: submit a SHA-256 hash (or short content hashed server-side) and get a timestamped, Ed25519-signed proof-of-existence receipt, verifiable offline with no callback. Prove an artifact, agent output or decision existed at a point in time. Honest scope: this is a SIGNED proof-of-existence receipt, NOT a blockchain-anchored or eIDAS/RFC-3161 legal timestamp. The issuer never sees your content when you send only a hash.",
      "mimeType": "application/json",
      "price": "$0.01",
      "amount": "10000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "notary",
        "proof-of-existence",
        "timestamp",
        "ed25519-signature",
        "hash-attestation"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "hash": {
            "type": "string",
            "description": "SHA-256 hex digest (64 hex chars) to notarize",
            "required": false,
            "pattern": "^[0-9a-fA-F]{64}$"
          },
          "content": {
            "type": "string",
            "description": "Alternative to hash: short content hashed server-side (SHA-256), max 100000 chars",
            "required": false
          },
          "memo": {
            "type": "string",
            "description": "Optional label bound into the signed proof, e.g. 'invoice #42'",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "proof": {
            "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
            "hash_algorithm": "sha256",
            "hashed_server_side": false,
            "memo": "invoice #42",
            "notarized_at": "2026-07-02T12:00:00Z"
          },
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "proof_of_existence",
              "algorithm": "sha256",
              "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
              "memo": "invoice #42",
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>",
            "canonicalization": "JSON sort_keys, separators (',',':'), UTF-8"
          },
          "anchoring": {
            "anchored": false,
            "method": null,
            "note": "Signed proof-of-existence receipt (Ed25519), NOT a blockchain-anchored timestamp."
          },
          "verification": {
            "how": "Recompute sha256(content); confirm equals proof.sha256; ed25519-verify signature over canonical claims.",
            "offline": true
          },
          "source": "Local Ed25519 proof-of-existence (no external source)",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Signed proof that this issuer observed the hash at the stated time. NOT a blockchain-anchored or legal (eIDAS/RFC 3161) timestamp.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Notarize a SHA-256 hash (or short content hashed server-side) into a timestamped, Ed25519-signed proof-of-existence receipt, verifiable offline. Signed proof, NOT a blockchain-anchored or legal (eIDAS/RFC 3161) timestamp. Input: hash or content (+memo)."
    },
    {
      "resource": "/crypto/token-dossier",
      "method": "GET",
      "description": "Full degen token dossier in one call: safety score + honeypot/tax + detailed TOP HOLDERS and concentration + liquidity/FDV/volume/pool-age + contract control (owner, creator, mintable, open-source) + an AI red-flag narrative. Deep due-diligence report on a token before aping — the premium tier above a plain safety check. EVM chains and Solana.",
      "mimeType": "application/json",
      "price": "$0.10",
      "amount": "100000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "token-dossier",
        "holders",
        "liquidity",
        "rug-check",
        "red-flags"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "token": {
            "type": "string",
            "description": "Token contract (EVM 0x+40hex) or SPL mint (base58)",
            "required": true
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | bsc | polygon | arbitrum | optimism | avalanche | solana (default base)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "chain": "base"
          },
          "safety": {
            "score": 95,
            "rating": "safe",
            "honeypot": false,
            "buy_tax_pct": 0.0,
            "sell_tax_pct": 0.0,
            "flags": []
          },
          "holders": {
            "count": "250000",
            "top": [
              {
                "address": "0xabc...",
                "percent": 0.08,
                "is_contract": true,
                "tag": "Aerodrome"
              }
            ],
            "top10_share_pct": 42.1
          },
          "liquidity": {
            "liquidity_usd": 5200000.0,
            "fdv_usd": 40000000000.0,
            "volume_24h_usd": 18000000.0,
            "price_usd": 1.0,
            "price_change_24h_pct": 0.01,
            "pool_age_hours": 9000.0,
            "dex": "aerodrome",
            "symbol": "USDC"
          },
          "contract": {
            "open_source": true,
            "mintable": true,
            "owner_address": null,
            "creator_address": null,
            "is_proxy": true,
            "can_take_back_ownership": false
          },
          "narrative": {
            "summary": "USDC is a fully-collateralized blue-chip stablecoin with deep liquidity; automated checks show no rug/honeypot signals.",
            "red_flags": [],
            "bottom_line": "Low automated risk; standard stablecoin.",
            "mode": "llm"
          },
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": false,
            "sources": [
              "GoPlus Security",
              "Honeypot.is",
              "DexScreener",
              "Claude Haiku (narrative)"
            ],
            "narrative_mode": "llm",
            "chain_kind": "evm"
          },
          "error": null,
          "source": "GoPlus Security + Honeypot.is + DexScreener + Claude Haiku (narrative)",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Automated token dossier (safety + holders + liquidity + narrative). Heuristic, not financial advice. Always DYOR.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Full token dossier: safety score + top holders + concentration + liquidity/FDV/pool-age + contract control (owner/creator/mintable) + AI red-flag narrative. Premium tier above a plain safety check. EVM + Solana. Input: token (+chain)."
    },
    {
      "resource": "/market/intel",
      "method": "GET",
      "description": "AI market intelligence report in one call for research and trading agents: cross-exchange perp derivatives (funding, open interest, long/short), fused directional signals and the euro-area macro snapshot (ECB inflation, policy rates, unemployment, EUR FX) synthesized into a headline, crypto and macro outlook, key signals, risks and opportunities. Multi-source market research report with a crypto + macro/EU lens.",
      "mimeType": "application/json",
      "price": "$0.10",
      "amount": "100000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "market-intelligence",
        "crypto-market-report",
        "macro",
        "derivatives",
        "research"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "focus": {
            "type": "string",
            "description": "crypto | macro | all (default all)",
            "required": false
          },
          "depth": {
            "type": "string",
            "description": "quick | deep — deep adds SOL and more web signals (default quick)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "focus": "all",
            "depth": "quick",
            "symbols": [
              "BTC",
              "ETH"
            ]
          },
          "report": {
            "headline": "Perp funding cools as ECB holds; crypto bias mixed.",
            "market_summary": "BTC/ETH funding is mildly positive with balanced long/short; the ECB deposit rate is steady, keeping macro neutral.",
            "crypto_outlook": {
              "bias": "neutral",
              "notes": "Funding and crowding near balanced across venues."
            },
            "macro_outlook": {
              "stance": "neutral",
              "notes": "ECB rates on hold; HICP near target."
            },
            "key_signals": [
              {
                "signal": "ETH funding positive",
                "implication": "mild contrarian caution"
              }
            ],
            "risks": [
              "Thin summer liquidity"
            ],
            "opportunities": [
              "Funding-arb between venues"
            ],
            "mode": "llm"
          },
          "data": {
            "derivatives": {
              "BTC": {
                "aggregate": {
                  "crowding": "balanced"
                }
              }
            },
            "signals": {
              "BTC": {
                "verdict": "NEUTRAL"
              }
            },
            "macro": {
              "indicators": {
                "deposit_facility_rate": {
                  "value": 2.0,
                  "as_of": "2026-06-26"
                }
              }
            }
          },
          "provenance": {
            "sources": [
              {
                "title": "Crypto market today",
                "url": "https://example.com"
              }
            ],
            "internal": [
              "Binance/Bybit/OKX/Hyperliquid perp derivatives",
              "Cross-exchange signal fusion",
              "ECB SDMX macro"
            ],
            "synthesis": "Claude Haiku"
          },
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": false,
            "sources": [
              "perp derivatives",
              "signal fusion",
              "ECB macro",
              "web",
              "Haiku"
            ],
            "mode": "llm",
            "live_web": true
          },
          "error": null,
          "source": "Multi-source: perp derivatives + signal fusion + ECB macro + web + Claude Haiku",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Synthesized market intelligence from public market data and web signals. Informational, not investment advice.",
          "cached": false
        }
      },
      "llm_usage_prompt": "AI market intelligence report: cross-exchange perp derivatives (funding/OI/long-short) + fused directional signals + euro-area ECB macro (inflation, rates, unemployment, FX) synthesized into headline, crypto and macro outlook, key signals, risks, opportunities. Input: focus (crypto/macro/all), depth."
    },
    {
      "resource": "/crypto/wallet-forensics",
      "method": "GET",
      "description": "Multi-hop wallet forensics for AI agents: traverse an address's ERC-20 counterparty graph across 1-3 hops and get the flow graph (nodes + edges), ranked counterparties (direction, tokens, activity) and detected patterns — flow concentration, circular flows, linked/clustered wallets and high-degree hubs (exchange/mixer/deployer) — plus a signed receipt. Trace where funds move and who is connected. EVM chains.",
      "mimeType": "application/json",
      "price": "$0.15",
      "amount": "150000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "wallet-forensics",
        "flow-graph",
        "counterparties",
        "multi-hop",
        "pattern-detection"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "wallet": {
            "type": "string",
            "description": "EVM wallet address (0x + 40 hex) to investigate",
            "required": true,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "depth": {
            "type": "integer",
            "description": "Graph hops to traverse: 1, 2 or 3 (default 2)",
            "required": false
          },
          "chain": {
            "type": "string",
            "description": "base | ethereum | optimism | polygon | arbitrum | gnosis (default base)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "wallet": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
            "depth": 2,
            "chain": "base"
          },
          "header": {
            "available": true,
            "portfolio_value_usd": 5200000.0,
            "token_count": 42,
            "ofac_listed": false,
            "risk_flags": []
          },
          "graph_summary": {
            "hops_traversed": 2,
            "direct_counterparties": 38,
            "nodes_sampled": 61,
            "edges_sampled": 40,
            "total_direct_transfers": 512
          },
          "top_counterparties": [
            {
              "address": "0xabc...",
              "direction": "bidirectional",
              "in_count": 12,
              "out_count": 9,
              "degree": 21,
              "tokens": [
                "USDC",
                "WETH"
              ],
              "last_activity": "2026-07-01T10:00:00Z"
            }
          ],
          "graph_edges": [
            {
              "from": "0xd8da...6045",
              "to": "0xabc...",
              "hop": 1,
              "degree": 21
            },
            {
              "from": "0xabc...",
              "to": "0xdef...",
              "hop": 2,
              "degree": 8
            }
          ],
          "patterns": [
            {
              "pattern": "HIGH_DEGREE_HUB",
              "severity": "info",
              "detail": "1 counterparty shows hub-like activity.",
              "weight": 0.1,
              "examples": [
                "0xabc..."
              ]
            }
          ],
          "reasons": [
            {
              "code": "HIGH_DEGREE_HUB",
              "label": "1 counterparty shows hub-like activity.",
              "weight": 0.1
            }
          ],
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "wallet_forensics",
              "wallet": "0xd8dA6BF...6045",
              "chain": "base",
              "depth": 2,
              "direct_counterparties": 38,
              "patterns": [
                "HIGH_DEGREE_HUB"
              ],
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": true,
            "sources": [
              "EVM Blockscout ERC-20 transfer graph (multi-hop) + OFAC SDN list"
            ],
            "chain": "base",
            "depth": 2,
            "fan_out_capped": true
          },
          "source": "EVM Blockscout ERC-20 transfer graph (multi-hop) + OFAC SDN list",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Best-effort flow forensics from a sampled ERC-20 transfer graph (fan-out and history capped). Heuristic roles. Not legal/financial advice.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Multi-hop wallet forensics: ERC-20 counterparty flow graph (1-3 hops), ranked counterparties, pattern detection (flow concentration, circular flows, linked wallets, high-degree hubs) + signed receipt. Input: wallet (+depth 1-3, chain)."
    },
    {
      "resource": "/chain/events",
      "method": "GET",
      "description": "On-demand, decoded on-chain events for AI agents: query a contract's event logs on Base (eth_getLogs) and get normalized, human-readable events — Transfer, Approval, ERC-1155 TransferSingle/Batch, Uniswap V2/V3 Swap, Sync, Mint, Burn — with raw topics for unknown signatures. Filter by event name, full signature or topic0, and by block range or lookback. Decoded event feed with no RPC setup, block span capped.",
      "mimeType": "application/json",
      "price": "$0.05",
      "amount": "50000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "onchain-events",
        "eth-getlogs",
        "event-logs",
        "decoded-events",
        "base"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "contract": {
            "type": "string",
            "description": "Contract address to read logs from (0x + 40 hex)",
            "required": true,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "event": {
            "type": "string",
            "description": "Event name (Transfer/Approval/Swap/Mint/Burn/TransferSingle/Sync), full signature 'Transfer(address,address,uint256)', or 0x topic0. Omit for all.",
            "required": false
          },
          "from_block": {
            "type": "integer",
            "description": "Start block (inclusive). Omit to use lookback.",
            "required": false
          },
          "to_block": {
            "type": "integer",
            "description": "End block (inclusive). Omit for latest.",
            "required": false
          },
          "lookback": {
            "type": "integer",
            "description": "If from/to omitted, scan the last N blocks (1-5000, default 2000)",
            "required": false
          },
          "limit": {
            "type": "integer",
            "description": "Max events (1-100, most recent in range)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "query": {
            "contract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "event": "Transfer",
            "topic0": "0xddf252ad...b3ef",
            "from_block": 33810000,
            "to_block": 33810500,
            "lookback": 500,
            "limit": 10
          },
          "block_range": {
            "from_block": 33810000,
            "to_block": 33810500,
            "latest_block": 33810500,
            "span": 500
          },
          "count": 1,
          "total_in_range": 1,
          "truncated": false,
          "events": [
            {
              "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
              "block_number": 33810480,
              "tx_hash": "0xabc...",
              "log_index": 12,
              "topic0": "0xddf252ad...b3ef",
              "event": "Transfer",
              "signature": "Transfer(address,address,uint256)",
              "decoded": true,
              "params": {
                "from": "0x1111...",
                "to": "0x2222...",
                "value": 1500000
              }
            }
          ],
          "rpc": {
            "provider": "alchemy",
            "fallback_used": false
          },
          "decoders": [
            "Approval",
            "Burn",
            "Mint",
            "Swap(V2)",
            "Swap(V3)",
            "Sync",
            "Transfer",
            "TransferBatch",
            "TransferSingle"
          ],
          "source": "Base JSON-RPC eth_getLogs (Alchemy, fallback public RPC)",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Decoded from public on-chain logs; unknown event signatures are returned raw. Block span and result count are capped.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Decoded, normalized on-chain events via eth_getLogs on Base: Transfer, Approval, ERC-1155 TransferSingle/Batch, Uniswap V2/V3 Swap, Sync, Mint, Burn — raw topics for unknown signatures. Filter by event name/signature/topic0 and block range. Input: contract (+event, block range/lookback)."
    },
    {
      "resource": "/x402/seller-audit",
      "method": "GET",
      "description": "Deep audit of an x402/ACP seller before trusting it: give a seller wallet or domain and get a full report — on-chain settlement reputation (settlements, unique counterparties, wash-trade/sybil, OFAC), the seller's advertised endpoints (from its /.well-known/x402.json), on-chain liveness, web reputation and red flags — fused into a TRUSTED/CAUTION/AVOID verdict with a signed, offline-verifiable receipt. Deeper than a pass/fail badge: the full seller due-diligence dossier for agentic payments.",
      "mimeType": "application/json",
      "price": "$0.50",
      "amount": "500000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "x402-seller-audit",
        "seller-reputation",
        "endpoint-audit",
        "due-diligence",
        "counterparty-risk"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "seller": {
            "type": "string",
            "description": "Seller wallet (0x + 40 hex) or domain, e.g. 'api.example.com'",
            "required": true
          },
          "depth": {
            "type": "string",
            "description": "On-chain depth: 'shallow' (~200 settlements) or 'deep' (~500)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "TRUSTED",
          "confidence": 0.78,
          "query": {
            "seller": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "depth": "shallow",
            "resolved_wallet": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "domain": null
          },
          "identity": {
            "is_wallet_input": true,
            "resolved_wallet": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
            "domain": null,
            "discovery_available": false,
            "discovery_error": "wallet input"
          },
          "onchain_reputation": {
            "available": true,
            "error": null,
            "verdict": "TRUSTED",
            "trust_score": 88,
            "confidence": 0.82,
            "metrics": {
              "settlement_count": 213,
              "unique_counterparties": 47,
              "wallet_age_days": 168.0
            }
          },
          "endpoints": {
            "count": 0,
            "advertised": []
          },
          "liveness": {
            "available": true,
            "last_settlement": "2026-07-01T18:30:00Z",
            "last_settlement_age_seconds": 51300,
            "active_last_30d": true,
            "wallet_age_days": 168.0,
            "note": "Liveness from on-chain settlement recency (real), not home probing."
          },
          "directory_uptime": {
            "available": false,
            "source": "402index.io",
            "reason": "public directory uptime not retrievable",
            "note": "Use on-chain settlement recency as liveness."
          },
          "reputation": {
            "level": "strong",
            "notes": "Healthy diverse settlement graph, no sanctions or wash-trade signals."
          },
          "red_flags": [],
          "summary": "Wallet shows a healthy, diverse on-chain settlement history with no OFAC or wash-trade signals; reputation is strong.",
          "recommendation": "Safe to transact; monitor for changes on large commitments.",
          "reasons": [
            {
              "code": "ONCHAIN_VERDICT",
              "label": "On-chain seller-trust: TRUSTED (score 88)",
              "weight": -0.2
            }
          ],
          "web_sources": [
            {
              "title": "x402-endpoints",
              "url": "https://x402-endpoints.onrender.com"
            }
          ],
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "x402_seller_audit",
              "seller": "0x1D1B...620f",
              "verdict": "TRUSTED",
              "onchain_trust_score": 88,
              "endpoints_advertised": 0,
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": false,
            "sources": [
              "seller discovery",
              "seller-trust",
              "web signals",
              "Claude Haiku"
            ],
            "mode": "llm"
          },
          "error": null,
          "source": "Seller discovery + seller-trust + web signals + Claude Haiku",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Composed x402 seller audit from on-chain settlement data, advertised discovery and public web signals. Uptime not home-probed. Heuristic, not legal/financial advice.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Deep x402 seller audit: on-chain settlement reputation (wash-trade/sybil/OFAC) + advertised endpoints from its /.well-known/x402.json + on-chain liveness + web reputation fused into TRUSTED/CAUTION/AVOID with a signed receipt. Deeper than a pass/fail badge. Input: seller wallet or domain."
    },
    {
      "resource": "/agent/clearance-packet",
      "method": "GET",
      "description": "Signed clearance packet an AI agent buys BEFORE a large capital move: one call fuses OFAC/sanctions + mixer screening, multi-hop fund-flow forensics (layering, concentration, hubs) and counterparty settlement trust into a CLEAR/REVIEW/BLOCK verdict with the evaluated amount, a policy-bounded approved amount, a short expiry and an Ed25519 signature verifiable offline. Can I send this capital to THIS wallet? Pre-payment AML/KYT clearance and counterparty due-diligence for agents.",
      "mimeType": "application/json",
      "price": "$1.50",
      "amount": "1500000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "clearance-packet",
        "pre-tx-clearance",
        "aml-screening",
        "wallet-forensics",
        "counterparty-risk"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "to": {
            "type": "string",
            "description": "Counterparty EVM wallet the capital will move to (0x + 40 hex)",
            "required": true,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          },
          "amount_usd": {
            "type": "number",
            "description": "Capital about to move, in USD, e.g. 800 — scopes the verdict and approved amount",
            "required": true
          },
          "depth": {
            "type": "integer",
            "description": "Forensics graph hops: 1, 2 or 3 (default 2)",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "REVIEW",
          "confidence": 0.79,
          "risk_score": 55,
          "evaluated_amount_usd": 800.0,
          "approved_amount_usd": 100.0,
          "currency": "USD",
          "reasons": [
            {
              "code": "AMOUNT_EXCEEDS_CEILING",
              "label": "Requested $800 exceeds what this counterparty's history supports ($100).",
              "weight": 0.4
            }
          ],
          "components": {
            "sanctions_screen": {
              "verdict": "PASS"
            },
            "fund_forensics": {
              "patterns": [
                "FLOW_CONCENTRATION"
              ]
            },
            "counterparty_trust": {
              "verdict": "ABSTAIN",
              "trust_score": 55
            }
          },
          "timing": {
            "expiry": "2026-07-02T12:10:00Z",
            "ttl_seconds": 600
          },
          "evidence_hash": "a1b2c3...",
          "clearance_packet": {
            "available": true,
            "algorithm": "ed25519",
            "claims": {
              "kind": "capital_clearance_packet",
              "decision": "REVIEW",
              "evaluated_amount_usd": 800.0,
              "approved_amount_usd": 100.0,
              "expiry": "2026-07-02T12:10:00Z"
            },
            "signature": "<hex>"
          },
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Signed pre-capital-move clearance; amount-scoped. Not legal/financial advice.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Signed clearance packet before an agent moves significant capital to a wallet: fuses OFAC/sanctions + mixer screening, multi-hop fund-flow forensics (circular/layering, concentration, hubs) and on-chain counterparty settlement trust into one CLEAR/REVIEW/BLOCK verdict with the evaluated amount, a policy-bounded approved amount, a short expiry and an Ed25519 signature verifiable offline. Pre-payment AML/KYT clearance and counterparty due-diligence for autonomous agents. Input: to (counterparty wallet) + amount_usd (+ optional depth)."
    },
    {
      "resource": "/agent/visibility-audit",
      "method": "GET",
      "description": "Audit how discoverable an x402 agent/seller is across the agent registries (CDP Bazaar, 402index): keyword-RELEVANCE rank per category (not raw settled-volume rank), a metadata-quality score of your advertised endpoints (schema, output.example, tags, llm_usage_prompt), settle activity, a top-3 benchmark, prioritized fixes, and a DELTA vs a signed snapshot you carry back. Why am I not being found and how do I climb? GEO/AEO discovery audit for x402 sellers, Ed25519-signed.",
      "mimeType": "application/json",
      "price": "$1.00",
      "amount": "1000000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "visibility-audit",
        "discoverability",
        "bazaar-ranking",
        "aeo-geo",
        "discovery-seo"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "seller": {
            "type": "string",
            "description": "Seller to audit: wallet (0x + 40 hex) or origin URL/domain, e.g. 'api.example.com' or '0x1D1B...620f'",
            "required": true
          },
          "snapshot": {
            "type": "string",
            "description": "Optional: the signed_snapshot JSON from a previous audit, to compute a dated delta",
            "required": false
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "overall_score": 62,
          "scores": {
            "metadata": 78,
            "keyword_rank": 45,
            "settle_activity": 55
          },
          "summary": "Solid metadata but mid-pack keyword rank (#14 for 'kyb', absent for 'compliance'). Top fix: add a real output.example to endpoints missing one.",
          "identity": {
            "declared_name": "Example x402 API",
            "discovery_available": true,
            "endpoints_scored": 6
          },
          "keyword_rank": {
            "category_keywords": [
              "kyb",
              "compliance",
              "vat"
            ],
            "best_rank": 14,
            "note": "Keyword-relevance rank in CDP Bazaar discovery (not settled-volume rank).",
            "bazaar_available": true
          },
          "benchmark": {
            "available": true,
            "category": "kyb",
            "top3": [
              "https://a.com/x",
              "https://b.com/y",
              "https://c.com/z"
            ]
          },
          "settle_activity": {
            "available": true,
            "verdict": "CAUTION",
            "trust_score": 62,
            "settlement_count": 11
          },
          "prioritized_fixes": [
            {
              "issue": "output_example",
              "endpoints_affected": 3,
              "impact": 90,
              "fix": "Add a real output.example to each endpoint."
            }
          ],
          "delta": {
            "available": true,
            "since": "2026-06-28T12:00:00Z",
            "overall_delta": 9,
            "per_keyword": [
              {
                "keyword": "kyb",
                "previous_rank": 28,
                "current_rank": 14,
                "places_gained": 14
              }
            ]
          },
          "signed_snapshot": {
            "available": true,
            "algorithm": "ed25519",
            "claims": {
              "kind": "agent_visibility_snapshot",
              "seller": "api.example.com",
              "overall_score": 62,
              "best_keyword_ranks": {
                "kyb": 14
              },
              "as_of": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "snapshot_usage": "Pass signed_snapshot back as ?snapshot= next time for a dated delta.",
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Discoverability audit; scores/deltas deterministic and signed, summary is explanation only. Not a guarantee of placement.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Discoverability audit of an x402 agent/seller across the agent registries (CDP Bazaar, 402index): keyword-relevance rank per category (not raw settled-volume rank), metadata-quality score of advertised endpoints (description density, typed input schema, output.example, tags, llm_usage_prompt), on-chain settle activity, top-3 competitor benchmark, impact-prioritized fixes, and a signed delta vs a previous snapshot you carry back. Why am I not being found and how do I climb? Discovery/GEO/AEO audit for x402 sellers. Input: seller (wallet or origin domain) (+ optional prior signed snapshot)."
    },
    {
      "resource": "/agent/rank-check",
      "method": "GET",
      "description": "Quick check of where an x402 seller ranks RIGHT NOW by keyword-relevance in the CDP Bazaar discovery (not the raw settled-volume rank the free explorers show): best rank + per-category-keyword rank in one cheap call, plus a pointer to the full /agent/visibility-audit when the rank slips. The frequent pulse for monitoring your x402 discoverability. Where do I rank now? Am I being out-ranked on my category keywords?",
      "mimeType": "application/json",
      "price": "$0.10",
      "amount": "100000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "rank-check",
        "x402-discoverability",
        "bazaar-ranking",
        "keyword-rank",
        "discovery-monitor"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "seller": {
            "type": "string",
            "description": "Seller to check: wallet (0x + 40 hex) or origin URL/domain, e.g. 'api.example.com'",
            "required": true
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "seller": "api.example.com",
          "best_rank": 14,
          "headline": "Best rank #14 (outside the top 10) — you're being out-ranked.",
          "per_keyword": [
            {
              "keyword": "kyb",
              "rank": 14,
              "scanned": 20
            },
            {
              "keyword": "compliance",
              "rank": null,
              "scanned": 20
            }
          ],
          "category_keywords": [
            "kyb",
            "compliance",
            "vat"
          ],
          "recommendation": "Rank is slipping on ['compliance'] → run /agent/visibility-audit for the metadata score, prioritized fixes and a signed delta over time.",
          "upsell": "/agent/visibility-audit",
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "public_key": "5b77...9f9d",
            "claims": {
              "kind": "agent_rank_check",
              "seller": "api.example.com",
              "best_rank": 14,
              "best_keyword_ranks": {
                "kyb": 14,
                "compliance": null
              },
              "as_of": "2026-07-02T12:00:00Z",
              "issuer": "x402-endpoints.onrender.com",
              "issued_at": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "note": "Keyword-RELEVANCE rank in CDP Bazaar discovery/search — not the raw settled-volume rank the free explorers show.",
          "data_freshness": {
            "as_of": "2026-07-02T12:00:00Z",
            "age_seconds": 0,
            "retrieved_at": "2026-07-02T12:00:00Z",
            "deterministic": true,
            "sources": [
              "CDP Bazaar discovery/search (keyword-relevance rank per category)"
            ]
          },
          "error": null,
          "timestamp": "2026-07-02T12:00:00Z",
          "cached": false
        }
      },
      "llm_usage_prompt": "Quick keyword-relevance rank of an x402 seller in CDP Bazaar discovery (not the raw settled-volume rank the free explorers show): best rank + per-category-keyword rank in one cheap call, plus a pointer to the full visibility-audit when the rank slips. The frequent pulse for monitoring x402 discoverability. Input: seller (wallet or origin domain)."
    },
    {
      "resource": "/agent/passport",
      "method": "GET",
      "description": "Measured-vs-declared reputation dossier for an AI agent, Sybil-corrected. Give an ERC-8004 agent id or wallet: reads the on-chain ERC-8004 Identity + Reputation registries on Base, computes the DECLARED reputation (reviews/reviewers/values) then the MEASURED, Sybil-corrected reputation (owner agent-farming, footprint-less reviewers, review concentration, unbacked-by-settlement), returns the DELTA + a signed offline-verifiable verdict. Real or inflated? Audit-grade due-diligence.",
      "mimeType": "application/json",
      "price": "$1.00",
      "amount": "1000000",
      "scheme": "exact",
      "network": "eip155:8453",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "pay_to": "0x1D1B81247C407521E2A01F3E21514870dcf1620f",
      "maxTimeoutSeconds": 300,
      "tags": [
        "agent-passport",
        "erc-8004",
        "agent-reputation",
        "sybil-detection",
        "due-diligence"
      ],
      "input": {
        "type": "http",
        "method": "GET",
        "queryParams": {
          "agent_id": {
            "type": "integer",
            "description": "ERC-8004 agent identity tokenId (IdentityRegistry). Provide this OR wallet.",
            "required": false
          },
          "wallet": {
            "type": "string",
            "description": "Agent wallet (0x + 40 hex); resolved to its ERC-8004 agentId. Provide this OR agent_id.",
            "required": false,
            "pattern": "^0x[a-fA-F0-9]{40}$"
          }
        }
      },
      "output": {
        "type": "json",
        "example": {
          "verdict": "INFLATED",
          "headline": "Declared reputation is largely Sybil-inflated / unbacked — do not rely on it.",
          "erc8004_identity": true,
          "declared": {
            "available": true,
            "score": 68,
            "distinct_reviewers": 8,
            "feedback_count": 47
          },
          "measured": {
            "available": true,
            "score": 12,
            "sybil_penalty": 0.82
          },
          "delta": {
            "value": 56,
            "interpretation": "declared reputation is inflated vs measured reality"
          },
          "sybil_signals": {
            "owner_agent_farm": {
              "value": 1.0,
              "detail": "Owner holds 56 agent NFTs (Sybil farm)."
            },
            "reviewer_no_footprint": {
              "value": 1.0,
              "detail": "8/8 sampled reviewers are footprint-less burner wallets."
            },
            "unbacked_by_settlement": {
              "value": 1.0,
              "detail": "No real settlements back the 47 declared feedbacks."
            }
          },
          "settlement_backing": {
            "available": true,
            "verdict": "ABSTAIN",
            "settlement_count": 0
          },
          "identity": {
            "agent_id": 0,
            "owner": "0x67722c82...",
            "agents_owned_by_owner": 56
          },
          "summary": "Declares 68/100 (47 feedbacks) but measured 12/100: reviewers are burner wallets, tags are 'test', owner holds 56 agent NFTs (Sybil farm). The 56-point gap = manufactured reputation.",
          "signed_receipt": {
            "available": true,
            "algorithm": "ed25519",
            "claims": {
              "kind": "agent_passport",
              "agent_id": 0,
              "declared_score": 68,
              "measured_score": 12,
              "delta": 56,
              "verdict": "INFLATED",
              "as_of": "2026-07-02T12:00:00Z"
            },
            "signature": "<hex>"
          },
          "timestamp": "2026-07-02T12:00:00Z",
          "disclaimer": "Measured-vs-declared ERC-8004 dossier; scores/delta deterministic and signed. Sybil correction heuristic (arXiv:2606.26028). Not legal/financial advice.",
          "cached": false
        }
      },
      "llm_usage_prompt": "Measured-vs-declared ERC-8004 agent reputation dossier, Sybil-corrected: reads the on-chain ERC-8004 Identity + Reputation registries on Base, computes the declared reputation (review count/reviewers/values) then the measured, Sybil-corrected reputation (owner agent-farming, footprint-less reviewers, review concentration, value uniformity, placeholder tags, unbacked-by-settlement), and returns the delta + a signed offline-verifiable verdict. Is this agent's reputation real or inflated? Audit-grade counterparty due-diligence. Input: agent_id (ERC-8004 tokenId) OR wallet."
    }
  ]
}
