{
 "name": "Forge Agent Hub",
 "description": "Pay-per-call tools for AI agents, x402 V2 (USDC on Base). Wave 1 tools Worker.",
 "updated": "2026-11-10",
 "hub": "https://agent-hub.dentreprise.workers.dev",
 "hub_catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json",
 "base_url": "https://forge-tools.dentreprise.workers.dev",
 "openapi": "https://forge-tools.dentreprise.workers.dev/openapi.json",
 "llms_txt": "https://forge-tools.dentreprise.workers.dev/llms.txt",
 "well_known_x402": "https://forge-tools.dentreprise.workers.dev/.well-known/x402",
 "payment": {
  "protocol": "x402",
  "x402Version": 2,
  "scheme": "exact",
  "network": "eip155:8453",
  "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "asset_symbol": "USDC",
  "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
 },
 "tools": [
  {
   "id": "x402-compliance",
   "route": "/api/x402-compliance",
   "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "x402-dev",
   "category_label": "x402 developer tools",
   "description": "x402 V2 compliance tester: probes any paid endpoint without paying and checks the 402 challenge (PAYMENT-REQUIRED header, x402Version 2, accepts[] schema, CAIP-2 network, atomic amount, canonical USDC asset, payTo, maxTimeoutSeconds, EIP-712 extra, resource, Bazaar extension, CORS) and that free 200s or forged payment headers never unlock the resource. Returns score, verdict and per-check details.",
   "input_example": {
    "url": "https://x402-gateway.forge-x402.workers.dev/api/fx?from=EUR&to=USD"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Paid endpoint URL to test"
     },
     "method": {
      "type": "string",
      "description": "GET (default) or POST"
     }
    },
    "required": [
     "url"
    ]
   },
   "output_example": {
    "verdict": "compliant",
    "score": 100,
    "summary": {
     "pass": 14,
     "warn": 0,
     "fail": 0
    },
    "checks": [
     {
      "id": "status_402",
      "status": "pass"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/x402-compliance",
   "related_tools": [
    {
     "route": "/api/x402-listing-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check"
    },
    {
     "route": "/api/x402-manifest-from-openapi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    },
    {
     "route": "/api/x402-facilitator-health",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    }
   ]
  },
  {
   "id": "a2a-agent-card",
   "route": "/api/a2a-agent-card",
   "url": "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "agent-dev",
   "category_label": "Agent builder tools",
   "description": "A2A Agent Card validator and generator (A2A 1.0, detects and flags v0.3 cards): supportedInterfaces, protocolBinding/protocolVersion, capabilities, media-type modes, skills, provider, security schemes/requirements, JWS signature structure. Validate by URL (fetches /.well-known/agent-card.json) or inline JSON; or mode=generate from name, description, endpoint and skills.",
   "input_example": {
    "url": "https://example.com"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Agent origin or card URL"
     },
     "card": {
      "type": "object",
      "description": "Inline Agent Card JSON (POST)"
     },
     "mode": {
      "type": "string",
      "description": "validate (default) or generate"
     },
     "name": {
      "type": "string",
      "description": "generate: agent name"
     },
     "description": {
      "type": "string",
      "description": "generate: description"
     },
     "endpoint": {
      "type": "string",
      "description": "generate: A2A endpoint https URL"
     },
     "skills": {
      "type": "string",
      "description": "generate: JSON array or comma-separated skill names"
     }
    },
    "required": []
   },
   "output_example": {
    "mode": "validate",
    "spec_version_detected": "1.0",
    "valid": true,
    "errors": 0,
    "warnings": 1,
    "issues": []
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/a2a-agent-card",
   "related_tools": [
    {
     "route": "/api/mcp-manifest-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    },
    {
     "route": "/api/json-schema-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    },
    {
     "route": "/api/mcp-inspect",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect"
    }
   ]
  },
  {
   "id": "mcp-manifest-lint",
   "route": "/api/mcp-manifest-lint",
   "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "mcp-dev",
   "category_label": "MCP developer tools",
   "description": "MCP manifest linter: validates an MCP registry server.json (official schema 2025-12-11: reverse-DNS name, 100-char description, pinned versions, packages registryType/transport, remotes, env vars, isSecret, fileSha256, additionalProperties) or a host config (mcpServers/servers: command vs url, args, env, hard-coded secrets). Inline JSON or URL.",
   "input_example": {
    "manifest": {
     "name": "io.github.example/weather",
     "description": "Weather MCP",
     "version": "1.0.0",
     "remotes": [
      {
       "type": "streamable-http",
       "url": "https://example.com/mcp"
      }
     ]
    }
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "URL of server.json or config"
     },
     "manifest": {
      "type": "object",
      "description": "Inline server.json or host config (POST)"
     },
     "kind": {
      "type": "string",
      "description": "server_json or host_config (auto-detected)"
     }
    },
    "required": []
   },
   "output_example": {
    "kind": "server_json",
    "valid": true,
    "errors": 0,
    "warnings": 1,
    "registry_ready": false,
    "issues": [
     {
      "level": "warning",
      "path": "$schema"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/mcp-manifest-lint",
   "related_tools": [
    {
     "route": "/api/mcp-inspect",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect"
    },
    {
     "route": "/api/openapi-to-mcp",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    },
    {
     "route": "/api/a2a-agent-card",
     "url": "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card"
    }
   ]
  },
  {
   "id": "x402-manifest-from-openapi",
   "route": "/api/x402-manifest-from-openapi",
   "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "x402-dev",
   "category_label": "x402 developer tools",
   "description": "Turn an OpenAPI 3.x / Swagger 2.0 spec (JSON or YAML, URL or inline) into a ready-to-mount x402 V2 paywall: per-operation accepts[] (exact, CAIP-2 network, atomic USDC amount, payTo, EIP-712 extra), @x402/core route config, Bazaar discovery input/output schemas, a /.well-known/x402 document and a sample PAYMENT-REQUIRED payload.",
   "input_example": {
    "url": "https://petstore3.swagger.io/api/v3/openapi.json",
    "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
    "price": "0.001"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "OpenAPI URL"
     },
     "spec": {
      "type": "object",
      "description": "Inline spec (POST)"
     },
     "payTo": {
      "type": "string",
      "description": "Receiving address"
     },
     "price": {
      "type": "string",
      "description": "Default USD price per call"
     },
     "prices": {
      "type": "string",
      "description": "JSON map {\"GET /path\": 0.002}"
     },
     "network": {
      "type": "string",
      "description": "CAIP-2, default eip155:8453"
     },
     "base_url": {
      "type": "string",
      "description": "Override server URL"
     }
    },
    "required": [
     "payTo"
    ]
   },
   "output_example": {
    "operations": 19,
    "routes": [
     {
      "method": "GET",
      "path": "/pet/{petId}",
      "accepts": [
       {
        "scheme": "exact",
        "amount": "1000"
       }
      ]
     }
    ],
    "well_known_x402": {
     "version": 1,
     "resources": []
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/x402-manifest-from-openapi",
   "related_tools": [
    {
     "route": "/api/x402-compliance",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance"
    },
    {
     "route": "/api/openapi-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint"
    },
    {
     "route": "/api/openapi-to-mcp",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    }
   ]
  },
  {
   "id": "pubmed-search",
   "route": "/api/pubmed-search",
   "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "research",
   "category_label": "Research & science",
   "description": "PubMed / MEDLINE search with full records: PMID, title, authors, journal, year, volume/pages, DOI, PMCID, publication types, MeSH terms and abstract. Accepts PubMed query syntax or a list of PMIDs. No API key needed.",
   "input_example": {
    "q": "x402 OR \"agent payments\"",
    "max": "3"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "q": {
      "type": "string",
      "description": "PubMed query"
     },
     "pmid": {
      "type": "string",
      "description": "Comma-separated PMIDs (alternative to q)"
     },
     "max": {
      "type": "string",
      "description": "1-20, default 5"
     },
     "sort": {
      "type": "string",
      "description": "relevance or pub_date"
     },
     "abstracts": {
      "type": "string",
      "description": "true/false, default true"
     }
    },
    "required": []
   },
   "output_example": {
    "total": 1234,
    "count": 3,
    "articles": [
     {
      "pmid": "38000000",
      "title": "…",
      "doi": "10.…",
      "abstract": "…"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/pubmed-search",
   "related_tools": [
    {
     "route": "/api/crossref-doi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    },
    {
     "route": "/api/arxiv-search",
     "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search"
    },
    {
     "route": "/api/wikidata-entity",
     "url": "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    }
   ]
  },
  {
   "id": "x402-listing-check",
   "route": "/api/x402-listing-check",
   "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "x402-dev",
   "category_label": "x402 developer tools",
   "description": "Checks that a host exposes a valid x402 discovery listing (/.well-known/x402, x402.json, x402-listing): JSON, version, https resource URLs, same host, companions (/openapi.json, /llms.txt), and probes up to 10 listed resources for a real 402 challenge with consistent payTo. Never pays.",
   "input_example": {
    "url": "https://x402-gateway.forge-x402.workers.dev"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Host or origin URL"
     },
     "probe": {
      "type": "string",
      "description": "Resources to probe, 0-10, default 5"
     }
    },
    "required": [
     "url"
    ]
   },
   "output_example": {
    "verdict": "valid",
    "resources_count": 14,
    "probes": [
     {
      "status": 402,
      "ok": true
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/x402-listing-check",
   "related_tools": [
    {
     "route": "/api/x402-compliance",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance"
    },
    {
     "route": "/api/x402-manifest-from-openapi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    },
    {
     "route": "/api/x402-facilitator-health",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    }
   ]
  },
  {
   "id": "lei-lookup",
   "route": "/api/lei-lookup",
   "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "Legal Entity Identifier lookup from the official GLEIF register: by LEI (with ISO 17442 checksum check) or by legal-name search with optional country. Returns legal name, status, legal form, jurisdiction, legal and HQ addresses, registration status/renewal, BIC, direct and ultimate parents.",
   "input_example": {
    "lei": "969500KMUQ2B6CBAF162"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "lei": {
      "type": "string",
      "description": "20-char LEI"
     },
     "name": {
      "type": "string",
      "description": "Legal name search (alternative)"
     },
     "country": {
      "type": "string",
      "description": "ISO alpha-2 filter for name search"
     },
     "max": {
      "type": "string",
      "description": "1-20"
     },
     "relationships": {
      "type": "string",
      "description": "true/false, default true"
     }
    },
    "required": []
   },
   "output_example": {
    "lei": "969500KMUQ2B6CBAF162",
    "found": true,
    "legal_name": "DANONE",
    "status": "ACTIVE",
    "jurisdiction": "FR",
    "ultimate_parent": null
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/lei-lookup",
   "related_tools": [
    {
     "route": "/api/eori-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate"
    },
    {
     "route": "/api/eu-vat",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    },
    {
     "route": "/api/sec-financials",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sec-financials"
    },
    {
     "route": "/api/fr-company",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    }
   ]
  },
  {
   "id": "rss-to-json",
   "route": "/api/rss-to-json",
   "url": "https://forge-tools.dentreprise.workers.dev/api/rss-to-json",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "web",
   "category_label": "Web data",
   "description": "RSS 2.0 / RSS 1.0 (RDF) / Atom / JSON Feed to clean JSON: feed title, link, language, updated, items with id, title, link, ISO dates, author, text summary, categories and enclosures (podcasts). URL or inline XML, item cap, `since` filter; HTML pages return discovered feed links.",
   "input_example": {
    "url": "https://hnrss.org/frontpage",
    "limit": "10"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Feed URL"
     },
     "xml": {
      "type": "string",
      "description": "Inline feed (POST)"
     },
     "limit": {
      "type": "string",
      "description": "1-100, default 20"
     },
     "since": {
      "type": "string",
      "description": "ISO date: only newer items"
     },
     "html": {
      "type": "string",
      "description": "keep HTML in summaries"
     }
    },
    "required": []
   },
   "output_example": {
    "format": "rss 2.0",
    "title": "Hacker News: Front Page",
    "count": 10,
    "items": [
     {
      "title": "…",
      "link": "…",
      "published": "2026-11-10T12:00:00.000Z"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/rss-to-json",
   "related_tools": [
    {
     "route": "/api/sitemap-urls",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls"
    },
    {
     "route": "/api/web-meta",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta"
    },
    {
     "route": "/api/markdown",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    }
   ]
  },
  {
   "id": "eori-validate",
   "route": "/api/eori-validate",
   "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB numbers against HMRC. Up to 10 numbers per call; returns validity plus name and address when the trader consented to publication.",
   "input_example": {
    "eori": "FR55203253400019"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "eori": {
      "type": "string",
      "description": "EORI number(s), comma-separated, max 10"
     }
    },
    "required": [
     "eori"
    ]
   },
   "output_example": {
    "count": 1,
    "valid": 0,
    "results": [
     {
      "eori": "FR55203253400019",
      "valid": false,
      "status": "Not valid",
      "registry": "EU EOS (European Commission)"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/eori-validate",
   "related_tools": [
    {
     "route": "/api/eu-vat",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/gtin-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate"
    }
   ]
  },
  {
   "id": "sec-financials",
   "route": "/api/sec-financials",
   "url": "https://forge-tools.dentreprise.workers.dev/api/sec-financials",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.005",
   "price_usd": 0.005,
   "amount_atomic": "5000",
   "category": "finance",
   "category_label": "Finance",
   "description": "US public company financial facts from SEC EDGAR XBRL (by ticker or CIK): revenue, net income, operating income, gross profit, diluted EPS, assets, liabilities, equity, cash, operating cash flow, long-term debt, shares outstanding — last 1-5 fiscal years plus latest quarter, with form, filing date and accession; plus recent 10-K/10-Q/8-K filings. Any raw us-gaap tag also accepted.",
   "input_example": {
    "ticker": "AAPL",
    "years": "3"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "ticker": {
      "type": "string",
      "description": "Ticker, e.g. AAPL"
     },
     "cik": {
      "type": "string",
      "description": "SEC CIK (alternative)"
     },
     "years": {
      "type": "string",
      "description": "1-5, default 3"
     },
     "metrics": {
      "type": "string",
      "description": "Comma list: revenue,net_income,… or us-gaap:Tag"
     }
    },
    "required": []
   },
   "output_example": {
    "cik": "0000320193",
    "name": "Apple Inc.",
    "metrics": {
     "revenue": {
      "unit": "USD",
      "annual": [
       {
        "period_end": "2026-09-26",
        "value": 0
       }
      ]
     }
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/sec-financials",
   "related_tools": [
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/fx-history",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history"
    },
    {
     "route": "/api/wikidata-entity",
     "url": "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    }
   ]
  },
  {
   "id": "openfoodfacts-product",
   "route": "/api/openfoodfacts-product",
   "url": "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "commerce",
   "category_label": "Products & commerce",
   "description": "Food product sheet from a barcode (EAN/UPC/GTIN) via Open Food Facts: name, brand, quantity, Nutri-Score, NOVA, Eco-Score, nutriments per 100 g, ingredients, allergens, traces, labels, categories, countries, packaging, image.",
   "input_example": {
    "barcode": "3017624010701"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "barcode": {
      "type": "string",
      "description": "8-14 digit barcode"
     }
    },
    "required": [
     "barcode"
    ]
   },
   "output_example": {
    "found": true,
    "name": "Nutella",
    "brands": "Ferrero",
    "nutriscore": "e"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/openfoodfacts-product",
   "related_tools": [
    {
     "route": "/api/gtin-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate"
    },
    {
     "route": "/api/isbn-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    }
   ]
  },
  {
   "id": "arxiv-search",
   "route": "/api/arxiv-search",
   "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "research",
   "category_label": "Research & science",
   "description": "arXiv preprint search (plain words or arXiv field syntax ti:, au:, abs:, cat:) or id lookup: title, authors, dates, categories, abstract, DOI, journal ref, abs and PDF links.",
   "input_example": {
    "q": "agent payments",
    "max": "3"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "q": {
      "type": "string",
      "description": "Query"
     },
     "id": {
      "type": "string",
      "description": "arXiv id(s), comma-separated"
     },
     "max": {
      "type": "string",
      "description": "1-25, default 5"
     },
     "sort": {
      "type": "string",
      "description": "relevance, submitted, updated"
     }
    },
    "required": []
   },
   "output_example": {
    "total": 120,
    "count": 3,
    "papers": [
     {
      "id": "2501.00001v1",
      "title": "…",
      "pdf_url": "https://arxiv.org/pdf/2501.00001v1"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/arxiv-search",
   "related_tools": [
    {
     "route": "/api/pubmed-search",
     "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search"
    },
    {
     "route": "/api/crossref-doi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    }
   ]
  },
  {
   "id": "crossref-doi",
   "route": "/api/crossref-doi",
   "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "research",
   "category_label": "Research & science",
   "description": "DOI metadata from Crossref: type, title, container (journal/book), publisher, authors with ORCID and affiliations, dates, volume/issue/pages, ISSN/ISBN, licenses, abstract, subjects, citation counts, funders, and optionally the reference list.",
   "input_example": {
    "doi": "10.1038/nature12373"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "doi": {
      "type": "string",
      "description": "DOI or doi.org URL"
     },
     "references": {
      "type": "string",
      "description": "true to include references"
     }
    },
    "required": [
     "doi"
    ]
   },
   "output_example": {
    "found": true,
    "title": "Nanometre-scale thermometry in a living cell",
    "container": "Nature"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/crossref-doi",
   "related_tools": [
    {
     "route": "/api/pubmed-search",
     "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search"
    },
    {
     "route": "/api/arxiv-search",
     "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search"
    },
    {
     "route": "/api/isbn-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    }
   ]
  },
  {
   "id": "gtin-validate",
   "route": "/api/gtin-validate",
   "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "commerce",
   "category_label": "Products & commerce",
   "description": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit): type, expected check digit, corrected code, GTIN-14 and EAN-13 forms, GS1 prefix region, book/coupon flags. Up to 100 codes per call.",
   "input_example": {
    "gtin": "3017624010701"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "gtin": {
      "type": "string",
      "description": "Code(s), comma-separated"
     }
    },
    "required": [
     "gtin"
    ]
   },
   "output_example": {
    "type": "EAN-13",
    "valid": true,
    "gtin14": "03017624010701",
    "gs1_prefix_region": "France & Monaco"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/gtin-validate",
   "related_tools": [
    {
     "route": "/api/openfoodfacts-product",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product"
    },
    {
     "route": "/api/isbn-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    }
   ]
  },
  {
   "id": "isbn-validate",
   "route": "/api/isbn-validate",
   "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "commerce",
   "category_label": "Products & commerce",
   "description": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits): valid flag, expected check digit, corrected value, both forms, GTIN-14, registration group hint.",
   "input_example": {
    "isbn": "978-2-07-036822-8"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "isbn": {
      "type": "string",
      "description": "ISBN-10 or ISBN-13"
     }
    },
    "required": [
     "isbn"
    ]
   },
   "output_example": {
    "format": "ISBN-13",
    "valid": true,
    "isbn10": "2070368223"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/isbn-validate",
   "related_tools": [
    {
     "route": "/api/gtin-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate"
    },
    {
     "route": "/api/crossref-doi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    }
   ]
  },
  {
   "id": "mcp-inspect",
   "route": "/api/mcp-inspect",
   "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "mcp-dev",
   "category_label": "MCP developer tools",
   "description": "Remote MCP server inspector (Streamable HTTP): initialize handshake, protocol version, serverInfo, capabilities, session, latency, tools/list with per-tool checks (name pattern, description, inputSchema object, undocumented or missing required params), resources/prompts counts. Read-only: never calls a tool.",
   "input_example": {
    "url": "https://example.com/mcp"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "MCP endpoint URL"
     }
    },
    "required": [
     "url"
    ]
   },
   "output_example": {
    "reachable": true,
    "healthy": true,
    "protocol_version": "2025-06-18",
    "tools_count": 12
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/mcp-inspect",
   "related_tools": [
    {
     "route": "/api/mcp-manifest-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    },
    {
     "route": "/api/openapi-to-mcp",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    },
    {
     "route": "/api/json-schema-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    }
   ]
  },
  {
   "id": "openapi-lint",
   "route": "/api/openapi-lint",
   "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "agent-dev",
   "category_label": "Agent builder tools",
   "description": "OpenAPI linter for agent readiness: version, info, servers, operationId presence/uniqueness/LLM-safe names, summaries, parameter schemas and descriptions, path placeholders, success and error responses, JSON examples. Returns an agent-readiness score and actionable issues.",
   "input_example": {
    "url": "https://petstore3.swagger.io/api/v3/openapi.json"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Spec URL"
     },
     "spec": {
      "type": "object",
      "description": "Inline spec (POST)"
     }
    },
    "required": []
   },
   "output_example": {
    "agent_readiness_score": 78,
    "operations": 19,
    "errors": 0,
    "warnings": 4
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/openapi-lint",
   "related_tools": [
    {
     "route": "/api/openapi-to-mcp",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    },
    {
     "route": "/api/x402-manifest-from-openapi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    },
    {
     "route": "/api/json-schema-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    }
   ]
  },
  {
   "id": "sitemap-urls",
   "route": "/api/sitemap-urls",
   "url": "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "web",
   "category_label": "Web data",
   "description": "sitemap.xml URL extractor: reads a sitemap or sitemap index (incl. .gz) and up to 10 child sitemaps, returns URLs with lastmod/changefreq/priority, optional substring filter, capped list (up to 5000).",
   "input_example": {
    "url": "https://www.sitemaps.org/sitemap.xml",
    "limit": "50"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Sitemap URL or site origin"
     },
     "limit": {
      "type": "string",
      "description": "1-5000, default 500"
     },
     "max_children": {
      "type": "string",
      "description": "0-10, default 5"
     },
     "contains": {
      "type": "string",
      "description": "Only URLs containing this text"
     }
    },
    "required": [
     "url"
    ]
   },
   "output_example": {
    "type": "urlset",
    "count": 50,
    "urls": [
     {
      "loc": "https://…",
      "lastmod": "2026-01-01"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/sitemap-urls",
   "related_tools": [
    {
     "route": "/api/rss-to-json",
     "url": "https://forge-tools.dentreprise.workers.dev/api/rss-to-json"
    },
    {
     "route": "/api/web-meta",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta"
    },
    {
     "route": "/api/markdown",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    }
   ]
  },
  {
   "id": "tz-convert",
   "route": "/api/tz-convert",
   "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "utility",
   "category_label": "Utilities",
   "description": "IANA time zone conversion: an instant (ISO with offset, Z, or Unix) or a local wall time in a source zone converted to up to 20 zones, with UTC offset, abbreviation and DST gap/overlap handling (ambiguous times return both instants).",
   "input_example": {
    "time": "2026-03-29T02:30",
    "from": "Europe/Paris",
    "to": "America/New_York,Asia/Tokyo"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "time": {
      "type": "string",
      "description": "ISO date-time or local time; default now"
     },
     "from": {
      "type": "string",
      "description": "Source IANA zone for local times, default UTC"
     },
     "to": {
      "type": "string",
      "description": "Target zones, comma-separated"
     }
    },
    "required": [
     "to"
    ]
   },
   "output_example": {
    "status": "ok",
    "results": [
     {
      "utc": "2026-11-10T15:00:00.000Z",
      "targets": [
       {
        "zone": "Asia/Tokyo",
        "local": "2026-11-11T00:00:00",
        "offset": "+09:00"
       }
      ]
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/tz-convert",
   "related_tools": [
    {
     "route": "/api/holidays",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays"
    },
    {
     "route": "/api/fr-school-calendar",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar"
    },
    {
     "route": "/api/uuid-v7",
     "url": "https://forge-tools.dentreprise.workers.dev/api/uuid-v7"
    }
   ]
  },
  {
   "id": "uuid-v7",
   "route": "/api/uuid-v7",
   "url": "https://forge-tools.dentreprise.workers.dev/api/uuid-v7",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "utility",
   "category_label": "Utilities",
   "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7).",
   "input_example": {
    "count": "3"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "count": {
      "type": "string",
      "description": "1-100"
     },
     "timestamp": {
      "type": "string",
      "description": "ISO date for the time part"
     },
     "uuid": {
      "type": "string",
      "description": "UUID to validate/decode instead"
     }
    },
    "required": []
   },
   "output_example": {
    "version": 7,
    "count": 3,
    "uuids": [
     "019a6f2e-…"
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/uuid-v7",
   "related_tools": [
    {
     "route": "/api/tz-convert",
     "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    },
    {
     "route": "/api/json-schema-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    }
   ]
  },
  {
   "id": "siren-check",
   "route": "/api/siren-check",
   "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived intra-EU VAT number. Up to 100 numbers. Offline: no register call.",
   "input_example": {
    "siren": "552032534"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "siren": {
      "type": "string",
      "description": "SIREN/SIRET number(s), comma-separated"
     }
    },
    "required": [
     "siren"
    ]
   },
   "output_example": {
    "type": "SIREN",
    "valid": true,
    "vat_number_fr": "FR27552032534"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/siren-check",
   "related_tools": [
    {
     "route": "/api/fr-company",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    },
    {
     "route": "/api/bodacc-health",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health"
    },
    {
     "route": "/api/eu-vat",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    },
    {
     "route": "/api/fr-communes",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    }
   ]
  },
  {
   "id": "phone-parse",
   "route": "/api/phone-parse",
   "url": "https://forge-tools.dentreprise.workers.dev/api/phone-parse",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "utility",
   "category_label": "Utilities",
   "description": "Phone number parsing and validation to E.164 (libphonenumber numbering plans): validity, country, calling code, type (mobile, fixed line, toll-free…), national/international formats, tel: URI. Up to 50 numbers. No carrier lookup, no call.",
   "input_example": {
    "phone": "+33 1 23 45 67 89"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "phone": {
      "type": "string",
      "description": "Number(s); separate with ; or newline"
     },
     "country": {
      "type": "string",
      "description": "Default ISO country for national numbers"
     }
    },
    "required": [
     "phone"
    ]
   },
   "output_example": {
    "valid": true,
    "e164": "+33123456789",
    "country": "FR",
    "type": "FIXED_LINE"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/phone-parse",
   "related_tools": [
    {
     "route": "/api/iban",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/iban"
    },
    {
     "route": "/api/siren-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    }
   ]
  },
  {
   "id": "x402-facilitator-health",
   "route": "/api/x402-facilitator-health",
   "url": "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "x402-dev",
   "category_label": "x402 developer tools",
   "description": "x402 facilitator health check: calls GET /supported on a facilitator (or on a default list incl. CDP, xpay, x402.org, PayAI), reports alive/auth-required, latency, supported kinds (version, scheme, network), V2 and network support, and flags deprecated URLs.",
   "input_example": {
    "network": "eip155:8453"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Facilitator base URL (optional)"
     },
     "network": {
      "type": "string",
      "description": "CAIP-2 network to check, default eip155:8453"
     }
    },
    "required": []
   },
   "output_example": {
    "checked": 4,
    "alive": 3,
    "results": [
     {
      "facilitator": "https://facilitator.xpay.sh",
      "alive": true,
      "supports_v2": true
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/x402-facilitator-health",
   "related_tools": [
    {
     "route": "/api/x402-compliance",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance"
    },
    {
     "route": "/api/x402-listing-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check"
    }
   ]
  },
  {
   "id": "json-schema-validate",
   "route": "/api/json-schema-validate",
   "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "agent-dev",
   "category_label": "Agent builder tools",
   "description": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors: code fences, trailing commas, numbers/booleans as strings, wrong enum case, single value instead of array, null optionals, extra or mis-cased keys, missing defaults. Returns errors, repaired JSON and fixes. POST recommended.",
   "input_example": {
    "schema": {
     "type": "object",
     "properties": {
      "age": {
       "type": "integer"
      }
     },
     "required": [
      "age"
     ]
    },
    "data": "{\"age\": \"42\"}"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "schema": {
      "type": "object",
      "description": "JSON Schema"
     },
     "data": {
      "type": "string",
      "description": "JSON value or string to check"
     },
     "repair": {
      "type": "string",
      "description": "true (default) / false"
     }
    },
    "required": [
     "schema",
     "data"
    ]
   },
   "output_example": {
    "valid": false,
    "errors": [
     {
      "path": "$.age",
      "msg": "expected integer, got string"
     }
    ],
    "repaired": {
     "age": 42
    },
    "repaired_valid": true
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/json-schema-validate",
   "related_tools": [
    {
     "route": "/api/openapi-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint"
    },
    {
     "route": "/api/a2a-agent-card",
     "url": "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card"
    },
    {
     "route": "/api/mcp-manifest-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    }
   ]
  },
  {
   "id": "wikidata-entity",
   "route": "/api/wikidata-entity",
   "url": "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "knowledge",
   "category_label": "Knowledge",
   "description": "Wikidata entity lookup by Q-id or search text: label, description, aliases in a chosen language, key claims (instance of, country, coordinates, inception, website, population, HQ, founders, industry, identifiers such as LEI/ticker/ISNI…) with resolved labels, Wikipedia link.",
   "input_example": {
    "q": "Annecy",
    "lang": "fr"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "id": {
      "type": "string",
      "description": "Q-id"
     },
     "q": {
      "type": "string",
      "description": "Search text (alternative)"
     },
     "lang": {
      "type": "string",
      "description": "Language code, default en"
     }
    },
    "required": []
   },
   "output_example": {
    "id": "Q50189",
    "label": "Annecy",
    "claims": {
     "country": [
      {
       "id": "Q142",
       "label": "France"
      }
     ]
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/wikidata-entity",
   "related_tools": [
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/fr-communes",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    },
    {
     "route": "/api/crossref-doi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    }
   ]
  },
  {
   "id": "fr-communes",
   "route": "/api/fr-communes",
   "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "geo-fr",
   "category_label": "France open data",
   "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates.",
   "input_example": {
    "name": "Annecy"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "Commune name"
     },
     "postcode": {
      "type": "string",
      "description": "5-digit postcode"
     },
     "insee": {
      "type": "string",
      "description": "5-char INSEE code"
     },
     "limit": {
      "type": "string",
      "description": "1-20"
     }
    },
    "required": []
   },
   "output_example": {
    "count": 1,
    "results": [
     {
      "name": "Annecy",
      "insee": "74010",
      "population": 132117,
      "department": {
       "code": "74"
      }
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/fr-communes",
   "related_tools": [
    {
     "route": "/api/fr-address",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address"
    },
    {
     "route": "/api/fr-school-calendar",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar"
    },
    {
     "route": "/api/siren-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    }
   ]
  },
  {
   "id": "fx-history",
   "route": "/api/fx-history",
   "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "finance",
   "category_label": "Finance",
   "description": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 years: daily points plus first/last/min/max/mean/% change.",
   "input_example": {
    "from": "EUR",
    "to": "USD",
    "start": "2026-01-01",
    "end": "2026-03-31"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "from": {
      "type": "string",
      "description": "Base ISO 4217, default EUR"
     },
     "to": {
      "type": "string",
      "description": "Target(s), comma-separated"
     },
     "start": {
      "type": "string",
      "description": "YYYY-MM-DD"
     },
     "end": {
      "type": "string",
      "description": "YYYY-MM-DD, default today"
     }
    },
    "required": [
     "to",
     "start"
    ]
   },
   "output_example": {
    "observations": 63,
    "series": {
     "USD": {
      "stats": {
       "min": 1.16,
       "max": 1.19,
       "change_pct": 1.2
      }
     }
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/fx-history",
   "related_tools": [
    {
     "route": "/api/fx",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fx"
    },
    {
     "route": "/api/sec-financials",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sec-financials"
    }
   ]
  },
  {
   "id": "fr-school-calendar",
   "route": "/api/fr-school-calendar",
   "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "geo-fr",
   "category_label": "France open data",
   "description": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/Corsica), with académies, start/end dates, and an optional date test (is this date a school holiday, and where).",
   "input_example": {
    "zone": "A",
    "year": "2026-2027"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "zone": {
      "type": "string",
      "description": "A, B, C or overseas zone"
     },
     "year": {
      "type": "string",
      "description": "School year e.g. 2026-2027"
     },
     "date": {
      "type": "string",
      "description": "YYYY-MM-DD to test"
     },
     "academie": {
      "type": "string",
      "description": "Académie name filter"
     }
    },
    "required": []
   },
   "output_example": {
    "school_year": "2026-2027",
    "count": 6,
    "periods": [
     {
      "description": "Vacances de la Toussaint",
      "start_local": "2026-10-17"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/fr-school-calendar",
   "related_tools": [
    {
     "route": "/api/holidays",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays"
    },
    {
     "route": "/api/fr-communes",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    },
    {
     "route": "/api/tz-convert",
     "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    }
   ]
  },
  {
   "id": "openapi-to-mcp",
   "route": "/api/openapi-to-mcp",
   "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "mcp-dev",
   "category_label": "MCP developer tools",
   "description": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions: LLM-safe unique names, descriptions, JSON Schema inputSchema (query/path/header params + JSON body), MCP annotations (readOnly/destructive/idempotent), plus HTTP forwarding hints and a ready tools/list response.",
   "input_example": {
    "url": "https://petstore3.swagger.io/api/v3/openapi.json"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "url": {
      "type": "string",
      "description": "Spec URL"
     },
     "spec": {
      "type": "object",
      "description": "Inline spec (POST)"
     },
     "base_url": {
      "type": "string",
      "description": "Override server URL"
     }
    },
    "required": []
   },
   "output_example": {
    "count": 19,
    "tools": [
     {
      "name": "getPetById",
      "inputSchema": {
       "type": "object"
      }
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/openapi-to-mcp",
   "related_tools": [
    {
     "route": "/api/openapi-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint"
    },
    {
     "route": "/api/mcp-manifest-lint",
     "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    },
    {
     "route": "/api/x402-manifest-from-openapi",
     "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    }
   ]
  },
  {
   "id": "sanctions-check",
   "route": "/api/sanctions-check",
   "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.005",
   "price_usd": 0.005,
   "amount_atomic": "5000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN with aliases plus other Treasury, Commerce BIS and State lists), the EU consolidated financial sanctions list (FSF), the French national asset-freeze register (DG Trésor) and the UK sanctions list (FCDO). Fuzzy Jaro-Winkler token matching with score, programmes, DOB; lists refreshed daily.",
   "input_example": {
    "name": "Bank Rossiya",
    "type": "entity"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "Name to screen"
     },
     "type": {
      "type": "string",
      "description": "person, entity or vessel (optional)"
     },
     "lists": {
      "type": "string",
      "description": "ofac,eu,fr,uk (default all)"
     },
     "threshold": {
      "type": "string",
      "description": "0.7-1, default 0.88"
     },
     "max": {
      "type": "string",
      "description": "1-50"
     }
    },
    "required": [
     "name"
    ]
   },
   "output_example": {
    "query": "Bank Rossiya",
    "match": true,
    "highest_score": 1,
    "hits": [
     {
      "list": "eu",
      "name": "Bank Rossiya",
      "score": 1,
      "programmes": "UKR"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/sanctions-check",
   "related_tools": [
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    }
   ]
  },
  {
   "id": "fr-legal-status",
   "route": "/api/fr-legal-status",
   "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "French company legal status by SIREN/SIRET: Sirene administrative status (active/ceased, closure date, legal form, NAF, head office) plus BODACC collective proceedings (sauvegarde, redressement, liquidation judiciaire, clôture) with latest stage, ongoing flag and risk level.",
   "input_example": {
    "siren": "552032534"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "siren": {
      "type": "string",
      "description": "SIREN or SIRET"
     },
     "max": {
      "type": "string",
      "description": "notices 1-50"
     }
    },
    "required": [
     "siren"
    ]
   },
   "output_example": {
    "siren": "552032534",
    "company": {
     "name": "DANONE",
     "status": "active"
    },
    "collective_proceedings": {
     "count": 0,
     "ongoing": false
    },
    "risk": "none_found"
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/fr-legal-status",
   "related_tools": [
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    },
    {
     "route": "/api/bodacc-health",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health"
    },
    {
     "route": "/api/fr-company",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    },
    {
     "route": "/api/siren-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    }
   ]
  },
  {
   "id": "eu-tenders",
   "route": "/api/eu-tenders",
   "url": "https://forge-tools.dentreprise.workers.dev/api/eu-tenders",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "business",
   "category_label": "Sales & tenders",
   "description": "Public tender scanner: keyword search across BOAMP (France) and TED (EU Official Journal, all member states) since a date, merged and sorted: title, buyer, publication date, deadline, notice type, country, CPV codes and link.",
   "input_example": {
    "q": "logiciel",
    "since": "2026-11-01"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "q": {
      "type": "string",
      "description": "Keywords"
     },
     "since": {
      "type": "string",
      "description": "YYYY-MM-DD, default 30 days ago"
     },
     "sources": {
      "type": "string",
      "description": "boamp,ted"
     },
     "country": {
      "type": "string",
      "description": "TED buyer country ISO alpha-3, e.g. DEU"
     },
     "max": {
      "type": "string",
      "description": "1-50 per source"
     }
    },
    "required": [
     "q"
    ]
   },
   "output_example": {
    "count": 20,
    "results": [
     {
      "source": "TED",
      "title": "Software development services",
      "buyer": "…",
      "deadline": "2026-12-01"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/eu-tenders",
   "related_tools": [
    {
     "route": "/api/fr-legal-status",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status"
    },
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    },
    {
     "route": "/api/fr-company",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    }
   ]
  },
  {
   "id": "uk-postcode",
   "route": "/api/uk-postcode",
   "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.001",
   "price_usd": 0.001,
   "amount_atomic": "1000",
   "category": "geo",
   "category_label": "Postcodes & addresses",
   "description": "UK postcode lookup and validation (postcodes.io, ONS/OS open data): country, region, district, ward, parish, constituency, lat/lon, eastings/northings, NUTS; terminated postcodes detected; reverse lookup from lat/lon.",
   "input_example": {
    "postcode": "SW1A 1AA"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "postcode": {
      "type": "string",
      "description": "UK postcode"
     },
     "lat": {
      "type": "string",
      "description": "reverse: latitude"
     },
     "lon": {
      "type": "string",
      "description": "reverse: longitude"
     }
    },
    "required": []
   },
   "output_example": {
    "valid": true,
    "postcode": "SW1A 1AA",
    "admin_district": "Westminster",
    "lat": 51.501,
    "lon": -0.1416
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/uk-postcode",
   "related_tools": [
    {
     "route": "/api/eu-address",
     "url": "https://forge-tools.dentreprise.workers.dev/api/eu-address"
    },
    {
     "route": "/api/phone-parse",
     "url": "https://forge-tools.dentreprise.workers.dev/api/phone-parse"
    },
    {
     "route": "/api/tz-convert",
     "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    }
   ]
  },
  {
   "id": "eu-address",
   "route": "/api/eu-address",
   "url": "https://forge-tools.dentreprise.workers.dev/api/eu-address",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "geo",
   "category_label": "Postcodes & addresses",
   "description": "Address geocoding and normalisation through official national open services: France (Base Adresse Nationale), Netherlands (PDOK/BAG), Spain (CartoCiudad/IGN), Switzerland (swisstopo). Returns normalised label, street, number, postcode, city, region, coordinates and score.",
   "input_example": {
    "address": "Damrak 1 Amsterdam",
    "country": "NL"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "address": {
      "type": "string",
      "description": "Free-text address"
     },
     "country": {
      "type": "string",
      "description": "FR, NL, ES or CH"
     },
     "limit": {
      "type": "string",
      "description": "1-10"
     }
    },
    "required": [
     "address",
     "country"
    ]
   },
   "output_example": {
    "country": "NL",
    "count": 1,
    "results": [
     {
      "label": "Damrak 1, 1012LG Amsterdam",
      "postcode": "1012LG",
      "lat": 52.37,
      "lon": 4.89
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/eu-address",
   "related_tools": [
    {
     "route": "/api/uk-postcode",
     "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode"
    },
    {
     "route": "/api/fr-address",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address"
    },
    {
     "route": "/api/fr-communes",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    }
   ]
  },
  {
   "id": "no-company",
   "route": "/api/no-company",
   "url": "https://forge-tools.dentreprise.workers.dev/api/no-company",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "Norwegian company register (Brønnøysundregistrene) by org number or name: legal form, registration and founding dates, VAT registration and VAT number, bankruptcy, liquidation and forced-dissolution flags, employees, industry, address, website.",
   "input_example": {
    "orgnr": "923609016"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "orgnr": {
      "type": "string",
      "description": "9-digit org number"
     },
     "name": {
      "type": "string",
      "description": "Name search"
     },
     "max": {
      "type": "string",
      "description": "1-20"
     }
    },
    "required": []
   },
   "output_example": {
    "found": true,
    "name": "EQUINOR ASA",
    "vat_registered": true,
    "bankrupt": false
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/no-company",
   "related_tools": [
    {
     "route": "/api/fi-company",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fi-company"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    }
   ]
  },
  {
   "id": "fi-company",
   "route": "/api/fi-company",
   "url": "https://forge-tools.dentreprise.workers.dev/api/fi-company",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "Finnish company register (PRH / YTJ open data) by Business ID (Y-tunnus) or name: current name, registration date, legal form, status, trade-register status, main business line, address, website, EUID and derived VAT number.",
   "input_example": {
    "business_id": "0112038-9"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "business_id": {
      "type": "string",
      "description": "Y-tunnus 1234567-8"
     },
     "name": {
      "type": "string",
      "description": "Name search"
     },
     "max": {
      "type": "string",
      "description": "1-20"
     }
    },
    "required": []
   },
   "output_example": {
    "total": 1,
    "results": [
     {
      "business_id": "0112038-9",
      "name": "Nokia Oyj",
      "vat_number": "FI01120389"
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/fi-company",
   "related_tools": [
    {
     "route": "/api/no-company",
     "url": "https://forge-tools.dentreprise.workers.dev/api/no-company"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    }
   ]
  },
  {
   "id": "uk-company",
   "route": "/api/uk-company",
   "url": "https://forge-tools.dentreprise.workers.dev/api/uk-company",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.002",
   "price_usd": 0.002,
   "amount_atomic": "2000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "UK company register (official Companies House API): search by name, or lookup by company number with profile (status, type, incorporation/dissolution, SIC codes, registered office, previous names), officer counts (active/resigned) and filing status (accounts and confirmation statement due/overdue), insolvency, liquidation and charges flags.",
   "input_example": {
    "company_number": "00445790"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "company_number": {
      "type": "string",
      "description": "8-char company number"
     },
     "name": {
      "type": "string",
      "description": "Name search (alternative)"
     },
     "max": {
      "type": "string",
      "description": "1-20"
     }
    },
    "required": []
   },
   "output_example": {
    "found": true,
    "name": "TESCO PLC",
    "status": "active",
    "officers": {
     "active": 12
    },
    "filing": {
     "accounts_overdue": false
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/uk-company",
   "related_tools": [
    {
     "route": "/api/kyb-check-uk",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk"
    },
    {
     "route": "/api/uk-postcode",
     "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    }
   ]
  },
  {
   "id": "kyb-check-uk",
   "route": "/api/kyb-check-uk",
   "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.01",
   "price_usd": 0.01,
   "amount_atomic": "10000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "One-call KYB for a UK company (company number or name): Companies House profile, officers and filing status, insolvency/liquidation flags, plus sanctions screening (US CSL/OFAC, EU, FR, UK) of the registered name, with a pass/review/fail verdict and flags.",
   "input_example": {
    "company_number": "00445790"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "company_number": {
      "type": "string",
      "description": "8-char company number"
     },
     "name": {
      "type": "string",
      "description": "Name (alternative; best match is checked)"
     }
    },
    "required": []
   },
   "output_example": {
    "verdict": "pass",
    "flags": [],
    "company": {
     "name": "TESCO PLC",
     "status": "active"
    },
    "sanctions": {
     "match": false
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/kyb-check-uk",
   "related_tools": [
    {
     "route": "/api/uk-company",
     "url": "https://forge-tools.dentreprise.workers.dev/api/uk-company"
    },
    {
     "route": "/api/sanctions-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    },
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    }
   ]
  },
  {
   "id": "eu-carbon-customs",
   "route": "/api/eu-carbon-customs",
   "url": "https://forge-tools.dentreprise.workers.dev/api/eu-carbon-customs",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.003",
   "price_usd": 0.003,
   "amount_atomic": "3000",
   "category": "trade",
   "category_label": "Customs & trade",
   "description": "EU CBAM (carbon border adjustment) default embedded emissions for a CN/TARIC code and country of origin, from the official Commission default-values file: direct, indirect and total tCO2e per tonne, production route, year mark-up, and optional embedded emissions and certificate cost for a shipment (tonnes, EUR price).",
   "input_example": {
    "cn": "72081000",
    "country": "CN",
    "tonnes": "100",
    "price_eur": "75"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "cn": {
      "type": "string",
      "description": "CN/TARIC code 4-10 digits"
     },
     "country": {
      "type": "string",
      "description": "Origin country name or ISO alpha-2"
     },
     "year": {
      "type": "string",
      "description": "2026+"
     },
     "tonnes": {
      "type": "string",
      "description": "Shipment mass in tonnes (optional)"
     },
     "price_eur": {
      "type": "string",
      "description": "CBAM certificate price EUR/tCO2e (optional)"
     }
    },
    "required": [
     "cn",
     "country"
    ]
   },
   "output_example": {
    "cn": "72081000",
    "country_table": "China",
    "items": [
     {
      "description": "Flat-rolled products…",
      "total": 2.5,
      "total_with_markup": 2.75,
      "embedded_emissions_t": 275
     }
    ]
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/eu-carbon-customs",
   "related_tools": [
    {
     "route": "/api/eori-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate"
    },
    {
     "route": "/api/fx-history",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    }
   ]
  },
  {
   "id": "kyb-check-eu",
   "route": "/api/kyb-check-eu",
   "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-eu",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.01",
   "price_usd": 0.01,
   "amount_atomic": "10000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "One-call KYB for any EU company by VAT number: VIES validity with registered name/address, sanctions screening (US CSL/OFAC, EU, FR, UK) of the name, GLEIF LEI candidates, plus national register data for France (Sirene + BODACC proceedings) and Finland (PRH), with a pass/review/fail verdict.",
   "input_example": {
    "vat": "FR27552032534"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "vat": {
      "type": "string",
      "description": "EU VAT number with country prefix"
     },
     "name": {
      "type": "string",
      "description": "Company name if VIES does not publish it"
     }
    },
    "required": [
     "vat"
    ]
   },
   "output_example": {
    "vat": "FR27552032534",
    "verdict": "pass",
    "flags": [],
    "vies": {
     "valid": true,
     "name": "SA DANONE"
    },
    "sanctions": {
     "match": false
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/kyb-check-eu",
   "related_tools": [
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    },
    {
     "route": "/api/kyb-check-uk",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    },
    {
     "route": "/api/sanctions-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check"
    },
    {
     "route": "/api/eu-vat",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    }
   ]
  },
  {
   "id": "kyb-check-fr",
   "route": "/api/kyb-check-fr",
   "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.01",
   "price_usd": 0.01,
   "amount_atomic": "10000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "One-call KYB for a French company (SIREN/SIRET): Sirene identity and status, BODACC collective proceedings, VIES intra-EU VAT validity (derived FR number) and sanctions screening (OFAC, EU, FR, UK) of the legal name, with a pass/review/fail verdict and flags.",
   "input_example": {
    "siren": "552032534"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "siren": {
      "type": "string",
      "description": "SIREN or SIRET"
     }
    },
    "required": [
     "siren"
    ]
   },
   "output_example": {
    "siren": "552032534",
    "verdict": "pass",
    "flags": [],
    "vat": {
     "valid": true
    },
    "sanctions": {
     "match": false
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/kyb-check-fr",
   "related_tools": [
    {
     "route": "/api/fr-legal-status",
     "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status"
    },
    {
     "route": "/api/sanctions-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check"
    },
    {
     "route": "/api/supplier-due-diligence",
     "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    },
    {
     "route": "/api/fr-company",
     "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    }
   ]
  },
  {
   "id": "supplier-due-diligence",
   "route": "/api/supplier-due-diligence",
   "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
   "methods": [
    "GET",
    "POST"
   ],
   "price": "$0.01",
   "price_usd": 0.01,
   "amount_atomic": "10000",
   "category": "kyb",
   "category_label": "Company & trade identifiers",
   "description": "Supplier due diligence for any company name (optionally VAT number and country): VIES VAT check, UK Companies House profile when country=GB, GLEIF LEI candidates with entity and registration status, and sanctions screening (OFAC, EU, FR, UK), with a pass/review/fail verdict and flags.",
   "input_example": {
    "name": "Nokia Oyj",
    "country": "FI",
    "vat": "FI01120389"
   },
   "input_schema": {
    "type": "object",
    "properties": {
     "name": {
      "type": "string",
      "description": "Company name"
     },
     "country": {
      "type": "string",
      "description": "ISO alpha-2"
     },
     "vat": {
      "type": "string",
      "description": "EU VAT number (optional)"
     }
    },
    "required": [
     "name"
    ]
   },
   "output_example": {
    "verdict": "pass",
    "flags": [],
    "vat": {
     "valid": true
    },
    "lei": {
     "candidates": [
      {
       "lei": "…",
       "status": "ACTIVE"
      }
     ]
    },
    "sanctions": {
     "match": false
    }
   },
   "docs": "https://forge-tools.dentreprise.workers.dev/docs/api/supplier-due-diligence",
   "related_tools": [
    {
     "route": "/api/sanctions-check",
     "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check"
    },
    {
     "route": "/api/kyb-check-fr",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    },
    {
     "route": "/api/kyb-check-uk",
     "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk"
    },
    {
     "route": "/api/lei-lookup",
     "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    },
    {
     "route": "/api/eori-validate",
     "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate"
    }
   ]
  }
 ]
}