{
 "openapi": "3.1.0",
 "info": {
  "title": "Forge Agent Hub — Wave 1 Tools",
  "version": "1.0.0",
  "description": "Pay-per-call tools for AI agents (x402 V2, USDC on Base). 42 tools: x402/MCP/A2A developer tools, research, company identifiers, finance, product data, web data and utilities. Every response includes related_tools and the hub catalog link. Hub: https://agent-hub.dentreprise.workers.dev",
  "contact": {
   "name": "Forge Agent Hub",
   "url": "https://agent-hub.dentreprise.workers.dev"
  }
 },
 "servers": [
  {
   "url": "https://forge-tools.dentreprise.workers.dev"
  }
 ],
 "externalDocs": {
  "description": "Forge Agent Hub catalog",
  "url": "https://agent-hub.dentreprise.workers.dev/catalog.json"
 },
 "components": {
  "securitySchemes": {
   "x402": {
    "type": "apiKey",
    "in": "header",
    "name": "PAYMENT-SIGNATURE",
    "description": "x402 V2 payment payload (base64 JSON). Obtain requirements from the 402 response PAYMENT-REQUIRED header."
   }
  }
 },
 "paths": {
  "/api/x402-compliance": {
   "get": {
    "operationId": "x402_compliance",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "Paid endpoint URL to test",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "method",
      "in": "query",
      "required": false,
      "description": "GET (default) or POST",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "x402 V2 compliance tester",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-listing-check, /api/x402-manifest-from-openapi, /api/x402-facilitator-health. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "compliant",
         "score": 100,
         "summary": {
          "pass": 14,
          "warn": 0,
          "fail": 0
         },
         "checks": [
          {
           "id": "status_402",
           "status": "pass"
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-listing-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
           "price": "$0.001",
           "what": "Checks that a host exposes a valid x402 discovery listing (/"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "x402_compliance_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string",
          "description": "Paid endpoint URL to test"
         },
         "method": {
          "type": "string",
          "description": "GET (default) or POST"
         }
        },
        "required": [
         "url"
        ]
       },
       "example": {
        "url": "https://x402-gateway.forge-x402.workers.dev/api/fx?from=EUR&to=USD"
       }
      }
     }
    },
    "summary": "x402 V2 compliance tester",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-listing-check, /api/x402-manifest-from-openapi, /api/x402-facilitator-health. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "compliant",
         "score": 100,
         "summary": {
          "pass": 14,
          "warn": 0,
          "fail": 0
         },
         "checks": [
          {
           "id": "status_402",
           "status": "pass"
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-listing-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
           "price": "$0.001",
           "what": "Checks that a host exposes a valid x402 discovery listing (/"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/a2a-agent-card": {
   "get": {
    "operationId": "a2a_agent_card",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "Agent origin or card URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "mode",
      "in": "query",
      "required": false,
      "description": "validate (default) or generate",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "generate: agent name",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "description",
      "in": "query",
      "required": false,
      "description": "generate: description",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "endpoint",
      "in": "query",
      "required": false,
      "description": "generate: A2A endpoint https URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "skills",
      "in": "query",
      "required": false,
      "description": "generate: JSON array or comma-separated skill names",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "A2A Agent Card validator and generator (A2A 1",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-manifest-lint, /api/json-schema-validate, /api/mcp-inspect. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "mode": "validate",
         "spec_version_detected": "1.0",
         "valid": true,
         "errors": 0,
         "warnings": 1,
         "issues": [],
         "related_tools": [
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          },
          {
           "route": "/api/json-schema-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
           "price": "$0.001",
           "what": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "a2a_agent_card_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "url": "https://example.com"
       }
      }
     }
    },
    "summary": "A2A Agent Card validator and generator (A2A 1",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-manifest-lint, /api/json-schema-validate, /api/mcp-inspect. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "mode": "validate",
         "spec_version_detected": "1.0",
         "valid": true,
         "errors": 0,
         "warnings": 1,
         "issues": [],
         "related_tools": [
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          },
          {
           "route": "/api/json-schema-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
           "price": "$0.001",
           "what": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/mcp-manifest-lint": {
   "get": {
    "operationId": "mcp_manifest_lint",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "URL of server.json or config",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "kind",
      "in": "query",
      "required": false,
      "description": "server_json or host_config (auto-detected)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "MCP manifest linter",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-inspect, /api/openapi-to-mcp, /api/a2a-agent-card. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "kind": "server_json",
         "valid": true,
         "errors": 0,
         "warnings": 1,
         "registry_ready": false,
         "issues": [
          {
           "level": "warning",
           "path": "$schema"
          }
         ],
         "related_tools": [
          {
           "route": "/api/mcp-inspect",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect",
           "price": "$0.002",
           "what": "Remote MCP server inspector (Streamable HTTP)"
          },
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "mcp_manifest_lint_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "manifest": {
         "name": "io.github.example/weather",
         "description": "Weather MCP",
         "version": "1.0.0",
         "remotes": [
          {
           "type": "streamable-http",
           "url": "https://example.com/mcp"
          }
         ]
        }
       }
      }
     }
    },
    "summary": "MCP manifest linter",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-inspect, /api/openapi-to-mcp, /api/a2a-agent-card. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "kind": "server_json",
         "valid": true,
         "errors": 0,
         "warnings": 1,
         "registry_ready": false,
         "issues": [
          {
           "level": "warning",
           "path": "$schema"
          }
         ],
         "related_tools": [
          {
           "route": "/api/mcp-inspect",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-inspect",
           "price": "$0.002",
           "what": "Remote MCP server inspector (Streamable HTTP)"
          },
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/x402-manifest-from-openapi": {
   "get": {
    "operationId": "x402_manifest_from_openapi",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "OpenAPI URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "payTo",
      "in": "query",
      "required": true,
      "description": "Receiving address",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "price",
      "in": "query",
      "required": false,
      "description": "Default USD price per call",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "prices",
      "in": "query",
      "required": false,
      "description": "JSON map {\"GET /path\": 0.002}",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "network",
      "in": "query",
      "required": false,
      "description": "CAIP-2, default eip155:8453",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "base_url",
      "in": "query",
      "required": false,
      "description": "Override server URL",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Turn an OpenAPI 3",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/openapi-lint, /api/openapi-to-mcp. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "operations": 19,
         "routes": [
          {
           "method": "GET",
           "path": "/pet/{petId}",
           "accepts": [
            {
             "scheme": "exact",
             "amount": "1000"
            }
           ]
          }
         ],
         "well_known_x402": {
          "version": 1,
          "resources": []
         },
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "x402_manifest_from_openapi_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "url": "https://petstore3.swagger.io/api/v3/openapi.json",
        "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
        "price": "0.001"
       }
      }
     }
    },
    "summary": "Turn an OpenAPI 3",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/openapi-lint, /api/openapi-to-mcp. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "operations": 19,
         "routes": [
          {
           "method": "GET",
           "path": "/pet/{petId}",
           "accepts": [
            {
             "scheme": "exact",
             "amount": "1000"
            }
           ]
          }
         ],
         "well_known_x402": {
          "version": 1,
          "resources": []
         },
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/pubmed-search": {
   "get": {
    "operationId": "pubmed_search",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "PubMed query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "pmid",
      "in": "query",
      "required": false,
      "description": "Comma-separated PMIDs (alternative to q)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-20, default 5",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "sort",
      "in": "query",
      "required": false,
      "description": "relevance or pub_date",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "abstracts",
      "in": "query",
      "required": false,
      "description": "true/false, default true",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "PubMed / MEDLINE search with full records",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/crossref-doi, /api/arxiv-search, /api/wikidata-entity. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
     "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
     "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 1234,
         "count": 3,
         "articles": [
          {
           "pmid": "38000000",
           "title": "…",
           "doi": "10.…",
           "abstract": "…"
          }
         ],
         "related_tools": [
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          },
          {
           "route": "/api/arxiv-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
           "price": "$0.002",
           "what": "arXiv preprint search (plain words or arXiv field syntax ti"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "pubmed_search_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "q": "x402 OR \"agent payments\"",
        "max": "3"
       }
      }
     }
    },
    "summary": "PubMed / MEDLINE search with full records",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/crossref-doi, /api/arxiv-search, /api/wikidata-entity. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
     "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
     "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 1234,
         "count": 3,
         "articles": [
          {
           "pmid": "38000000",
           "title": "…",
           "doi": "10.…",
           "abstract": "…"
          }
         ],
         "related_tools": [
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          },
          {
           "route": "/api/arxiv-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
           "price": "$0.002",
           "what": "arXiv preprint search (plain words or arXiv field syntax ti"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/x402-listing-check": {
   "get": {
    "operationId": "x402_listing_check",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "Host or origin URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "probe",
      "in": "query",
      "required": false,
      "description": "Resources to probe, 0-10, default 5",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Checks that a host exposes a valid x402 discovery listing (/",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/x402-manifest-from-openapi, /api/x402-facilitator-health. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "valid",
         "resources_count": 14,
         "probes": [
          {
           "status": 402,
           "ok": true
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "x402_listing_check_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "url": "https://x402-gateway.forge-x402.workers.dev"
       }
      }
     }
    },
    "summary": "Checks that a host exposes a valid x402 discovery listing (/",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/x402-manifest-from-openapi, /api/x402-facilitator-health. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/x402-facilitator-health"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "valid",
         "resources_count": 14,
         "probes": [
          {
           "status": 402,
           "ok": true
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/lei-lookup": {
   "get": {
    "operationId": "lei_lookup",
    "parameters": [
     {
      "name": "lei",
      "in": "query",
      "required": false,
      "description": "20-char LEI",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Legal name search (alternative)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": false,
      "description": "ISO alpha-2 filter for name search",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-20",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "relationships",
      "in": "query",
      "required": false,
      "description": "true/false, default true",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Legal Entity Identifier lookup from the official GLEIF register",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eori-validate, /api/eu-vat, /api/sec-financials, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/sec-financials",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "lei": "969500KMUQ2B6CBAF162",
         "found": true,
         "legal_name": "DANONE",
         "status": "ACTIVE",
         "jurisdiction": "FR",
         "ultimate_parent": null,
         "related_tools": [
          {
           "route": "/api/eori-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
           "price": "$0.003",
           "what": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB nu"
          },
          {
           "route": "/api/eu-vat",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
           "price": "$0.003",
           "what": "EU VAT number validation (VIES)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "lei_lookup_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "lei": "969500KMUQ2B6CBAF162"
       }
      }
     }
    },
    "summary": "Legal Entity Identifier lookup from the official GLEIF register",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eori-validate, /api/eu-vat, /api/sec-financials, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/sec-financials",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "lei": "969500KMUQ2B6CBAF162",
         "found": true,
         "legal_name": "DANONE",
         "status": "ACTIVE",
         "jurisdiction": "FR",
         "ultimate_parent": null,
         "related_tools": [
          {
           "route": "/api/eori-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
           "price": "$0.003",
           "what": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB nu"
          },
          {
           "route": "/api/eu-vat",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
           "price": "$0.003",
           "what": "EU VAT number validation (VIES)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/rss-to-json": {
   "get": {
    "operationId": "rss_to_json",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "Feed URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "xml",
      "in": "query",
      "required": false,
      "description": "Inline feed (POST)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-100, default 20",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "since",
      "in": "query",
      "required": false,
      "description": "ISO date: only newer items",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "html",
      "in": "query",
      "required": false,
      "description": "keep HTML in summaries",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "RSS 2",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/sitemap-urls, /api/web-meta, /api/markdown. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Web data"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls",
     "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
     "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "format": "rss 2.0",
         "title": "Hacker News: Front Page",
         "count": 10,
         "items": [
          {
           "title": "…",
           "link": "…",
           "published": "2026-11-10T12:00:00.000Z"
          }
         ],
         "related_tools": [
          {
           "route": "/api/sitemap-urls",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls",
           "price": "$0.002",
           "what": "sitemap"
          },
          {
           "route": "/api/web-meta",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
           "price": "$0.002",
           "what": "Web page metadata, OpenGraph, feeds"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "rss_to_json_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "url": "https://hnrss.org/frontpage",
        "limit": "10"
       }
      }
     }
    },
    "summary": "RSS 2",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/sitemap-urls, /api/web-meta, /api/markdown. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Web data"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls",
     "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
     "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "format": "rss 2.0",
         "title": "Hacker News: Front Page",
         "count": 10,
         "items": [
          {
           "title": "…",
           "link": "…",
           "published": "2026-11-10T12:00:00.000Z"
          }
         ],
         "related_tools": [
          {
           "route": "/api/sitemap-urls",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sitemap-urls",
           "price": "$0.002",
           "what": "sitemap"
          },
          {
           "route": "/api/web-meta",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
           "price": "$0.002",
           "what": "Web page metadata, OpenGraph, feeds"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/eori-validate": {
   "get": {
    "operationId": "eori_validate",
    "parameters": [
     {
      "name": "eori",
      "in": "query",
      "required": true,
      "description": "EORI number(s), comma-separated, max 10",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB numbers agai",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eu-vat, /api/lei-lookup, /api/gtin-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "valid": 0,
         "results": [
          {
           "eori": "FR55203253400019",
           "valid": false,
           "status": "Not valid",
           "registry": "EU EOS (European Commission)"
          }
         ],
         "related_tools": [
          {
           "route": "/api/eu-vat",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
           "price": "$0.003",
           "what": "EU VAT number validation (VIES)"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "eori_validate_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "eori": {
          "type": "string",
          "description": "EORI number(s), comma-separated, max 10"
         }
        },
        "required": [
         "eori"
        ]
       },
       "example": {
        "eori": "FR55203253400019"
       }
      }
     }
    },
    "summary": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB numbers agai",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eu-vat, /api/lei-lookup, /api/gtin-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "valid": 0,
         "results": [
          {
           "eori": "FR55203253400019",
           "valid": false,
           "status": "Not valid",
           "registry": "EU EOS (European Commission)"
          }
         ],
         "related_tools": [
          {
           "route": "/api/eu-vat",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
           "price": "$0.003",
           "what": "EU VAT number validation (VIES)"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/sec-financials": {
   "get": {
    "operationId": "sec_financials",
    "parameters": [
     {
      "name": "ticker",
      "in": "query",
      "required": false,
      "description": "Ticker, e.g. AAPL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "cik",
      "in": "query",
      "required": false,
      "description": "SEC CIK (alternative)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "years",
      "in": "query",
      "required": false,
      "description": "1-5, default 3",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "metrics",
      "in": "query",
      "required": false,
      "description": "Comma list: revenue,net_income,… or us-gaap:Tag",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "US public company financial facts from SEC EDGAR XBRL (by ticker or CIK)",
    "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.\n\nPrice: $0.005 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/lei-lookup, /api/fx-history, /api/wikidata-entity. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Finance"
    ],
    "x-price-usd": 0.005,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/fx-history",
     "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "5000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "cik": "0000320193",
         "name": "Apple Inc.",
         "metrics": {
          "revenue": {
           "unit": "USD",
           "annual": [
            {
             "period_end": "2026-09-26",
             "value": 0
            }
           ]
          }
         },
         "related_tools": [
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          },
          {
           "route": "/api/fx-history",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history",
           "price": "$0.002",
           "what": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 ye"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "sec_financials_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "ticker": "AAPL",
        "years": "3"
       }
      }
     }
    },
    "summary": "US public company financial facts from SEC EDGAR XBRL (by ticker or CIK)",
    "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.\n\nPrice: $0.005 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/lei-lookup, /api/fx-history, /api/wikidata-entity. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Finance"
    ],
    "x-price-usd": 0.005,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/fx-history",
     "https://forge-tools.dentreprise.workers.dev/api/wikidata-entity"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "5000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "cik": "0000320193",
         "name": "Apple Inc.",
         "metrics": {
          "revenue": {
           "unit": "USD",
           "annual": [
            {
             "period_end": "2026-09-26",
             "value": 0
            }
           ]
          }
         },
         "related_tools": [
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          },
          {
           "route": "/api/fx-history",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history",
           "price": "$0.002",
           "what": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 ye"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/openfoodfacts-product": {
   "get": {
    "operationId": "openfoodfacts_product",
    "parameters": [
     {
      "name": "barcode",
      "in": "query",
      "required": true,
      "description": "8-14 digit barcode",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Food product sheet from a barcode (EAN/UPC/GTIN) via Open Food Facts",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/gtin-validate, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "Nutella",
         "brands": "Ferrero",
         "nutriscore": "e",
         "related_tools": [
          {
           "route": "/api/gtin-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
           "price": "$0.001",
           "what": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)"
          },
          {
           "route": "/api/isbn-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate",
           "price": "$0.001",
           "what": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "openfoodfacts_product_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "barcode": {
          "type": "string",
          "description": "8-14 digit barcode"
         }
        },
        "required": [
         "barcode"
        ]
       },
       "example": {
        "barcode": "3017624010701"
       }
      }
     }
    },
    "summary": "Food product sheet from a barcode (EAN/UPC/GTIN) via Open Food Facts",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/gtin-validate, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "Nutella",
         "brands": "Ferrero",
         "nutriscore": "e",
         "related_tools": [
          {
           "route": "/api/gtin-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
           "price": "$0.001",
           "what": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)"
          },
          {
           "route": "/api/isbn-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate",
           "price": "$0.001",
           "what": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/arxiv-search": {
   "get": {
    "operationId": "arxiv_search",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Query",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "id",
      "in": "query",
      "required": false,
      "description": "arXiv id(s), comma-separated",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-25, default 5",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "sort",
      "in": "query",
      "required": false,
      "description": "relevance, submitted, updated",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "arXiv preprint search (plain words or arXiv field syntax ti",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/pubmed-search, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 120,
         "count": 3,
         "papers": [
          {
           "id": "2501.00001v1",
           "title": "…",
           "pdf_url": "https://arxiv.org/pdf/2501.00001v1"
          }
         ],
         "related_tools": [
          {
           "route": "/api/pubmed-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
           "price": "$0.003",
           "what": "PubMed / MEDLINE search with full records"
          },
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "arxiv_search_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "q": "agent payments",
        "max": "3"
       }
      }
     }
    },
    "summary": "arXiv preprint search (plain words or arXiv field syntax ti",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/pubmed-search, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 120,
         "count": 3,
         "papers": [
          {
           "id": "2501.00001v1",
           "title": "…",
           "pdf_url": "https://arxiv.org/pdf/2501.00001v1"
          }
         ],
         "related_tools": [
          {
           "route": "/api/pubmed-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
           "price": "$0.003",
           "what": "PubMed / MEDLINE search with full records"
          },
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/crossref-doi": {
   "get": {
    "operationId": "crossref_doi",
    "parameters": [
     {
      "name": "doi",
      "in": "query",
      "required": true,
      "description": "DOI or doi.org URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "references",
      "in": "query",
      "required": false,
      "description": "true to include references",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "DOI metadata from Crossref",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/pubmed-search, /api/arxiv-search, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
     "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "title": "Nanometre-scale thermometry in a living cell",
         "container": "Nature",
         "related_tools": [
          {
           "route": "/api/pubmed-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
           "price": "$0.003",
           "what": "PubMed / MEDLINE search with full records"
          },
          {
           "route": "/api/arxiv-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
           "price": "$0.002",
           "what": "arXiv preprint search (plain words or arXiv field syntax ti"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "crossref_doi_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "doi": {
          "type": "string",
          "description": "DOI or doi.org URL"
         },
         "references": {
          "type": "string",
          "description": "true to include references"
         }
        },
        "required": [
         "doi"
        ]
       },
       "example": {
        "doi": "10.1038/nature12373"
       }
      }
     }
    },
    "summary": "DOI metadata from Crossref",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/pubmed-search, /api/arxiv-search, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Research & science"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
     "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "title": "Nanometre-scale thermometry in a living cell",
         "container": "Nature",
         "related_tools": [
          {
           "route": "/api/pubmed-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/pubmed-search",
           "price": "$0.003",
           "what": "PubMed / MEDLINE search with full records"
          },
          {
           "route": "/api/arxiv-search",
           "url": "https://forge-tools.dentreprise.workers.dev/api/arxiv-search",
           "price": "$0.002",
           "what": "arXiv preprint search (plain words or arXiv field syntax ti"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/gtin-validate": {
   "get": {
    "operationId": "gtin_validate",
    "parameters": [
     {
      "name": "gtin",
      "in": "query",
      "required": true,
      "description": "Code(s), comma-separated",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openfoodfacts-product, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "EAN-13",
         "valid": true,
         "gtin14": "03017624010701",
         "gs1_prefix_region": "France & Monaco",
         "related_tools": [
          {
           "route": "/api/openfoodfacts-product",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product",
           "price": "$0.002",
           "what": "Food product sheet from a barcode (EAN/UPC/GTIN) via Open Food Facts"
          },
          {
           "route": "/api/isbn-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate",
           "price": "$0.001",
           "what": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "gtin_validate_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "gtin": {
          "type": "string",
          "description": "Code(s), comma-separated"
         }
        },
        "required": [
         "gtin"
        ]
       },
       "example": {
        "gtin": "3017624010701"
       }
      }
     }
    },
    "summary": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openfoodfacts-product, /api/isbn-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product",
     "https://forge-tools.dentreprise.workers.dev/api/isbn-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "EAN-13",
         "valid": true,
         "gtin14": "03017624010701",
         "gs1_prefix_region": "France & Monaco",
         "related_tools": [
          {
           "route": "/api/openfoodfacts-product",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openfoodfacts-product",
           "price": "$0.002",
           "what": "Food product sheet from a barcode (EAN/UPC/GTIN) via Open Food Facts"
          },
          {
           "route": "/api/isbn-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/isbn-validate",
           "price": "$0.001",
           "what": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/isbn-validate": {
   "get": {
    "operationId": "isbn_validate",
    "parameters": [
     {
      "name": "isbn",
      "in": "query",
      "required": true,
      "description": "ISBN-10 or ISBN-13",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/gtin-validate, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "format": "ISBN-13",
         "valid": true,
         "isbn10": "2070368223",
         "related_tools": [
          {
           "route": "/api/gtin-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
           "price": "$0.001",
           "what": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)"
          },
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "isbn_validate_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "isbn": {
          "type": "string",
          "description": "ISBN-10 or ISBN-13"
         }
        },
        "required": [
         "isbn"
        ]
       },
       "example": {
        "isbn": "978-2-07-036822-8"
       }
      }
     }
    },
    "summary": "ISBN-10 / ISBN-13 validation and conversion (ISO 2108 check digits)",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/gtin-validate, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Products & commerce"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "format": "ISBN-13",
         "valid": true,
         "isbn10": "2070368223",
         "related_tools": [
          {
           "route": "/api/gtin-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/gtin-validate",
           "price": "$0.001",
           "what": "GTIN / EAN-8 / EAN-13 / UPC-A / UPC-E / GTIN-14 validation and normalisation (GS1 check digit)"
          },
          {
           "route": "/api/crossref-doi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/crossref-doi",
           "price": "$0.002",
           "what": "DOI metadata from Crossref"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/mcp-inspect": {
   "get": {
    "operationId": "mcp_inspect",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "MCP endpoint URL",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Remote MCP server inspector (Streamable HTTP)",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-manifest-lint, /api/openapi-to-mcp, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "reachable": true,
         "healthy": true,
         "protocol_version": "2025-06-18",
         "tools_count": 12,
         "related_tools": [
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          },
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "mcp_inspect_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string",
          "description": "MCP endpoint URL"
         }
        },
        "required": [
         "url"
        ]
       },
       "example": {
        "url": "https://example.com/mcp"
       }
      }
     }
    },
    "summary": "Remote MCP server inspector (Streamable HTTP)",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/mcp-manifest-lint, /api/openapi-to-mcp, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "reachable": true,
         "healthy": true,
         "protocol_version": "2025-06-18",
         "tools_count": 12,
         "related_tools": [
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          },
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/openapi-lint": {
   "get": {
    "operationId": "openapi_lint",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "Spec URL",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "OpenAPI linter for agent readiness",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-to-mcp, /api/x402-manifest-from-openapi, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "agent_readiness_score": 78,
         "operations": 19,
         "errors": 0,
         "warnings": 4,
         "related_tools": [
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "openapi_lint_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string",
          "description": "Spec URL"
         },
         "spec": {
          "type": "object",
          "description": "Inline spec (POST)"
         }
        },
        "required": []
       },
       "example": {
        "url": "https://petstore3.swagger.io/api/v3/openapi.json"
       }
      }
     }
    },
    "summary": "OpenAPI linter for agent readiness",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-to-mcp, /api/x402-manifest-from-openapi, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "agent_readiness_score": 78,
         "operations": 19,
         "errors": 0,
         "warnings": 4,
         "related_tools": [
          {
           "route": "/api/openapi-to-mcp",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-to-mcp",
           "price": "$0.003",
           "what": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions"
          },
          {
           "route": "/api/x402-manifest-from-openapi",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi",
           "price": "$0.003",
           "what": "Turn an OpenAPI 3"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/sitemap-urls": {
   "get": {
    "operationId": "sitemap_urls",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "Sitemap URL or site origin",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-5000, default 500",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max_children",
      "in": "query",
      "required": false,
      "description": "0-10, default 5",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "contains",
      "in": "query",
      "required": false,
      "description": "Only URLs containing this text",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "sitemap",
    "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).\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/rss-to-json, /api/web-meta, /api/markdown. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Web data"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/rss-to-json",
     "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
     "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "urlset",
         "count": 50,
         "urls": [
          {
           "loc": "https://…",
           "lastmod": "2026-01-01"
          }
         ],
         "related_tools": [
          {
           "route": "/api/rss-to-json",
           "url": "https://forge-tools.dentreprise.workers.dev/api/rss-to-json",
           "price": "$0.002",
           "what": "RSS 2"
          },
          {
           "route": "/api/web-meta",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
           "price": "$0.002",
           "what": "Web page metadata, OpenGraph, feeds"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "sitemap_urls_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "url": "https://www.sitemaps.org/sitemap.xml",
        "limit": "50"
       }
      }
     }
    },
    "summary": "sitemap",
    "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).\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/rss-to-json, /api/web-meta, /api/markdown. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Web data"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/rss-to-json",
     "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
     "https://x402-gateway.forge-x402.workers.dev/api/markdown"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "urlset",
         "count": 50,
         "urls": [
          {
           "loc": "https://…",
           "lastmod": "2026-01-01"
          }
         ],
         "related_tools": [
          {
           "route": "/api/rss-to-json",
           "url": "https://forge-tools.dentreprise.workers.dev/api/rss-to-json",
           "price": "$0.002",
           "what": "RSS 2"
          },
          {
           "route": "/api/web-meta",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
           "price": "$0.002",
           "what": "Web page metadata, OpenGraph, feeds"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/tz-convert": {
   "get": {
    "operationId": "tz_convert",
    "parameters": [
     {
      "name": "time",
      "in": "query",
      "required": false,
      "description": "ISO date-time or local time; default now",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "from",
      "in": "query",
      "required": false,
      "description": "Source IANA zone for local times, default UTC",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "to",
      "in": "query",
      "required": true,
      "description": "Target zones, comma-separated",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "IANA time zone conversion",
    "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).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/holidays, /api/fr-school-calendar, /api/uuid-v7. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/holidays",
     "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
     "https://forge-tools.dentreprise.workers.dev/api/uuid-v7"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "status": "ok",
         "results": [
          {
           "utc": "2026-11-10T15:00:00.000Z",
           "targets": [
            {
             "zone": "Asia/Tokyo",
             "local": "2026-11-11T00:00:00",
             "offset": "+09:00"
            }
           ]
          }
         ],
         "related_tools": [
          {
           "route": "/api/holidays",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
           "price": "$0.001",
           "what": "Public holidays by country"
          },
          {
           "route": "/api/fr-school-calendar",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
           "price": "$0.001",
           "what": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/C"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "tz_convert_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "time": "2026-03-29T02:30",
        "from": "Europe/Paris",
        "to": "America/New_York,Asia/Tokyo"
       }
      }
     }
    },
    "summary": "IANA time zone conversion",
    "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).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/holidays, /api/fr-school-calendar, /api/uuid-v7. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/holidays",
     "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
     "https://forge-tools.dentreprise.workers.dev/api/uuid-v7"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "status": "ok",
         "results": [
          {
           "utc": "2026-11-10T15:00:00.000Z",
           "targets": [
            {
             "zone": "Asia/Tokyo",
             "local": "2026-11-11T00:00:00",
             "offset": "+09:00"
            }
           ]
          }
         ],
         "related_tools": [
          {
           "route": "/api/holidays",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
           "price": "$0.001",
           "what": "Public holidays by country"
          },
          {
           "route": "/api/fr-school-calendar",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
           "price": "$0.001",
           "what": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/C"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/uuid-v7": {
   "get": {
    "operationId": "uuid_v7",
    "parameters": [
     {
      "name": "count",
      "in": "query",
      "required": false,
      "description": "1-100",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "timestamp",
      "in": "query",
      "required": false,
      "description": "ISO date for the time part",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "uuid",
      "in": "query",
      "required": false,
      "description": "UUID to validate/decode instead",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, varia",
    "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/tz-convert, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "version": 7,
         "count": 3,
         "uuids": [
          "019a6f2e-…"
         ],
         "related_tools": [
          {
           "route": "/api/tz-convert",
           "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert",
           "price": "$0.001",
           "what": "IANA time zone conversion"
          },
          {
           "route": "/api/json-schema-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
           "price": "$0.001",
           "what": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "uuid_v7_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "count": "3"
       }
      }
     }
    },
    "summary": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, varia",
    "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/tz-convert, /api/json-schema-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert",
     "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "version": 7,
         "count": 3,
         "uuids": [
          "019a6f2e-…"
         ],
         "related_tools": [
          {
           "route": "/api/tz-convert",
           "url": "https://forge-tools.dentreprise.workers.dev/api/tz-convert",
           "price": "$0.001",
           "what": "IANA time zone conversion"
          },
          {
           "route": "/api/json-schema-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/json-schema-validate",
           "price": "$0.001",
           "what": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/siren-check": {
   "get": {
    "operationId": "siren_check",
    "parameters": [
     {
      "name": "siren",
      "in": "query",
      "required": true,
      "description": "SIREN/SIRET number(s), comma-separated",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived intra-EU ",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-company, /api/bodacc-health, /api/eu-vat, /api/fr-communes. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
     "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "SIREN",
         "valid": true,
         "vat_number_fr": "FR27552032534",
         "related_tools": [
          {
           "route": "/api/fr-company",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
           "price": "$0.005",
           "what": "French company record (SIREN/SIRET)"
          },
          {
           "route": "/api/bodacc-health",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
           "price": "$0.003",
           "what": "French company insolvency notices (BODACC)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "siren_check_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "siren": {
          "type": "string",
          "description": "SIREN/SIRET number(s), comma-separated"
         }
        },
        "required": [
         "siren"
        ]
       },
       "example": {
        "siren": "552032534"
       }
      }
     }
    },
    "summary": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived intra-EU ",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-company, /api/bodacc-health, /api/eu-vat, /api/fr-communes. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
     "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "type": "SIREN",
         "valid": true,
         "vat_number_fr": "FR27552032534",
         "related_tools": [
          {
           "route": "/api/fr-company",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
           "price": "$0.005",
           "what": "French company record (SIREN/SIRET)"
          },
          {
           "route": "/api/bodacc-health",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
           "price": "$0.003",
           "what": "French company insolvency notices (BODACC)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/phone-parse": {
   "get": {
    "operationId": "phone_parse",
    "parameters": [
     {
      "name": "phone",
      "in": "query",
      "required": true,
      "description": "Number(s); separate with ; or newline",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": false,
      "description": "Default ISO country for national numbers",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Phone number parsing and validation to E",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/iban, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/iban",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": true,
         "e164": "+33123456789",
         "country": "FR",
         "type": "FIXED_LINE",
         "related_tools": [
          {
           "route": "/api/iban",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/iban",
           "price": "$0.001",
           "what": "IBAN validation"
          },
          {
           "route": "/api/siren-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check",
           "price": "$0.001",
           "what": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "phone_parse_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "phone": "+33 1 23 45 67 89"
       }
      }
     }
    },
    "summary": "Phone number parsing and validation to E",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/iban, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Utilities"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/iban",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": true,
         "e164": "+33123456789",
         "country": "FR",
         "type": "FIXED_LINE",
         "related_tools": [
          {
           "route": "/api/iban",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/iban",
           "price": "$0.001",
           "what": "IBAN validation"
          },
          {
           "route": "/api/siren-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/siren-check",
           "price": "$0.001",
           "what": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/x402-facilitator-health": {
   "get": {
    "operationId": "x402_facilitator_health",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "Facilitator base URL (optional)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "network",
      "in": "query",
      "required": false,
      "description": "CAIP-2 network to check, default eip155:8453",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "x402 facilitator health check",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/x402-listing-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "checked": 4,
         "alive": 3,
         "results": [
          {
           "facilitator": "https://facilitator.xpay.sh",
           "alive": true,
           "supports_v2": true
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/x402-listing-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
           "price": "$0.001",
           "what": "Checks that a host exposes a valid x402 discovery listing (/"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "x402_facilitator_health_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "network": "eip155:8453"
       }
      }
     }
    },
    "summary": "x402 facilitator health check",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/x402-compliance, /api/x402-listing-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "x402 developer tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
     "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "checked": 4,
         "alive": 3,
         "results": [
          {
           "facilitator": "https://facilitator.xpay.sh",
           "alive": true,
           "supports_v2": true
          }
         ],
         "related_tools": [
          {
           "route": "/api/x402-compliance",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-compliance",
           "price": "$0.002",
           "what": "x402 V2 compliance tester"
          },
          {
           "route": "/api/x402-listing-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/x402-listing-check",
           "price": "$0.001",
           "what": "Checks that a host exposes a valid x402 discovery listing (/"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/json-schema-validate": {
   "get": {
    "operationId": "json_schema_validate",
    "parameters": [
     {
      "name": "data",
      "in": "query",
      "required": true,
      "description": "JSON value or string to check",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "repair",
      "in": "query",
      "required": false,
      "description": "true (default) / false",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-lint, /api/a2a-agent-card, /api/mcp-manifest-lint. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": false,
         "errors": [
          {
           "path": "$.age",
           "msg": "expected integer, got string"
          }
         ],
         "repaired": {
          "age": 42
         },
         "repaired_valid": true,
         "related_tools": [
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          },
          {
           "route": "/api/a2a-agent-card",
           "url": "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card",
           "price": "$0.002",
           "what": "A2A Agent Card validator and generator (A2A 1"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "json_schema_validate_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "schema": {
         "type": "object",
         "properties": {
          "age": {
           "type": "integer"
          }
         },
         "required": [
          "age"
         ]
        },
        "data": "{\"age\": \"42\"}"
       }
      }
     }
    },
    "summary": "Validate LLM/agent JSON output against a JSON Schema (2020-12 subset) and auto-repair typical errors",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-lint, /api/a2a-agent-card, /api/mcp-manifest-lint. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Agent builder tools"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": false,
         "errors": [
          {
           "path": "$.age",
           "msg": "expected integer, got string"
          }
         ],
         "repaired": {
          "age": 42
         },
         "repaired_valid": true,
         "related_tools": [
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          },
          {
           "route": "/api/a2a-agent-card",
           "url": "https://forge-tools.dentreprise.workers.dev/api/a2a-agent-card",
           "price": "$0.002",
           "what": "A2A Agent Card validator and generator (A2A 1"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/wikidata-entity": {
   "get": {
    "operationId": "wikidata_entity",
    "parameters": [
     {
      "name": "id",
      "in": "query",
      "required": false,
      "description": "Q-id",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "q",
      "in": "query",
      "required": false,
      "description": "Search text (alternative)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "lang",
      "in": "query",
      "required": false,
      "description": "Language code, default en",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Wikidata entity lookup by Q-id or search text",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/lei-lookup, /api/fr-communes, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Knowledge"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "id": "Q50189",
         "label": "Annecy",
         "claims": {
          "country": [
           {
            "id": "Q142",
            "label": "France"
           }
          ]
         },
         "related_tools": [
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          },
          {
           "route": "/api/fr-communes",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
           "price": "$0.001",
           "what": "French municipalities (INSEE COG) by name, postcode or INSEE code"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "wikidata_entity_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "q": "Annecy",
        "lang": "fr"
       }
      }
     }
    },
    "summary": "Wikidata entity lookup by Q-id or search text",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/lei-lookup, /api/fr-communes, /api/crossref-doi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Knowledge"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
     "https://forge-tools.dentreprise.workers.dev/api/crossref-doi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "id": "Q50189",
         "label": "Annecy",
         "claims": {
          "country": [
           {
            "id": "Q142",
            "label": "France"
           }
          ]
         },
         "related_tools": [
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          },
          {
           "route": "/api/fr-communes",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
           "price": "$0.001",
           "what": "French municipalities (INSEE COG) by name, postcode or INSEE code"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/fr-communes": {
   "get": {
    "operationId": "fr_communes",
    "parameters": [
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Commune name",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "postcode",
      "in": "query",
      "required": false,
      "description": "5-digit postcode",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "insee",
      "in": "query",
      "required": false,
      "description": "5-char INSEE code",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-20",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "French municipalities (INSEE COG) by name, postcode or INSEE code",
    "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-address, /api/fr-school-calendar, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "France open data"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
     "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "results": [
          {
           "name": "Annecy",
           "insee": "74010",
           "population": 132117,
           "department": {
            "code": "74"
           }
          }
         ],
         "related_tools": [
          {
           "route": "/api/fr-address",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
           "price": "$0.002",
           "what": "French address geocoding (BAN)"
          },
          {
           "route": "/api/fr-school-calendar",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
           "price": "$0.001",
           "what": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/C"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "fr_communes_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "name": "Annecy"
       }
      }
     }
    },
    "summary": "French municipalities (INSEE COG) by name, postcode or INSEE code",
    "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-address, /api/fr-school-calendar, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "France open data"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
     "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "results": [
          {
           "name": "Annecy",
           "insee": "74010",
           "population": 132117,
           "department": {
            "code": "74"
           }
          }
         ],
         "related_tools": [
          {
           "route": "/api/fr-address",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
           "price": "$0.002",
           "what": "French address geocoding (BAN)"
          },
          {
           "route": "/api/fr-school-calendar",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-school-calendar",
           "price": "$0.001",
           "what": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/C"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/fx-history": {
   "get": {
    "operationId": "fx_history",
    "parameters": [
     {
      "name": "from",
      "in": "query",
      "required": false,
      "description": "Base ISO 4217, default EUR",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "to",
      "in": "query",
      "required": true,
      "description": "Target(s), comma-separated",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "start",
      "in": "query",
      "required": true,
      "description": "YYYY-MM-DD",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "end",
      "in": "query",
      "required": false,
      "description": "YYYY-MM-DD, default today",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 years",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fx, /api/sec-financials. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Finance"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fx",
     "https://forge-tools.dentreprise.workers.dev/api/sec-financials"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "observations": 63,
         "series": {
          "USD": {
           "stats": {
            "min": 1.16,
            "max": 1.19,
            "change_pct": 1.2
           }
          }
         },
         "related_tools": [
          {
           "route": "/api/fx",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fx",
           "price": "$0.001",
           "what": "ECB spot FX conversion"
          },
          {
           "route": "/api/sec-financials",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sec-financials",
           "price": "$0.005",
           "what": "US public company financial facts from SEC EDGAR XBRL (by ticker or CIK)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "fx_history_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "from": "EUR",
        "to": "USD",
        "start": "2026-01-01",
        "end": "2026-03-31"
       }
      }
     }
    },
    "summary": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 years",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fx, /api/sec-financials. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Finance"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/fx",
     "https://forge-tools.dentreprise.workers.dev/api/sec-financials"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "observations": 63,
         "series": {
          "USD": {
           "stats": {
            "min": 1.16,
            "max": 1.19,
            "change_pct": 1.2
           }
          }
         },
         "related_tools": [
          {
           "route": "/api/fx",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fx",
           "price": "$0.001",
           "what": "ECB spot FX conversion"
          },
          {
           "route": "/api/sec-financials",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sec-financials",
           "price": "$0.005",
           "what": "US public company financial facts from SEC EDGAR XBRL (by ticker or CIK)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/fr-school-calendar": {
   "get": {
    "operationId": "fr_school_calendar",
    "parameters": [
     {
      "name": "zone",
      "in": "query",
      "required": false,
      "description": "A, B, C or overseas zone",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "year",
      "in": "query",
      "required": false,
      "description": "School year e.g. 2026-2027",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "date",
      "in": "query",
      "required": false,
      "description": "YYYY-MM-DD to test",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "academie",
      "in": "query",
      "required": false,
      "description": "Académie name filter",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/Corsica), w",
    "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).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/holidays, /api/fr-communes, /api/tz-convert. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "France open data"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/holidays",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "school_year": "2026-2027",
         "count": 6,
         "periods": [
          {
           "description": "Vacances de la Toussaint",
           "start_local": "2026-10-17"
          }
         ],
         "related_tools": [
          {
           "route": "/api/holidays",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
           "price": "$0.001",
           "what": "Public holidays by country"
          },
          {
           "route": "/api/fr-communes",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
           "price": "$0.001",
           "what": "French municipalities (INSEE COG) by name, postcode or INSEE code"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "fr_school_calendar_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "zone": "A",
        "year": "2026-2027"
       }
      }
     }
    },
    "summary": "French school holidays (calendrier scolaire, Éducation nationale) by school year and zone A/B/C (or overseas/Corsica), w",
    "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).\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/holidays, /api/fr-communes, /api/tz-convert. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "France open data"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://x402-gateway.forge-x402.workers.dev/api/holidays",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "school_year": "2026-2027",
         "count": 6,
         "periods": [
          {
           "description": "Vacances de la Toussaint",
           "start_local": "2026-10-17"
          }
         ],
         "related_tools": [
          {
           "route": "/api/holidays",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
           "price": "$0.001",
           "what": "Public holidays by country"
          },
          {
           "route": "/api/fr-communes",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-communes",
           "price": "$0.001",
           "what": "French municipalities (INSEE COG) by name, postcode or INSEE code"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/openapi-to-mcp": {
   "get": {
    "operationId": "openapi_to_mcp",
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": false,
      "description": "Spec URL",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "base_url",
      "in": "query",
      "required": false,
      "description": "Override server URL",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-lint, /api/mcp-manifest-lint, /api/x402-manifest-from-openapi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 19,
         "tools": [
          {
           "name": "getPetById",
           "inputSchema": {
            "type": "object"
           }
          }
         ],
         "related_tools": [
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          },
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "openapi_to_mcp_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "url": "https://petstore3.swagger.io/api/v3/openapi.json"
       }
      }
     }
    },
    "summary": "Convert an OpenAPI spec (JSON/YAML, URL or inline) into MCP tool definitions",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/openapi-lint, /api/mcp-manifest-lint, /api/x402-manifest-from-openapi. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "MCP developer tools"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
     "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
     "https://forge-tools.dentreprise.workers.dev/api/x402-manifest-from-openapi"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 19,
         "tools": [
          {
           "name": "getPetById",
           "inputSchema": {
            "type": "object"
           }
          }
         ],
         "related_tools": [
          {
           "route": "/api/openapi-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/openapi-lint",
           "price": "$0.002",
           "what": "OpenAPI linter for agent readiness"
          },
          {
           "route": "/api/mcp-manifest-lint",
           "url": "https://forge-tools.dentreprise.workers.dev/api/mcp-manifest-lint",
           "price": "$0.002",
           "what": "MCP manifest linter"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/sanctions-check": {
   "get": {
    "operationId": "sanctions_check",
    "parameters": [
     {
      "name": "name",
      "in": "query",
      "required": true,
      "description": "Name to screen",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "type",
      "in": "query",
      "required": false,
      "description": "person, entity or vessel (optional)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "lists",
      "in": "query",
      "required": false,
      "description": "ofac,eu,fr,uk (default all)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "threshold",
      "in": "query",
      "required": false,
      "description": "0.7-1, default 0.88",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-50",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN with aliase",
    "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.\n\nPrice: $0.005 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/supplier-due-diligence, /api/lei-lookup. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.005,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "5000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "query": "Bank Rossiya",
         "match": true,
         "highest_score": 1,
         "hits": [
          {
           "list": "eu",
           "name": "Bank Rossiya",
           "score": 1,
           "programmes": "UKR"
          }
         ],
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/supplier-due-diligence",
           "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
           "price": "$0.01",
           "what": "Supplier due diligence for any company name (optionally VAT number and country)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "sanctions_check_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "name": "Bank Rossiya",
        "type": "entity"
       }
      }
     }
    },
    "summary": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN with aliase",
    "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.\n\nPrice: $0.005 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/supplier-due-diligence, /api/lei-lookup. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.005,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "5000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "query": "Bank Rossiya",
         "match": true,
         "highest_score": 1,
         "hits": [
          {
           "list": "eu",
           "name": "Bank Rossiya",
           "score": 1,
           "programmes": "UKR"
          }
         ],
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/supplier-due-diligence",
           "url": "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
           "price": "$0.01",
           "what": "Supplier due diligence for any company name (optionally VAT number and country)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/fr-legal-status": {
   "get": {
    "operationId": "fr_legal_status",
    "parameters": [
     {
      "name": "siren",
      "in": "query",
      "required": true,
      "description": "SIREN or SIRET",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "notices 1-50",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "French company legal status by SIREN/SIRET",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/bodacc-health, /api/fr-company, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "siren": "552032534",
         "company": {
          "name": "DANONE",
          "status": "active"
         },
         "collective_proceedings": {
          "count": 0,
          "ongoing": false
         },
         "risk": "none_found",
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/bodacc-health",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
           "price": "$0.003",
           "what": "French company insolvency notices (BODACC)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "fr_legal_status_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "siren": {
          "type": "string",
          "description": "SIREN or SIRET"
         },
         "max": {
          "type": "string",
          "description": "notices 1-50"
         }
        },
        "required": [
         "siren"
        ]
       },
       "example": {
        "siren": "552032534"
       }
      }
     }
    },
    "summary": "French company legal status by SIREN/SIRET",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/bodacc-health, /api/fr-company, /api/siren-check. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
     "https://forge-tools.dentreprise.workers.dev/api/siren-check"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "siren": "552032534",
         "company": {
          "name": "DANONE",
          "status": "active"
         },
         "collective_proceedings": {
          "count": 0,
          "ongoing": false
         },
         "risk": "none_found",
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/bodacc-health",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
           "price": "$0.003",
           "what": "French company insolvency notices (BODACC)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/eu-tenders": {
   "get": {
    "operationId": "eu_tenders",
    "parameters": [
     {
      "name": "q",
      "in": "query",
      "required": true,
      "description": "Keywords",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "since",
      "in": "query",
      "required": false,
      "description": "YYYY-MM-DD, default 30 days ago",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "sources",
      "in": "query",
      "required": false,
      "description": "boamp,ted",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": false,
      "description": "TED buyer country ISO alpha-3, e.g. DEU",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-50 per source",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Public tender scanner",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-legal-status, /api/kyb-check-fr, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Sales & tenders"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 20,
         "results": [
          {
           "source": "TED",
           "title": "Software development services",
           "buyer": "…",
           "deadline": "2026-12-01"
          }
         ],
         "related_tools": [
          {
           "route": "/api/fr-legal-status",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
           "price": "$0.003",
           "what": "French company legal status by SIREN/SIRET"
          },
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "eu_tenders_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "q": "logiciel",
        "since": "2026-11-01"
       }
      }
     }
    },
    "summary": "Public tender scanner",
    "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.\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-legal-status, /api/kyb-check-fr, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Sales & tenders"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "count": 20,
         "results": [
          {
           "source": "TED",
           "title": "Software development services",
           "buyer": "…",
           "deadline": "2026-12-01"
          }
         ],
         "related_tools": [
          {
           "route": "/api/fr-legal-status",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
           "price": "$0.003",
           "what": "French company legal status by SIREN/SIRET"
          },
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/uk-postcode": {
   "get": {
    "operationId": "uk_postcode",
    "parameters": [
     {
      "name": "postcode",
      "in": "query",
      "required": false,
      "description": "UK postcode",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "lat",
      "in": "query",
      "required": false,
      "description": "reverse: latitude",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "lon",
      "in": "query",
      "required": false,
      "description": "reverse: longitude",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "UK postcode lookup and validation (postcodes",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eu-address, /api/phone-parse, /api/tz-convert. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Postcodes & addresses"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eu-address",
     "https://forge-tools.dentreprise.workers.dev/api/phone-parse",
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": true,
         "postcode": "SW1A 1AA",
         "admin_district": "Westminster",
         "lat": 51.501,
         "lon": -0.1416,
         "related_tools": [
          {
           "route": "/api/eu-address",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eu-address",
           "price": "$0.002",
           "what": "Address geocoding and normalisation through official national open services"
          },
          {
           "route": "/api/phone-parse",
           "url": "https://forge-tools.dentreprise.workers.dev/api/phone-parse",
           "price": "$0.001",
           "what": "Phone number parsing and validation to E"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "uk_postcode_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "postcode": {
          "type": "string",
          "description": "UK postcode"
         },
         "lat": {
          "type": "string",
          "description": "reverse: latitude"
         },
         "lon": {
          "type": "string",
          "description": "reverse: longitude"
         }
        },
        "required": []
       },
       "example": {
        "postcode": "SW1A 1AA"
       }
      }
     }
    },
    "summary": "UK postcode lookup and validation (postcodes",
    "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.\n\nPrice: $0.001 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eu-address, /api/phone-parse, /api/tz-convert. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Postcodes & addresses"
    ],
    "x-price-usd": 0.001,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eu-address",
     "https://forge-tools.dentreprise.workers.dev/api/phone-parse",
     "https://forge-tools.dentreprise.workers.dev/api/tz-convert"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "1000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "valid": true,
         "postcode": "SW1A 1AA",
         "admin_district": "Westminster",
         "lat": 51.501,
         "lon": -0.1416,
         "related_tools": [
          {
           "route": "/api/eu-address",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eu-address",
           "price": "$0.002",
           "what": "Address geocoding and normalisation through official national open services"
          },
          {
           "route": "/api/phone-parse",
           "url": "https://forge-tools.dentreprise.workers.dev/api/phone-parse",
           "price": "$0.001",
           "what": "Phone number parsing and validation to E"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/eu-address": {
   "get": {
    "operationId": "eu_address",
    "parameters": [
     {
      "name": "address",
      "in": "query",
      "required": true,
      "description": "Free-text address",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": true,
      "description": "FR, NL, ES or CH",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "limit",
      "in": "query",
      "required": false,
      "description": "1-10",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Address geocoding and normalisation through official national open services",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/uk-postcode, /api/fr-address, /api/fr-communes. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Postcodes & addresses"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "country": "NL",
         "count": 1,
         "results": [
          {
           "label": "Damrak 1, 1012LG Amsterdam",
           "postcode": "1012LG",
           "lat": 52.37,
           "lon": 4.89
          }
         ],
         "related_tools": [
          {
           "route": "/api/uk-postcode",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
           "price": "$0.001",
           "what": "UK postcode lookup and validation (postcodes"
          },
          {
           "route": "/api/fr-address",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
           "price": "$0.002",
           "what": "French address geocoding (BAN)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "eu_address_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "address": "Damrak 1 Amsterdam",
        "country": "NL"
       }
      }
     }
    },
    "summary": "Address geocoding and normalisation through official national open services",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/uk-postcode, /api/fr-address, /api/fr-communes. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Postcodes & addresses"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
     "https://forge-tools.dentreprise.workers.dev/api/fr-communes"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "country": "NL",
         "count": 1,
         "results": [
          {
           "label": "Damrak 1, 1012LG Amsterdam",
           "postcode": "1012LG",
           "lat": 52.37,
           "lon": 4.89
          }
         ],
         "related_tools": [
          {
           "route": "/api/uk-postcode",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
           "price": "$0.001",
           "what": "UK postcode lookup and validation (postcodes"
          },
          {
           "route": "/api/fr-address",
           "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
           "price": "$0.002",
           "what": "French address geocoding (BAN)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/no-company": {
   "get": {
    "operationId": "no_company",
    "parameters": [
     {
      "name": "orgnr",
      "in": "query",
      "required": false,
      "description": "9-digit org number",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Name search",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-20",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Norwegian company register (Brønnøysundregistrene) by org number or name",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fi-company, /api/lei-lookup, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fi-company",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "EQUINOR ASA",
         "vat_registered": true,
         "bankrupt": false,
         "related_tools": [
          {
           "route": "/api/fi-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fi-company",
           "price": "$0.002",
           "what": "Finnish company register (PRH / YTJ open data) by Business ID (Y-tunnus) or name"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "no_company_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "orgnr": "923609016"
       }
      }
     }
    },
    "summary": "Norwegian company register (Brønnøysundregistrene) by org number or name",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fi-company, /api/lei-lookup, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fi-company",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "EQUINOR ASA",
         "vat_registered": true,
         "bankrupt": false,
         "related_tools": [
          {
           "route": "/api/fi-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fi-company",
           "price": "$0.002",
           "what": "Finnish company register (PRH / YTJ open data) by Business ID (Y-tunnus) or name"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/fi-company": {
   "get": {
    "operationId": "fi_company",
    "parameters": [
     {
      "name": "business_id",
      "in": "query",
      "required": false,
      "description": "Y-tunnus 1234567-8",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Name search",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-20",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Finnish company register (PRH / YTJ open data) by Business ID (Y-tunnus) or name",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/no-company, /api/lei-lookup, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/no-company",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 1,
         "results": [
          {
           "business_id": "0112038-9",
           "name": "Nokia Oyj",
           "vat_number": "FI01120389"
          }
         ],
         "related_tools": [
          {
           "route": "/api/no-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/no-company",
           "price": "$0.002",
           "what": "Norwegian company register (Brønnøysundregistrene) by org number or name"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "fi_company_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "business_id": "0112038-9"
       }
      }
     }
    },
    "summary": "Finnish company register (PRH / YTJ open data) by Business ID (Y-tunnus) or name",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/no-company, /api/lei-lookup, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/no-company",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "total": 1,
         "results": [
          {
           "business_id": "0112038-9",
           "name": "Nokia Oyj",
           "vat_number": "FI01120389"
          }
         ],
         "related_tools": [
          {
           "route": "/api/no-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/no-company",
           "price": "$0.002",
           "what": "Norwegian company register (Brønnøysundregistrene) by org number or name"
          },
          {
           "route": "/api/lei-lookup",
           "url": "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
           "price": "$0.003",
           "what": "Legal Entity Identifier lookup from the official GLEIF register"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/uk-company": {
   "get": {
    "operationId": "uk_company",
    "parameters": [
     {
      "name": "company_number",
      "in": "query",
      "required": false,
      "description": "8-char company number",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Name search (alternative)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "max",
      "in": "query",
      "required": false,
      "description": "1-20",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "UK company register (official Companies House API)",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-uk, /api/uk-postcode, /api/supplier-due-diligence, /api/lei-lookup. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "TESCO PLC",
         "status": "active",
         "officers": {
          "active": 12
         },
         "filing": {
          "accounts_overdue": false
         },
         "related_tools": [
          {
           "route": "/api/kyb-check-uk",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
           "price": "$0.01",
           "what": "One-call KYB for a UK company (company number or name)"
          },
          {
           "route": "/api/uk-postcode",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
           "price": "$0.001",
           "what": "UK postcode lookup and validation (postcodes"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "uk_company_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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": []
       },
       "example": {
        "company_number": "00445790"
       }
      }
     }
    },
    "summary": "UK company register (official Companies House API)",
    "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.\n\nPrice: $0.002 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-uk, /api/uk-postcode, /api/supplier-due-diligence, /api/lei-lookup. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.002,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "2000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "found": true,
         "name": "TESCO PLC",
         "status": "active",
         "officers": {
          "active": 12
         },
         "filing": {
          "accounts_overdue": false
         },
         "related_tools": [
          {
           "route": "/api/kyb-check-uk",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
           "price": "$0.01",
           "what": "One-call KYB for a UK company (company number or name)"
          },
          {
           "route": "/api/uk-postcode",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-postcode",
           "price": "$0.001",
           "what": "UK postcode lookup and validation (postcodes"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/kyb-check-uk": {
   "get": {
    "operationId": "kyb_check_uk",
    "parameters": [
     {
      "name": "company_number",
      "in": "query",
      "required": false,
      "description": "8-char company number",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Name (alternative; best match is checked)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "One-call KYB for a UK company (company number or name)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/uk-company, /api/sanctions-check, /api/supplier-due-diligence, /api/kyb-check-fr. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/uk-company",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "pass",
         "flags": [],
         "company": {
          "name": "TESCO PLC",
          "status": "active"
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/uk-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-company",
           "price": "$0.002",
           "what": "UK company register (official Companies House API)"
          },
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "kyb_check_uk_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "company_number": {
          "type": "string",
          "description": "8-char company number"
         },
         "name": {
          "type": "string",
          "description": "Name (alternative; best match is checked)"
         }
        },
        "required": []
       },
       "example": {
        "company_number": "00445790"
       }
      }
     }
    },
    "summary": "One-call KYB for a UK company (company number or name)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/uk-company, /api/sanctions-check, /api/supplier-due-diligence, /api/kyb-check-fr. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/uk-company",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "pass",
         "flags": [],
         "company": {
          "name": "TESCO PLC",
          "status": "active"
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/uk-company",
           "url": "https://forge-tools.dentreprise.workers.dev/api/uk-company",
           "price": "$0.002",
           "what": "UK company register (official Companies House API)"
          },
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/eu-carbon-customs": {
   "get": {
    "operationId": "eu_carbon_customs",
    "parameters": [
     {
      "name": "cn",
      "in": "query",
      "required": true,
      "description": "CN/TARIC code 4-10 digits",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": true,
      "description": "Origin country name or ISO alpha-2",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "year",
      "in": "query",
      "required": false,
      "description": "2026+",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "tonnes",
      "in": "query",
      "required": false,
      "description": "Shipment mass in tonnes (optional)",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "price_eur",
      "in": "query",
      "required": false,
      "description": "CBAM certificate price EUR/tCO2e (optional)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "EU CBAM (carbon border adjustment) default embedded emissions for a CN/TARIC code and country of origin, from the offici",
    "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).\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eori-validate, /api/fx-history, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Customs & trade"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
     "https://forge-tools.dentreprise.workers.dev/api/fx-history",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "cn": "72081000",
         "country_table": "China",
         "items": [
          {
           "description": "Flat-rolled products…",
           "total": 2.5,
           "total_with_markup": 2.75,
           "embedded_emissions_t": 275
          }
         ],
         "related_tools": [
          {
           "route": "/api/eori-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
           "price": "$0.003",
           "what": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB nu"
          },
          {
           "route": "/api/fx-history",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history",
           "price": "$0.002",
           "what": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 ye"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "eu_carbon_customs_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "cn": "72081000",
        "country": "CN",
        "tonnes": "100",
        "price_eur": "75"
       }
      }
     }
    },
    "summary": "EU CBAM (carbon border adjustment) default embedded emissions for a CN/TARIC code and country of origin, from the offici",
    "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).\n\nPrice: $0.003 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/eori-validate, /api/fx-history, /api/supplier-due-diligence. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Customs & trade"
    ],
    "x-price-usd": 0.003,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
     "https://forge-tools.dentreprise.workers.dev/api/fx-history",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "3000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "cn": "72081000",
         "country_table": "China",
         "items": [
          {
           "description": "Flat-rolled products…",
           "total": 2.5,
           "total_with_markup": 2.75,
           "embedded_emissions_t": 275
          }
         ],
         "related_tools": [
          {
           "route": "/api/eori-validate",
           "url": "https://forge-tools.dentreprise.workers.dev/api/eori-validate",
           "price": "$0.003",
           "what": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB nu"
          },
          {
           "route": "/api/fx-history",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fx-history",
           "price": "$0.002",
           "what": "Official ECB reference-rate time series for a currency pair (or up to 10 targets) over a date range up to 2 ye"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/kyb-check-eu": {
   "get": {
    "operationId": "kyb_check_eu",
    "parameters": [
     {
      "name": "vat",
      "in": "query",
      "required": true,
      "description": "EU VAT number with country prefix",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "name",
      "in": "query",
      "required": false,
      "description": "Company name if VIES does not publish it",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "One-call KYB for any EU company by VAT number",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/kyb-check-uk, /api/supplier-due-diligence, /api/sanctions-check, /api/eu-vat. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "vat": "FR27552032534",
         "verdict": "pass",
         "flags": [],
         "vies": {
          "valid": true,
          "name": "SA DANONE"
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/kyb-check-uk",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
           "price": "$0.01",
           "what": "One-call KYB for a UK company (company number or name)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "kyb_check_eu_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "vat": "FR27552032534"
       }
      }
     }
    },
    "summary": "One-call KYB for any EU company by VAT number",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/kyb-check-fr, /api/kyb-check-uk, /api/supplier-due-diligence, /api/sanctions-check, /api/eu-vat. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://x402-gateway.forge-x402.workers.dev/api/eu-vat"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "vat": "FR27552032534",
         "verdict": "pass",
         "flags": [],
         "vies": {
          "valid": true,
          "name": "SA DANONE"
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          },
          {
           "route": "/api/kyb-check-uk",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
           "price": "$0.01",
           "what": "One-call KYB for a UK company (company number or name)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/kyb-check-fr": {
   "get": {
    "operationId": "kyb_check_fr",
    "parameters": [
     {
      "name": "siren",
      "in": "query",
      "required": true,
      "description": "SIREN or SIRET",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "One-call KYB for a French company (SIREN/SIRET)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-legal-status, /api/sanctions-check, /api/supplier-due-diligence, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "siren": "552032534",
         "verdict": "pass",
         "flags": [],
         "vat": {
          "valid": true
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/fr-legal-status",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
           "price": "$0.003",
           "what": "French company legal status by SIREN/SIRET"
          },
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "kyb_check_fr_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "siren": {
          "type": "string",
          "description": "SIREN or SIRET"
         }
        },
        "required": [
         "siren"
        ]
       },
       "example": {
        "siren": "552032534"
       }
      }
     }
    },
    "summary": "One-call KYB for a French company (SIREN/SIRET)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/fr-legal-status, /api/sanctions-check, /api/supplier-due-diligence, /api/fr-company. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/supplier-due-diligence",
     "https://x402-gateway.forge-x402.workers.dev/api/fr-company"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "siren": "552032534",
         "verdict": "pass",
         "flags": [],
         "vat": {
          "valid": true
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/fr-legal-status",
           "url": "https://forge-tools.dentreprise.workers.dev/api/fr-legal-status",
           "price": "$0.003",
           "what": "French company legal status by SIREN/SIRET"
          },
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  },
  "/api/supplier-due-diligence": {
   "get": {
    "operationId": "supplier_due_diligence",
    "parameters": [
     {
      "name": "name",
      "in": "query",
      "required": true,
      "description": "Company name",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "country",
      "in": "query",
      "required": false,
      "description": "ISO alpha-2",
      "schema": {
       "type": "string"
      }
     },
     {
      "name": "vat",
      "in": "query",
      "required": false,
      "description": "EU VAT number (optional)",
      "schema": {
       "type": "string"
      }
     }
    ],
    "summary": "Supplier due diligence for any company name (optionally VAT number and country)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/sanctions-check, /api/kyb-check-fr, /api/kyb-check-uk, /api/lei-lookup, /api/eori-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "pass",
         "flags": [],
         "vat": {
          "valid": true
         },
         "lei": {
          "candidates": [
           {
            "lei": "…",
            "status": "ACTIVE"
           }
          ]
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          },
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   },
   "post": {
    "operationId": "supplier_due_diligence_post",
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "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"
        ]
       },
       "example": {
        "name": "Nokia Oyj",
        "country": "FI",
        "vat": "FI01120389"
       }
      }
     }
    },
    "summary": "Supplier due diligence for any company name (optionally VAT number and country)",
    "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.\n\nPrice: $0.01 USDC per successful call (x402 V2, exact, eip155:8453). Unpaid requests get HTTP 402 with a PAYMENT-REQUIRED header. Failed calls (4xx/5xx) are not settled.\nRelated: /api/sanctions-check, /api/kyb-check-fr, /api/kyb-check-uk, /api/lei-lookup, /api/eori-validate. Full catalog: https://agent-hub.dentreprise.workers.dev/catalog.json",
    "tags": [
     "Company & trade identifiers"
    ],
    "x-price-usd": 0.01,
    "x-related-tools": [
     "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
     "https://forge-tools.dentreprise.workers.dev/api/kyb-check-uk",
     "https://forge-tools.dentreprise.workers.dev/api/lei-lookup",
     "https://forge-tools.dentreprise.workers.dev/api/eori-validate"
    ],
    "x-payment-info": {
     "protocol": "x402",
     "x402Version": 2,
     "scheme": "exact",
     "network": "eip155:8453",
     "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
     "amount": "10000",
     "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
    },
    "responses": {
     "200": {
      "description": "Result (JSON) with related_tools and catalog fields",
      "content": {
       "application/json": {
        "example": {
         "verdict": "pass",
         "flags": [],
         "vat": {
          "valid": true
         },
         "lei": {
          "candidates": [
           {
            "lei": "…",
            "status": "ACTIVE"
           }
          ]
         },
         "sanctions": {
          "match": false
         },
         "related_tools": [
          {
           "route": "/api/sanctions-check",
           "url": "https://forge-tools.dentreprise.workers.dev/api/sanctions-check",
           "price": "$0.005",
           "what": "Sanctions screening of a person, company or vessel name against the US Consolidated Screening List (OFAC SDN w"
          },
          {
           "route": "/api/kyb-check-fr",
           "url": "https://forge-tools.dentreprise.workers.dev/api/kyb-check-fr",
           "price": "$0.01",
           "what": "One-call KYB for a French company (SIREN/SIRET)"
          }
         ],
         "catalog": "https://agent-hub.dentreprise.workers.dev/catalog.json"
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (not charged)"
     },
     "402": {
      "description": "Payment required (x402 V2). Decode the PAYMENT-REQUIRED header, sign, retry with PAYMENT-SIGNATURE."
     },
     "502": {
      "description": "Upstream source error (not charged)"
     }
    },
    "security": [
     {
      "x402": []
     }
    ]
   }
  }
 }
}