{
  "openapi": "3.1.0",
  "info": {
    "title": "Forge Agent API",
    "version": "1.0.0",
    "summary": "Pay-per-call utility APIs for agents and developers. USDC on Base via x402. No account, no API key.",
    "description": "Each paid path accepts GET (query string) or POST (JSON body). Call once without payment to receive an HTTP 402 challenge, then retry with a PAYMENT-SIGNATURE or X-PAYMENT header. Settlement is USDC on Base (eip155:8453), scheme `exact`.\n\nPublished by Forge Agent Hub. Contact: jqfpxwv7@mail.grokbot.com.\n\nThis specification is generated from the live route table. The API base is https://x402-gateway.forge-x402.workers.dev. An MCP server (Streamable HTTP) is exposed at https://x402-gateway.forge-x402.workers.dev/mcp (one tool per path, plus free `list_endpoints`; payment in MCP `_meta`).",
    "contact": {
      "name": "Forge Agent Hub",
      "email": "jqfpxwv7@mail.grokbot.com",
      "url": "https://agent-hub.dentreprise.workers.dev"
    }
  },
  "servers": [
    {
      "url": "https://x402-gateway.forge-x402.workers.dev",
      "description": "x402 gateway (original tools)."
    },
    {
      "url": "https://forge-tools.dentreprise.workers.dev",
      "description": "Wave-1 tools worker."
    }
  ],
  "tags": [
    {
      "name": "x402",
      "description": "Paid JSON endpoints. Unpaid calls return 402."
    }
  ],
  "paths": {
    "/api/fr-company": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "fr_company_get",
        "tags": [
          "x402"
        ],
        "summary": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises",
        "description": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public. Pay-per-call: $0.005 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Company name, SIREN (9 digits) or SIRET (14 digits)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "siren": {
                            "type": "string",
                            "example": "552032534"
                          },
                          "name": {
                            "type": "string",
                            "example": "DANONE"
                          },
                          "naf": {
                            "type": "string",
                            "example": "70.10Z"
                          },
                          "hq_address": {
                            "type": "string",
                            "example": "59-61 RUE LA FAYETTE 75009 PARIS"
                          },
                          "active": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "results": [
                    {
                      "siren": "552032534",
                      "name": "DANONE",
                      "naf": "70.10Z",
                      "hq_address": "59-61 RUE LA FAYETTE 75009 PARIS",
                      "active": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
                    "description": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fr_company",
        "tags": [
          "x402"
        ],
        "summary": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises (JSON body)",
        "description": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public. Pay-per-call: $0.005 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "q": {
                    "type": "string",
                    "description": "Company name, SIREN (9 digits) or SIRET (14 digits)"
                  }
                },
                "required": [
                  "q"
                ]
              },
              "example": {
                "q": "danone"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "siren": {
                            "type": "string",
                            "example": "552032534"
                          },
                          "name": {
                            "type": "string",
                            "example": "DANONE"
                          },
                          "naf": {
                            "type": "string",
                            "example": "70.10Z"
                          },
                          "hq_address": {
                            "type": "string",
                            "example": "59-61 RUE LA FAYETTE 75009 PARIS"
                          },
                          "active": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "results": [
                    {
                      "siren": "552032534",
                      "name": "DANONE",
                      "naf": "70.10Z",
                      "hq_address": "59-61 RUE LA FAYETTE 75009 PARIS",
                      "active": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-company",
                    "description": "French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/eu-vat": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "eu_vat_get",
        "tags": [
          "x402"
        ],
        "summary": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address)",
        "description": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address). Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "vat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "VAT number with 2-letter country prefix, e.g. FR40303265045"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "number": {
                      "type": "string",
                      "example": "40303265045"
                    },
                    "name": {
                      "type": "string",
                      "example": "SA SODIMAS"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "country": "FR",
                  "number": "40303265045",
                  "name": "SA SODIMAS"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
                    "description": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "eu_vat",
        "tags": [
          "x402"
        ],
        "summary": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address) (JSON body)",
        "description": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address). Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "vat": {
                    "type": "string",
                    "description": "VAT number with 2-letter country prefix, e.g. FR40303265045"
                  }
                },
                "required": [
                  "vat"
                ]
              },
              "example": {
                "vat": "FR40303265045"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "number": {
                      "type": "string",
                      "example": "40303265045"
                    },
                    "name": {
                      "type": "string",
                      "example": "SA SODIMAS"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "country": "FR",
                  "number": "40303265045",
                  "name": "SA SODIMAS"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-vat",
                    "description": "EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/iban": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "iban_get",
        "tags": [
          "x402"
        ],
        "summary": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN",
        "description": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "iban",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "iban"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "iban": {
                      "type": "string",
                      "example": "FR7630006000011234567890189"
                    },
                    "bban": {
                      "type": "string",
                      "example": "30006000011234567890189"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "country": "FR",
                  "iban": "FR7630006000011234567890189",
                  "bban": "30006000011234567890189"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/iban",
                    "description": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "iban",
        "tags": [
          "x402"
        ],
        "summary": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN (JSON body)",
        "description": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "iban": {
                    "type": "string"
                  }
                },
                "required": [
                  "iban"
                ]
              },
              "example": {
                "iban": "FR7630006000011234567890189"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "iban": {
                      "type": "string",
                      "example": "FR7630006000011234567890189"
                    },
                    "bban": {
                      "type": "string",
                      "example": "30006000011234567890189"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "country": "FR",
                  "iban": "FR7630006000011234567890189",
                  "bban": "30006000011234567890189"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/iban",
                    "description": "IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/markdown": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "markdown_get",
        "tags": [
          "x402"
        ],
        "summary": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title",
        "description": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "http(s) URL of a public page"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "example": "https://example.com"
                    },
                    "title": {
                      "type": "string",
                      "example": "Example Domain"
                    },
                    "markdown": {
                      "type": "string",
                      "example": "# Example Domain\n..."
                    }
                  }
                },
                "example": {
                  "url": "https://example.com",
                  "title": "Example Domain",
                  "markdown": "# Example Domain\n..."
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/markdown",
                    "description": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "markdown",
        "tags": [
          "x402"
        ],
        "summary": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title (JSON body)",
        "description": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "http(s) URL of a public page"
                  }
                },
                "required": [
                  "url"
                ]
              },
              "example": {
                "url": "https://en.wikipedia.org/wiki/HTTP_402"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "example": "https://example.com"
                    },
                    "title": {
                      "type": "string",
                      "example": "Example Domain"
                    },
                    "markdown": {
                      "type": "string",
                      "example": "# Example Domain\n..."
                    }
                  }
                },
                "example": {
                  "url": "https://example.com",
                  "title": "Example Domain",
                  "markdown": "# Example Domain\n..."
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/markdown",
                    "description": "Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fr-address": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "fr_address_get",
        "tags": [
          "x402"
        ],
        "summary": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse",
        "description": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Free-text French address"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "label": {
                            "type": "string",
                            "example": "8 Boulevard du Port 95000 Cergy"
                          },
                          "postcode": {
                            "type": "string",
                            "example": "95000"
                          },
                          "city": {
                            "type": "string",
                            "example": "Cergy"
                          },
                          "citycode": {
                            "type": "string",
                            "example": "95127"
                          },
                          "lat": {
                            "type": "number",
                            "example": 49.03
                          },
                          "lon": {
                            "type": "number",
                            "example": 2.06
                          },
                          "score": {
                            "type": "number",
                            "example": 0.95
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "results": [
                    {
                      "label": "8 Boulevard du Port 95000 Cergy",
                      "postcode": "95000",
                      "city": "Cergy",
                      "citycode": "95127",
                      "lat": 49.03,
                      "lon": 2.06,
                      "score": 0.95
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
                    "description": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fr_address",
        "tags": [
          "x402"
        ],
        "summary": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse (JSON body)",
        "description": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "q": {
                    "type": "string",
                    "description": "Free-text French address"
                  }
                },
                "required": [
                  "q"
                ]
              },
              "example": {
                "q": "8 bd du port 95000 cergy"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "label": {
                            "type": "string",
                            "example": "8 Boulevard du Port 95000 Cergy"
                          },
                          "postcode": {
                            "type": "string",
                            "example": "95000"
                          },
                          "city": {
                            "type": "string",
                            "example": "Cergy"
                          },
                          "citycode": {
                            "type": "string",
                            "example": "95127"
                          },
                          "lat": {
                            "type": "number",
                            "example": 49.03
                          },
                          "lon": {
                            "type": "number",
                            "example": 2.06
                          },
                          "score": {
                            "type": "number",
                            "example": 0.95
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "results": [
                    {
                      "label": "8 Boulevard du Port 95000 Cergy",
                      "postcode": "95000",
                      "city": "Cergy",
                      "citycode": "95127",
                      "lat": 49.03,
                      "lon": 2.06,
                      "score": 0.95
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-address",
                    "description": "French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/holidays": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "holidays_get",
        "tags": [
          "x402"
        ],
        "summary": "Official public holidays for a country and year (100+ countries, Nager",
        "description": "Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISO 3166-1 alpha-2 country code"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "4-digit year"
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "optional YYYY-MM-DD to test"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "year": {
                      "type": "integer",
                      "example": 2026
                    },
                    "count": {
                      "type": "integer",
                      "example": 11
                    },
                    "holidays": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "example": "2026-01-01"
                          },
                          "name": {
                            "type": "string",
                            "example": "New Year's Day"
                          },
                          "local_name": {
                            "type": "string",
                            "example": "Jour de l'an"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "country": "FR",
                  "year": 2026,
                  "count": 11,
                  "holidays": [
                    {
                      "date": "2026-01-01",
                      "name": "New Year's Day",
                      "local_name": "Jour de l'an"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
                    "description": "Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "holidays",
        "tags": [
          "x402"
        ],
        "summary": "Official public holidays for a country and year (100+ countries, Nager (JSON body)",
        "description": "Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "string",
                    "description": "ISO 3166-1 alpha-2 country code"
                  },
                  "year": {
                    "type": "string",
                    "description": "4-digit year"
                  },
                  "date": {
                    "type": "string",
                    "description": "optional YYYY-MM-DD to test"
                  }
                },
                "required": [
                  "country"
                ]
              },
              "example": {
                "country": "FR",
                "year": "2026"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "year": {
                      "type": "integer",
                      "example": 2026
                    },
                    "count": {
                      "type": "integer",
                      "example": 11
                    },
                    "holidays": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "date": {
                            "type": "string",
                            "example": "2026-01-01"
                          },
                          "name": {
                            "type": "string",
                            "example": "New Year's Day"
                          },
                          "local_name": {
                            "type": "string",
                            "example": "Jour de l'an"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "country": "FR",
                  "year": 2026,
                  "count": 11,
                  "holidays": [
                    {
                      "date": "2026-01-01",
                      "name": "New Year's Day",
                      "local_name": "Jour de l'an"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/holidays",
                    "description": "Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fx": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "fx_get",
        "tags": [
          "x402"
        ],
        "summary": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date",
        "description": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "from"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "to"
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "amount"
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "optional YYYY-MM-DD historical rate"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "string",
                      "example": "EUR"
                    },
                    "to": {
                      "type": "string",
                      "example": "USD"
                    },
                    "amount": {
                      "type": "integer",
                      "example": 100
                    },
                    "rate": {
                      "type": "number",
                      "example": 1.1267
                    },
                    "result": {
                      "type": "number",
                      "example": 112.67
                    },
                    "date": {
                      "type": "string",
                      "example": "2026-11-04"
                    },
                    "source": {
                      "type": "string",
                      "example": "ECB"
                    }
                  }
                },
                "example": {
                  "from": "EUR",
                  "to": "USD",
                  "amount": 100,
                  "rate": 1.1267,
                  "result": 112.67,
                  "date": "2026-11-04",
                  "source": "ECB"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fx",
                    "description": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fx",
        "tags": [
          "x402"
        ],
        "summary": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date (JSON body)",
        "description": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "from": {
                    "type": "string"
                  },
                  "to": {
                    "type": "string"
                  },
                  "amount": {
                    "type": "string"
                  },
                  "date": {
                    "type": "string",
                    "description": "optional YYYY-MM-DD historical rate"
                  }
                },
                "required": [
                  "from",
                  "to"
                ]
              },
              "example": {
                "from": "EUR",
                "to": "USD",
                "amount": "100"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "from": {
                      "type": "string",
                      "example": "EUR"
                    },
                    "to": {
                      "type": "string",
                      "example": "USD"
                    },
                    "amount": {
                      "type": "integer",
                      "example": 100
                    },
                    "rate": {
                      "type": "number",
                      "example": 1.1267
                    },
                    "result": {
                      "type": "number",
                      "example": 112.67
                    },
                    "date": {
                      "type": "string",
                      "example": "2026-11-04"
                    },
                    "source": {
                      "type": "string",
                      "example": "ECB"
                    }
                  }
                },
                "example": {
                  "from": "EUR",
                  "to": "USD",
                  "amount": 100,
                  "rate": 1.1267,
                  "result": 112.67,
                  "date": "2026-11-04",
                  "source": "ECB"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fx",
                    "description": "Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/web-meta": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "web_meta_get",
        "tags": [
          "x402"
        ],
        "summary": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s",
        "description": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "url"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "example": "https://example.com"
                    },
                    "status": {
                      "type": "integer",
                      "example": 200
                    },
                    "title": {
                      "type": "string",
                      "example": "Example Domain"
                    },
                    "description": {
                      "type": [
                        "string",
                        "number",
                        "object",
                        "array",
                        "boolean",
                        "null"
                      ]
                    },
                    "og": {
                      "type": "object",
                      "properties": {}
                    },
                    "feeds": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "url": "https://example.com",
                  "status": 200,
                  "title": "Example Domain",
                  "description": null,
                  "og": {},
                  "feeds": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
                    "description": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "web_meta",
        "tags": [
          "x402"
        ],
        "summary": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s (JSON body)",
        "description": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  }
                },
                "required": [
                  "url"
                ]
              },
              "example": {
                "url": "https://en.wikipedia.org/wiki/HTTP_402"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "url": {
                      "type": "string",
                      "example": "https://example.com"
                    },
                    "status": {
                      "type": "integer",
                      "example": 200
                    },
                    "title": {
                      "type": "string",
                      "example": "Example Domain"
                    },
                    "description": {
                      "type": [
                        "string",
                        "number",
                        "object",
                        "array",
                        "boolean",
                        "null"
                      ]
                    },
                    "og": {
                      "type": "object",
                      "properties": {}
                    },
                    "feeds": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "url": "https://example.com",
                  "status": 200,
                  "title": "Example Domain",
                  "description": null,
                  "og": {},
                  "feeds": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/web-meta",
                    "description": "Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/email-check": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "email_check_get",
        "tags": [
          "x402"
        ],
        "summary": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags",
        "description": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "email",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "email"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "example": "contact@example.com"
                    },
                    "syntax_ok": {
                      "type": "boolean",
                      "example": true
                    },
                    "domain": {
                      "type": "string",
                      "example": "example.com"
                    },
                    "has_mx": {
                      "type": "boolean",
                      "example": true
                    },
                    "mx": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "mx.example.com"
                      }
                    },
                    "disposable": {
                      "type": "boolean",
                      "example": false
                    },
                    "role_account": {
                      "type": "boolean",
                      "example": true
                    }
                  }
                },
                "example": {
                  "email": "contact@example.com",
                  "syntax_ok": true,
                  "domain": "example.com",
                  "has_mx": true,
                  "mx": [
                    "mx.example.com"
                  ],
                  "disposable": false,
                  "role_account": true
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/email-check",
                    "description": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "email_check",
        "tags": [
          "x402"
        ],
        "summary": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags (JSON body)",
        "description": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "email": {
                    "type": "string"
                  }
                },
                "required": [
                  "email"
                ]
              },
              "example": {
                "email": "postmaster@gmail.com"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "email": {
                      "type": "string",
                      "example": "contact@example.com"
                    },
                    "syntax_ok": {
                      "type": "boolean",
                      "example": true
                    },
                    "domain": {
                      "type": "string",
                      "example": "example.com"
                    },
                    "has_mx": {
                      "type": "boolean",
                      "example": true
                    },
                    "mx": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "mx.example.com"
                      }
                    },
                    "disposable": {
                      "type": "boolean",
                      "example": false
                    },
                    "role_account": {
                      "type": "boolean",
                      "example": true
                    }
                  }
                },
                "example": {
                  "email": "contact@example.com",
                  "syntax_ok": true,
                  "domain": "example.com",
                  "has_mx": true,
                  "mx": [
                    "mx.example.com"
                  ],
                  "disposable": false,
                  "role_account": true
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/email-check",
                    "description": "Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/rdap": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "rdap_get",
        "tags": [
          "x402"
        ],
        "summary": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days",
        "description": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "domain"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "type": "string",
                      "example": "EXAMPLE.COM"
                    },
                    "registrar": {
                      "type": "string",
                      "example": "RESERVED-Internet Assigned Numbers Authority"
                    },
                    "created": {
                      "type": "string",
                      "example": "1995-08-14T04:00:00Z"
                    },
                    "expires": {
                      "type": "string",
                      "example": "2026-08-13T04:00:00Z"
                    },
                    "age_days": {
                      "type": "integer",
                      "example": 11400
                    },
                    "nameservers": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "A.IANA-SERVERS.NET"
                      }
                    }
                  }
                },
                "example": {
                  "domain": "EXAMPLE.COM",
                  "registrar": "RESERVED-Internet Assigned Numbers Authority",
                  "created": "1995-08-14T04:00:00Z",
                  "expires": "2026-08-13T04:00:00Z",
                  "age_days": 11400,
                  "nameservers": [
                    "A.IANA-SERVERS.NET"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/rdap",
                    "description": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "rdap",
        "tags": [
          "x402"
        ],
        "summary": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days (JSON body)",
        "description": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "domain": {
                    "type": "string"
                  }
                },
                "required": [
                  "domain"
                ]
              },
              "example": {
                "domain": "wikipedia.org"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "domain": {
                      "type": "string",
                      "example": "EXAMPLE.COM"
                    },
                    "registrar": {
                      "type": "string",
                      "example": "RESERVED-Internet Assigned Numbers Authority"
                    },
                    "created": {
                      "type": "string",
                      "example": "1995-08-14T04:00:00Z"
                    },
                    "expires": {
                      "type": "string",
                      "example": "2026-08-13T04:00:00Z"
                    },
                    "age_days": {
                      "type": "integer",
                      "example": 11400
                    },
                    "nameservers": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "A.IANA-SERVERS.NET"
                      }
                    }
                  }
                },
                "example": {
                  "domain": "EXAMPLE.COM",
                  "registrar": "RESERVED-Internet Assigned Numbers Authority",
                  "created": "1995-08-14T04:00:00Z",
                  "expires": "2026-08-13T04:00:00Z",
                  "age_days": 11400,
                  "nameservers": [
                    "A.IANA-SERVERS.NET"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/rdap",
                    "description": "Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/ch-uid": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "ch_uid_get",
        "tags": [
          "x402"
        ],
        "summary": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse)",
        "description": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "uid",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Swiss UID, e.g. CHE-105.829.940 or CHE105829940 MWST"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uid": {
                      "type": "string",
                      "example": "CHE-105.829.940"
                    },
                    "uidFormatValid": {
                      "type": "boolean",
                      "example": true
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "isActive": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "Migros-Genossenschafts-Bund"
                    },
                    "legalForm": {
                      "type": "string",
                      "example": "Cooperative (Genossenschaft)"
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "registered": {
                          "type": "boolean",
                          "example": true
                        },
                        "active": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    }
                  }
                },
                "example": {
                  "uid": "CHE-105.829.940",
                  "uidFormatValid": true,
                  "found": true,
                  "isActive": true,
                  "name": "Migros-Genossenschafts-Bund",
                  "legalForm": "Cooperative (Genossenschaft)",
                  "vat": {
                    "registered": true,
                    "active": true
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/ch-uid",
                    "description": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "ch_uid",
        "tags": [
          "x402"
        ],
        "summary": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse) (JSON body)",
        "description": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uid": {
                    "type": "string",
                    "description": "Swiss UID, e.g. CHE-105.829.940 or CHE105829940 MWST"
                  }
                },
                "required": [
                  "uid"
                ]
              },
              "example": {
                "uid": "CHE-105.829.940"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "uid": {
                      "type": "string",
                      "example": "CHE-105.829.940"
                    },
                    "uidFormatValid": {
                      "type": "boolean",
                      "example": true
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "isActive": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "Migros-Genossenschafts-Bund"
                    },
                    "legalForm": {
                      "type": "string",
                      "example": "Cooperative (Genossenschaft)"
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "registered": {
                          "type": "boolean",
                          "example": true
                        },
                        "active": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    }
                  }
                },
                "example": {
                  "uid": "CHE-105.829.940",
                  "uidFormatValid": true,
                  "found": true,
                  "isActive": true,
                  "name": "Migros-Genossenschafts-Bund",
                  "legalForm": "Cooperative (Genossenschaft)",
                  "vat": {
                    "registered": true,
                    "active": true
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/ch-uid",
                    "description": "Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/ch-uid-batch": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "ch_uid_batch_get",
        "tags": [
          "x402"
        ],
        "summary": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register",
        "description": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked. Pay-per-call: $0.05 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "uids",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Up to 25 Swiss UIDs, comma/space/newline separated (POST may also send a JSON array)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.05"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "50000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.05"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "50000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 2
                    },
                    "found": {
                      "type": "integer",
                      "example": 2
                    },
                    "invalidFormat": {
                      "type": "integer",
                      "example": 0
                    },
                    "results": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "count": 2,
                  "found": 2,
                  "invalidFormat": 0,
                  "results": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/ch-uid-batch",
                    "description": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "50000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "ch_uid_batch",
        "tags": [
          "x402"
        ],
        "summary": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register (JSON body)",
        "description": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked. Pay-per-call: $0.05 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "uids": {
                    "type": "string",
                    "description": "Up to 25 Swiss UIDs, comma/space/newline separated (POST may also send a JSON array)"
                  }
                },
                "required": [
                  "uids"
                ]
              },
              "example": {
                "uids": "CHE-105.829.940,CHE-105.909.036"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.05"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "50000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.05"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "50000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 2
                    },
                    "found": {
                      "type": "integer",
                      "example": 2
                    },
                    "invalidFormat": {
                      "type": "integer",
                      "example": 0
                    },
                    "results": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "count": 2,
                  "found": 2,
                  "invalidFormat": 0,
                  "results": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/ch-uid-batch",
                    "description": "Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "50000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/dvf-price-m2": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "dvf_price_m2_get",
        "tags": [
          "x402"
        ],
        "summary": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale",
        "description": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte. Pay-per-call: $0.01 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "French street address"
          },
          {
            "name": "propertyType",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "optional: Appartement or Maison"
          },
          {
            "name": "surface",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "optional surface in m2 for an estimate"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "geocodedLabel": {
                      "type": "string",
                      "example": "10 Rue de la Paix 75002 Paris"
                    },
                    "apartmentMedianPricePerM2": {
                      "type": "integer",
                      "example": 12857
                    },
                    "apartmentSales": {
                      "type": "integer",
                      "example": 381
                    },
                    "houseMedianPricePerM2": {
                      "type": "integer",
                      "example": 17846
                    },
                    "houseSales": {
                      "type": "integer",
                      "example": 12
                    }
                  }
                },
                "example": {
                  "found": true,
                  "geocodedLabel": "10 Rue de la Paix 75002 Paris",
                  "apartmentMedianPricePerM2": 12857,
                  "apartmentSales": 381,
                  "houseMedianPricePerM2": 17846,
                  "houseSales": 12
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/dvf-price-m2",
                    "description": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "dvf_price_m2",
        "tags": [
          "x402"
        ],
        "summary": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale (JSON body)",
        "description": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte. Pay-per-call: $0.01 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "address": {
                    "type": "string",
                    "description": "French street address"
                  },
                  "propertyType": {
                    "type": "string",
                    "description": "optional: Appartement or Maison"
                  },
                  "surface": {
                    "type": "number",
                    "description": "optional surface in m2 for an estimate"
                  }
                },
                "required": [
                  "address"
                ]
              },
              "example": {
                "address": "10 rue de la Paix, Paris"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "geocodedLabel": {
                      "type": "string",
                      "example": "10 Rue de la Paix 75002 Paris"
                    },
                    "apartmentMedianPricePerM2": {
                      "type": "integer",
                      "example": 12857
                    },
                    "apartmentSales": {
                      "type": "integer",
                      "example": 381
                    },
                    "houseMedianPricePerM2": {
                      "type": "integer",
                      "example": 17846
                    },
                    "houseSales": {
                      "type": "integer",
                      "example": 12
                    }
                  }
                },
                "example": {
                  "found": true,
                  "geocodedLabel": "10 Rue de la Paix 75002 Paris",
                  "apartmentMedianPricePerM2": 12857,
                  "apartmentSales": 381,
                  "houseMedianPricePerM2": 17846,
                  "houseSales": 12
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/dvf-price-m2",
                    "description": "French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/bodacc-health": {
      "servers": [
        {
          "url": "https://x402-gateway.forge-x402.workers.dev",
          "description": "x402 gateway"
        }
      ],
      "get": {
        "operationId": "bodacc_health_get",
        "tags": [
          "x402"
        ],
        "summary": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary",
        "description": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "siren",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SIREN (9 digits) or SIRET (14 digits)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "DANONE"
                    },
                    "noticesTotal": {
                      "type": "integer",
                      "example": 107
                    },
                    "lastNoticeDate": {
                      "type": "string",
                      "example": "2026-09-02"
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "found": true,
                  "name": "DANONE",
                  "noticesTotal": 107,
                  "lastNoticeDate": "2026-09-02"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
                    "description": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "bodacc_health",
        "tags": [
          "x402"
        ],
        "summary": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary (JSON body)",
        "description": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "siren": {
                    "type": "string",
                    "description": "SIREN (9 digits) or SIRET (14 digits)"
                  }
                },
                "required": [
                  "siren"
                ]
              },
              "example": {
                "siren": "552032534"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "DANONE"
                    },
                    "noticesTotal": {
                      "type": "integer",
                      "example": 107
                    },
                    "lastNoticeDate": {
                      "type": "string",
                      "example": "2026-09-02"
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "found": true,
                  "name": "DANONE",
                  "noticesTotal": 107,
                  "lastNoticeDate": "2026-09-02"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/bodacc-health",
                    "description": "French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/x402-compliance": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "x402_compliance_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Paid endpoint URL to test"
          },
          {
            "name": "method",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "GET (default) or POST"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "compliant"
                    },
                    "score": {
                      "type": "integer",
                      "example": 100
                    },
                    "summary": {
                      "type": "object",
                      "properties": {
                        "pass": {
                          "type": "integer",
                          "example": 14
                        },
                        "warn": {
                          "type": "integer",
                          "example": 0
                        },
                        "fail": {
                          "type": "integer",
                          "example": 0
                        }
                      }
                    },
                    "checks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "status_402"
                          },
                          "status": {
                            "type": "string",
                            "example": "pass"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "compliant",
                  "score": 100,
                  "summary": {
                    "pass": 14,
                    "warn": 0,
                    "fail": 0
                  },
                  "checks": [
                    {
                      "id": "status_402",
                      "status": "pass"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-compliance",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "x402_compliance",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "compliant"
                    },
                    "score": {
                      "type": "integer",
                      "example": 100
                    },
                    "summary": {
                      "type": "object",
                      "properties": {
                        "pass": {
                          "type": "integer",
                          "example": 14
                        },
                        "warn": {
                          "type": "integer",
                          "example": 0
                        },
                        "fail": {
                          "type": "integer",
                          "example": 0
                        }
                      }
                    },
                    "checks": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "status_402"
                          },
                          "status": {
                            "type": "string",
                            "example": "pass"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "compliant",
                  "score": 100,
                  "summary": {
                    "pass": 14,
                    "warn": 0,
                    "fail": 0
                  },
                  "checks": [
                    {
                      "id": "status_402",
                      "status": "pass"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-compliance",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/a2a-agent-card": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "a2a_agent_card_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Agent origin or card URL"
          },
          {
            "name": "card",
            "in": "query",
            "required": false,
            "schema": {
              "type": "object"
            },
            "description": "Inline Agent Card JSON (POST)"
          },
          {
            "name": "mode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "validate (default) or generate"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "generate: agent name"
          },
          {
            "name": "description",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "generate: description"
          },
          {
            "name": "endpoint",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "generate: A2A endpoint https URL"
          },
          {
            "name": "skills",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "generate: JSON array or comma-separated skill names"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "example": "validate"
                    },
                    "spec_version_detected": {
                      "type": "string",
                      "example": "1.0"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 1
                    },
                    "issues": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "mode": "validate",
                  "spec_version_detected": "1.0",
                  "valid": true,
                  "errors": 0,
                  "warnings": 1,
                  "issues": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/a2a-agent-card",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "a2a_agent_card",
        "tags": [
          "x402"
        ],
        "summary": "A2A Agent Card validator and generator (A2A 1 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "type": "string",
                      "example": "validate"
                    },
                    "spec_version_detected": {
                      "type": "string",
                      "example": "1.0"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 1
                    },
                    "issues": {
                      "type": "array",
                      "items": {}
                    }
                  }
                },
                "example": {
                  "mode": "validate",
                  "spec_version_detected": "1.0",
                  "valid": true,
                  "errors": 0,
                  "warnings": 1,
                  "issues": []
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/a2a-agent-card",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/mcp-manifest-lint": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "mcp_manifest_lint_get",
        "tags": [
          "x402"
        ],
        "summary": "MCP manifest linter: validates an MCP registry server",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "URL of server.json or config"
          },
          {
            "name": "manifest",
            "in": "query",
            "required": false,
            "schema": {
              "type": "object"
            },
            "description": "Inline server.json or host config (POST)"
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "server_json or host_config (auto-detected)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "example": "server_json"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 1
                    },
                    "registry_ready": {
                      "type": "boolean",
                      "example": false
                    },
                    "issues": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "example": "warning"
                          },
                          "path": {
                            "type": "string",
                            "example": "$schema"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "kind": "server_json",
                  "valid": true,
                  "errors": 0,
                  "warnings": 1,
                  "registry_ready": false,
                  "issues": [
                    {
                      "level": "warning",
                      "path": "$schema"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/mcp-manifest-lint",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "mcp_manifest_lint",
        "tags": [
          "x402"
        ],
        "summary": "MCP manifest linter: validates an MCP registry server (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
                    }
                  ]
                }
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "example": "server_json"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 1
                    },
                    "registry_ready": {
                      "type": "boolean",
                      "example": false
                    },
                    "issues": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "example": "warning"
                          },
                          "path": {
                            "type": "string",
                            "example": "$schema"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "kind": "server_json",
                  "valid": true,
                  "errors": 0,
                  "warnings": 1,
                  "registry_ready": false,
                  "issues": [
                    {
                      "level": "warning",
                      "path": "$schema"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/mcp-manifest-lint",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/x402-manifest-from-openapi": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "x402_manifest_from_openapi_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "OpenAPI URL"
          },
          {
            "name": "spec",
            "in": "query",
            "required": false,
            "schema": {
              "type": "object"
            },
            "description": "Inline spec (POST)"
          },
          {
            "name": "payTo",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Receiving address"
          },
          {
            "name": "price",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Default USD price per call"
          },
          {
            "name": "prices",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "JSON map {\"GET /path\": 0.002}"
          },
          {
            "name": "network",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "CAIP-2, default eip155:8453"
          },
          {
            "name": "base_url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Override server URL"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "operations": {
                      "type": "integer",
                      "example": 19
                    },
                    "routes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "method": {
                            "type": "string",
                            "example": "GET"
                          },
                          "path": {
                            "type": "string",
                            "example": "/pet/{petId}"
                          },
                          "accepts": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "scheme": {
                                  "type": "string",
                                  "example": "exact"
                                },
                                "amount": {
                                  "type": "string",
                                  "example": "1000"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "well_known_x402": {
                      "type": "object",
                      "properties": {
                        "version": {
                          "type": "integer",
                          "example": 1
                        },
                        "resources": {
                          "type": "array",
                          "items": {}
                        }
                      }
                    }
                  }
                },
                "example": {
                  "operations": 19,
                  "routes": [
                    {
                      "method": "GET",
                      "path": "/pet/{petId}",
                      "accepts": [
                        {
                          "scheme": "exact",
                          "amount": "1000"
                        }
                      ]
                    }
                  ],
                  "well_known_x402": {
                    "version": 1,
                    "resources": []
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-manifest-from-openapi",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "x402_manifest_from_openapi",
        "tags": [
          "x402"
        ],
        "summary": "Turn an OpenAPI 3 (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "operations": {
                      "type": "integer",
                      "example": 19
                    },
                    "routes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "method": {
                            "type": "string",
                            "example": "GET"
                          },
                          "path": {
                            "type": "string",
                            "example": "/pet/{petId}"
                          },
                          "accepts": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "scheme": {
                                  "type": "string",
                                  "example": "exact"
                                },
                                "amount": {
                                  "type": "string",
                                  "example": "1000"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    "well_known_x402": {
                      "type": "object",
                      "properties": {
                        "version": {
                          "type": "integer",
                          "example": 1
                        },
                        "resources": {
                          "type": "array",
                          "items": {}
                        }
                      }
                    }
                  }
                },
                "example": {
                  "operations": 19,
                  "routes": [
                    {
                      "method": "GET",
                      "path": "/pet/{petId}",
                      "accepts": [
                        {
                          "scheme": "exact",
                          "amount": "1000"
                        }
                      ]
                    }
                  ],
                  "well_known_x402": {
                    "version": 1,
                    "resources": []
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-manifest-from-openapi",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/pubmed-search": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "pubmed_search_get",
        "tags": [
          "x402"
        ],
        "summary": "PubMed / MEDLINE search with full records: PMID, title, authors, journal, year, volume/pages, DOI, PMCID, publication types, MeSH terms and abstract",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "PubMed query"
          },
          {
            "name": "pmid",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated PMIDs (alternative to q)"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20, default 5"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "relevance or pub_date"
          },
          {
            "name": "abstracts",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "true/false, default true"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1234
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "articles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "pmid": {
                            "type": "string",
                            "example": "38000000"
                          },
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "doi": {
                            "type": "string",
                            "example": "10.…"
                          },
                          "abstract": {
                            "type": "string",
                            "example": "…"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 1234,
                  "count": 3,
                  "articles": [
                    {
                      "pmid": "38000000",
                      "title": "…",
                      "doi": "10.…",
                      "abstract": "…"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/pubmed-search",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "pubmed_search",
        "tags": [
          "x402"
        ],
        "summary": "PubMed / MEDLINE search with full records: PMID, title, authors, journal, year, volume/pages, DOI, PMCID, publication types, MeSH terms and abstract (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1234
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "articles": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "pmid": {
                            "type": "string",
                            "example": "38000000"
                          },
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "doi": {
                            "type": "string",
                            "example": "10.…"
                          },
                          "abstract": {
                            "type": "string",
                            "example": "…"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 1234,
                  "count": 3,
                  "articles": [
                    {
                      "pmid": "38000000",
                      "title": "…",
                      "doi": "10.…",
                      "abstract": "…"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/pubmed-search",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/x402-listing-check": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "x402_listing_check_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Host or origin URL"
          },
          {
            "name": "probe",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Resources to probe, 0-10, default 5"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "valid"
                    },
                    "resources_count": {
                      "type": "integer",
                      "example": 14
                    },
                    "probes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "integer",
                            "example": 402
                          },
                          "ok": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "valid",
                  "resources_count": 14,
                  "probes": [
                    {
                      "status": 402,
                      "ok": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-listing-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "x402_listing_check",
        "tags": [
          "x402"
        ],
        "summary": "Checks that a host exposes a valid x402 discovery listing (/ (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "valid"
                    },
                    "resources_count": {
                      "type": "integer",
                      "example": 14
                    },
                    "probes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "status": {
                            "type": "integer",
                            "example": 402
                          },
                          "ok": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "valid",
                  "resources_count": 14,
                  "probes": [
                    {
                      "status": 402,
                      "ok": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-listing-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/lei-lookup": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "lei_lookup_get",
        "tags": [
          "x402"
        ],
        "summary": "Legal Entity Identifier lookup from the official GLEIF register: by LEI (with ISO 17442 checksum check) or by legal-name search with optional country",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "lei",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "20-char LEI"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Legal name search (alternative)"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO alpha-2 filter for name search"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20"
          },
          {
            "name": "relationships",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "true/false, default true"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "lei": {
                      "type": "string",
                      "example": "969500KMUQ2B6CBAF162"
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "legal_name": {
                      "type": "string",
                      "example": "DANONE"
                    },
                    "status": {
                      "type": "string",
                      "example": "ACTIVE"
                    },
                    "jurisdiction": {
                      "type": "string",
                      "example": "FR"
                    },
                    "ultimate_parent": {
                      "type": [
                        "string",
                        "number",
                        "object",
                        "array",
                        "boolean",
                        "null"
                      ]
                    }
                  }
                },
                "example": {
                  "lei": "969500KMUQ2B6CBAF162",
                  "found": true,
                  "legal_name": "DANONE",
                  "status": "ACTIVE",
                  "jurisdiction": "FR",
                  "ultimate_parent": null
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/lei-lookup",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "lei_lookup",
        "tags": [
          "x402"
        ],
        "summary": "Legal Entity Identifier lookup from the official GLEIF register: by LEI (with ISO 17442 checksum check) or by legal-name search with optional country (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "lei": {
                      "type": "string",
                      "example": "969500KMUQ2B6CBAF162"
                    },
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "legal_name": {
                      "type": "string",
                      "example": "DANONE"
                    },
                    "status": {
                      "type": "string",
                      "example": "ACTIVE"
                    },
                    "jurisdiction": {
                      "type": "string",
                      "example": "FR"
                    },
                    "ultimate_parent": {
                      "type": [
                        "string",
                        "number",
                        "object",
                        "array",
                        "boolean",
                        "null"
                      ]
                    }
                  }
                },
                "example": {
                  "lei": "969500KMUQ2B6CBAF162",
                  "found": true,
                  "legal_name": "DANONE",
                  "status": "ACTIVE",
                  "jurisdiction": "FR",
                  "ultimate_parent": null
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/lei-lookup",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/rss-to-json": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "rss_to_json_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Feed URL"
          },
          {
            "name": "xml",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Inline feed (POST)"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-100, default 20"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO date: only newer items"
          },
          {
            "name": "html",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "keep HTML in summaries"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "format": {
                      "type": "string",
                      "example": "rss 2.0"
                    },
                    "title": {
                      "type": "string",
                      "example": "Hacker News: Front Page"
                    },
                    "count": {
                      "type": "integer",
                      "example": 10
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "link": {
                            "type": "string",
                            "example": "…"
                          },
                          "published": {
                            "type": "string",
                            "example": "2026-11-10T12:00:00.000Z"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "format": "rss 2.0",
                  "title": "Hacker News: Front Page",
                  "count": 10,
                  "items": [
                    {
                      "title": "…",
                      "link": "…",
                      "published": "2026-11-10T12:00:00.000Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/rss-to-json",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "rss_to_json",
        "tags": [
          "x402"
        ],
        "summary": "RSS 2 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "format": {
                      "type": "string",
                      "example": "rss 2.0"
                    },
                    "title": {
                      "type": "string",
                      "example": "Hacker News: Front Page"
                    },
                    "count": {
                      "type": "integer",
                      "example": 10
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "link": {
                            "type": "string",
                            "example": "…"
                          },
                          "published": {
                            "type": "string",
                            "example": "2026-11-10T12:00:00.000Z"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "format": "rss 2.0",
                  "title": "Hacker News: Front Page",
                  "count": 10,
                  "items": [
                    {
                      "title": "…",
                      "link": "…",
                      "published": "2026-11-10T12:00:00.000Z"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/rss-to-json",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/eori-validate": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "eori_validate_get",
        "tags": [
          "x402"
        ],
        "summary": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB numbers against HMRC",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "eori",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EORI number(s), comma-separated, max 10"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "valid": {
                      "type": "integer",
                      "example": 0
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "eori": {
                            "type": "string",
                            "example": "FR55203253400019"
                          },
                          "valid": {
                            "type": "boolean",
                            "example": false
                          },
                          "status": {
                            "type": "string",
                            "example": "Not valid"
                          },
                          "registry": {
                            "type": "string",
                            "example": "EU EOS (European Commission)"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "valid": 0,
                  "results": [
                    {
                      "eori": "FR55203253400019",
                      "valid": false,
                      "status": "Not valid",
                      "registry": "EU EOS (European Commission)"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eori-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "eori_validate",
        "tags": [
          "x402"
        ],
        "summary": "EORI number validation (customs trader ID) against the official European Commission EOS register, and UK GB numbers against HMRC (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "valid": {
                      "type": "integer",
                      "example": 0
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "eori": {
                            "type": "string",
                            "example": "FR55203253400019"
                          },
                          "valid": {
                            "type": "boolean",
                            "example": false
                          },
                          "status": {
                            "type": "string",
                            "example": "Not valid"
                          },
                          "registry": {
                            "type": "string",
                            "example": "EU EOS (European Commission)"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "valid": 0,
                  "results": [
                    {
                      "eori": "FR55203253400019",
                      "valid": false,
                      "status": "Not valid",
                      "registry": "EU EOS (European Commission)"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eori-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/sec-financials": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "sec_financials_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.005 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "ticker",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Ticker, e.g. AAPL"
          },
          {
            "name": "cik",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "SEC CIK (alternative)"
          },
          {
            "name": "years",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-5, default 3"
          },
          {
            "name": "metrics",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Comma list: revenue,net_income,… or us-gaap:Tag"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cik": {
                      "type": "string",
                      "example": "0000320193"
                    },
                    "name": {
                      "type": "string",
                      "example": "Apple Inc."
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "revenue": {
                          "type": "object",
                          "properties": {
                            "unit": {
                              "type": "string",
                              "example": "USD"
                            },
                            "annual": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "period_end": {
                                    "type": "string",
                                    "example": "2026-09-26"
                                  },
                                  "value": {
                                    "type": "integer",
                                    "example": 0
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "cik": "0000320193",
                  "name": "Apple Inc.",
                  "metrics": {
                    "revenue": {
                      "unit": "USD",
                      "annual": [
                        {
                          "period_end": "2026-09-26",
                          "value": 0
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sec-financials",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "sec_financials",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.005 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cik": {
                      "type": "string",
                      "example": "0000320193"
                    },
                    "name": {
                      "type": "string",
                      "example": "Apple Inc."
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "revenue": {
                          "type": "object",
                          "properties": {
                            "unit": {
                              "type": "string",
                              "example": "USD"
                            },
                            "annual": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "period_end": {
                                    "type": "string",
                                    "example": "2026-09-26"
                                  },
                                  "value": {
                                    "type": "integer",
                                    "example": 0
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "cik": "0000320193",
                  "name": "Apple Inc.",
                  "metrics": {
                    "revenue": {
                      "unit": "USD",
                      "annual": [
                        {
                          "period_end": "2026-09-26",
                          "value": 0
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sec-financials",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/openfoodfacts-product": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "openfoodfacts_product_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "barcode",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "8-14 digit barcode"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "Nutella"
                    },
                    "brands": {
                      "type": "string",
                      "example": "Ferrero"
                    },
                    "nutriscore": {
                      "type": "string",
                      "example": "e"
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "Nutella",
                  "brands": "Ferrero",
                  "nutriscore": "e"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openfoodfacts-product",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "openfoodfacts_product",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "barcode": {
                    "type": "string",
                    "description": "8-14 digit barcode"
                  }
                },
                "required": [
                  "barcode"
                ]
              },
              "example": {
                "barcode": "3017624010701"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "Nutella"
                    },
                    "brands": {
                      "type": "string",
                      "example": "Ferrero"
                    },
                    "nutriscore": {
                      "type": "string",
                      "example": "e"
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "Nutella",
                  "brands": "Ferrero",
                  "nutriscore": "e"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openfoodfacts-product",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/arxiv-search": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "arxiv_search_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Query"
          },
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "arXiv id(s), comma-separated"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-25, default 5"
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "relevance, submitted, updated"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 120
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "papers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "2501.00001v1"
                          },
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "pdf_url": {
                            "type": "string",
                            "example": "https://arxiv.org/pdf/2501.00001v1"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 120,
                  "count": 3,
                  "papers": [
                    {
                      "id": "2501.00001v1",
                      "title": "…",
                      "pdf_url": "https://arxiv.org/pdf/2501.00001v1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/arxiv-search",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "arxiv_search",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 120
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "papers": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "2501.00001v1"
                          },
                          "title": {
                            "type": "string",
                            "example": "…"
                          },
                          "pdf_url": {
                            "type": "string",
                            "example": "https://arxiv.org/pdf/2501.00001v1"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 120,
                  "count": 3,
                  "papers": [
                    {
                      "id": "2501.00001v1",
                      "title": "…",
                      "pdf_url": "https://arxiv.org/pdf/2501.00001v1"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/arxiv-search",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/crossref-doi": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "crossref_doi_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "doi",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "DOI or doi.org URL"
          },
          {
            "name": "references",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "true to include references"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "title": {
                      "type": "string",
                      "example": "Nanometre-scale thermometry in a living cell"
                    },
                    "container": {
                      "type": "string",
                      "example": "Nature"
                    }
                  }
                },
                "example": {
                  "found": true,
                  "title": "Nanometre-scale thermometry in a living cell",
                  "container": "Nature"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/crossref-doi",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "crossref_doi",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "title": {
                      "type": "string",
                      "example": "Nanometre-scale thermometry in a living cell"
                    },
                    "container": {
                      "type": "string",
                      "example": "Nature"
                    }
                  }
                },
                "example": {
                  "found": true,
                  "title": "Nanometre-scale thermometry in a living cell",
                  "container": "Nature"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/crossref-doi",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/gtin-validate": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "gtin_validate_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "gtin",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Code(s), comma-separated"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "EAN-13"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "gtin14": {
                      "type": "string",
                      "example": "03017624010701"
                    },
                    "gs1_prefix_region": {
                      "type": "string",
                      "example": "France & Monaco"
                    }
                  }
                },
                "example": {
                  "type": "EAN-13",
                  "valid": true,
                  "gtin14": "03017624010701",
                  "gs1_prefix_region": "France & Monaco"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/gtin-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "gtin_validate",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "gtin": {
                    "type": "string",
                    "description": "Code(s), comma-separated"
                  }
                },
                "required": [
                  "gtin"
                ]
              },
              "example": {
                "gtin": "3017624010701"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "EAN-13"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "gtin14": {
                      "type": "string",
                      "example": "03017624010701"
                    },
                    "gs1_prefix_region": {
                      "type": "string",
                      "example": "France & Monaco"
                    }
                  }
                },
                "example": {
                  "type": "EAN-13",
                  "valid": true,
                  "gtin14": "03017624010701",
                  "gs1_prefix_region": "France & Monaco"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/gtin-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/isbn-validate": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "isbn_validate_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "isbn",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "ISBN-10 or ISBN-13"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "format": {
                      "type": "string",
                      "example": "ISBN-13"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "isbn10": {
                      "type": "string",
                      "example": "2070368223"
                    }
                  }
                },
                "example": {
                  "format": "ISBN-13",
                  "valid": true,
                  "isbn10": "2070368223"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/isbn-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "isbn_validate",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "format": {
                      "type": "string",
                      "example": "ISBN-13"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "isbn10": {
                      "type": "string",
                      "example": "2070368223"
                    }
                  }
                },
                "example": {
                  "format": "ISBN-13",
                  "valid": true,
                  "isbn10": "2070368223"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/isbn-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/mcp-inspect": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "mcp_inspect_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "MCP endpoint URL"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reachable": {
                      "type": "boolean",
                      "example": true
                    },
                    "healthy": {
                      "type": "boolean",
                      "example": true
                    },
                    "protocol_version": {
                      "type": "string",
                      "example": "2025-06-18"
                    },
                    "tools_count": {
                      "type": "integer",
                      "example": 12
                    }
                  }
                },
                "example": {
                  "reachable": true,
                  "healthy": true,
                  "protocol_version": "2025-06-18",
                  "tools_count": 12
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/mcp-inspect",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "mcp_inspect",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "reachable": {
                      "type": "boolean",
                      "example": true
                    },
                    "healthy": {
                      "type": "boolean",
                      "example": true
                    },
                    "protocol_version": {
                      "type": "string",
                      "example": "2025-06-18"
                    },
                    "tools_count": {
                      "type": "integer",
                      "example": 12
                    }
                  }
                },
                "example": {
                  "reachable": true,
                  "healthy": true,
                  "protocol_version": "2025-06-18",
                  "tools_count": 12
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/mcp-inspect",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/openapi-lint": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "openapi_lint_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Spec URL"
          },
          {
            "name": "spec",
            "in": "query",
            "required": false,
            "schema": {
              "type": "object"
            },
            "description": "Inline spec (POST)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "agent_readiness_score": {
                      "type": "integer",
                      "example": 78
                    },
                    "operations": {
                      "type": "integer",
                      "example": 19
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 4
                    }
                  }
                },
                "example": {
                  "agent_readiness_score": 78,
                  "operations": 19,
                  "errors": 0,
                  "warnings": 4
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openapi-lint",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "openapi_lint",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "agent_readiness_score": {
                      "type": "integer",
                      "example": 78
                    },
                    "operations": {
                      "type": "integer",
                      "example": 19
                    },
                    "errors": {
                      "type": "integer",
                      "example": 0
                    },
                    "warnings": {
                      "type": "integer",
                      "example": 4
                    }
                  }
                },
                "example": {
                  "agent_readiness_score": 78,
                  "operations": 19,
                  "errors": 0,
                  "warnings": 4
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openapi-lint",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/sitemap-urls": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "sitemap_urls_get",
        "tags": [
          "x402"
        ],
        "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). Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Sitemap URL or site origin"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-5000, default 500"
          },
          {
            "name": "max_children",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "0-10, default 5"
          },
          {
            "name": "contains",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Only URLs containing this text"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "urlset"
                    },
                    "count": {
                      "type": "integer",
                      "example": 50
                    },
                    "urls": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "loc": {
                            "type": "string",
                            "example": "https://…"
                          },
                          "lastmod": {
                            "type": "string",
                            "example": "2026-01-01"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "type": "urlset",
                  "count": 50,
                  "urls": [
                    {
                      "loc": "https://…",
                      "lastmod": "2026-01-01"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sitemap-urls",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "sitemap_urls",
        "tags": [
          "x402"
        ],
        "summary": "sitemap (JSON body)",
        "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). Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "urlset"
                    },
                    "count": {
                      "type": "integer",
                      "example": 50
                    },
                    "urls": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "loc": {
                            "type": "string",
                            "example": "https://…"
                          },
                          "lastmod": {
                            "type": "string",
                            "example": "2026-01-01"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "type": "urlset",
                  "count": 50,
                  "urls": [
                    {
                      "loc": "https://…",
                      "lastmod": "2026-01-01"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sitemap-urls",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/tz-convert": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "tz_convert_get",
        "tags": [
          "x402"
        ],
        "summary": "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)",
        "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). Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "time",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO date-time or local time; default now"
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Source IANA zone for local times, default UTC"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Target zones, comma-separated"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "utc": {
                            "type": "string",
                            "example": "2026-11-10T15:00:00.000Z"
                          },
                          "targets": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "zone": {
                                  "type": "string",
                                  "example": "Asia/Tokyo"
                                },
                                "local": {
                                  "type": "string",
                                  "example": "2026-11-11T00:00:00"
                                },
                                "offset": {
                                  "type": "string",
                                  "example": "+09:00"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "status": "ok",
                  "results": [
                    {
                      "utc": "2026-11-10T15:00:00.000Z",
                      "targets": [
                        {
                          "zone": "Asia/Tokyo",
                          "local": "2026-11-11T00:00:00",
                          "offset": "+09:00"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/tz-convert",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "tz_convert",
        "tags": [
          "x402"
        ],
        "summary": "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) (JSON body)",
        "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). Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "string",
                      "example": "ok"
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "utc": {
                            "type": "string",
                            "example": "2026-11-10T15:00:00.000Z"
                          },
                          "targets": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "zone": {
                                  "type": "string",
                                  "example": "Asia/Tokyo"
                                },
                                "local": {
                                  "type": "string",
                                  "example": "2026-11-11T00:00:00"
                                },
                                "offset": {
                                  "type": "string",
                                  "example": "+09:00"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "status": "ok",
                  "results": [
                    {
                      "utc": "2026-11-10T15:00:00.000Z",
                      "targets": [
                        {
                          "zone": "Asia/Tokyo",
                          "local": "2026-11-11T00:00:00",
                          "offset": "+09:00"
                        }
                      ]
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/tz-convert",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/uuid-v7": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "uuid_v7_get",
        "tags": [
          "x402"
        ],
        "summary": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7)",
        "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7). Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-100"
          },
          {
            "name": "timestamp",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO date for the time part"
          },
          {
            "name": "uuid",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "UUID to validate/decode instead"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "integer",
                      "example": 7
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "uuids": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "019a6f2e-…"
                      }
                    }
                  }
                },
                "example": {
                  "version": 7,
                  "count": 3,
                  "uuids": [
                    "019a6f2e-…"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uuid-v7",
                    "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "uuid_v7",
        "tags": [
          "x402"
        ],
        "summary": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7) (JSON body)",
        "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7). Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "version": {
                      "type": "integer",
                      "example": 7
                    },
                    "count": {
                      "type": "integer",
                      "example": 3
                    },
                    "uuids": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "example": "019a6f2e-…"
                      }
                    }
                  }
                },
                "example": {
                  "version": 7,
                  "count": 3,
                  "uuids": [
                    "019a6f2e-…"
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uuid-v7",
                    "description": "RFC 9562 UUIDv7 generator (time-sortable, 1-100 per call, optional timestamp) and UUID validator/decoder (version, variant, embedded timestamp for v1/v7).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/siren-check": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "siren_check_get",
        "tags": [
          "x402"
        ],
        "summary": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived intra-EU VAT number",
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "siren",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SIREN/SIRET number(s), comma-separated"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "SIREN"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "vat_number_fr": {
                      "type": "string",
                      "example": "FR27552032534"
                    }
                  }
                },
                "example": {
                  "type": "SIREN",
                  "valid": true,
                  "vat_number_fr": "FR27552032534"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/siren-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "siren_check",
        "tags": [
          "x402"
        ],
        "summary": "French SIREN (9) / SIRET (14) checksum validation (Luhn, La Poste exception), formatting, NIC, and the derived intra-EU VAT number (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "example": "SIREN"
                    },
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "vat_number_fr": {
                      "type": "string",
                      "example": "FR27552032534"
                    }
                  }
                },
                "example": {
                  "type": "SIREN",
                  "valid": true,
                  "vat_number_fr": "FR27552032534"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/siren-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/phone-parse": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "phone_parse_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "phone",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Number(s); separate with ; or newline"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Default ISO country for national numbers"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "e164": {
                      "type": "string",
                      "example": "+33123456789"
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "type": {
                      "type": "string",
                      "example": "FIXED_LINE"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "e164": "+33123456789",
                  "country": "FR",
                  "type": "FIXED_LINE"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/phone-parse",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "phone_parse",
        "tags": [
          "x402"
        ],
        "summary": "Phone number parsing and validation to E (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "e164": {
                      "type": "string",
                      "example": "+33123456789"
                    },
                    "country": {
                      "type": "string",
                      "example": "FR"
                    },
                    "type": {
                      "type": "string",
                      "example": "FIXED_LINE"
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "e164": "+33123456789",
                  "country": "FR",
                  "type": "FIXED_LINE"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/phone-parse",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/x402-facilitator-health": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "x402_facilitator_health_get",
        "tags": [
          "x402"
        ],
        "summary": "x402 facilitator health check: calls GET /supported on a facilitator (or on a default list incl",
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Facilitator base URL (optional)"
          },
          {
            "name": "network",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "CAIP-2 network to check, default eip155:8453"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "checked": {
                      "type": "integer",
                      "example": 4
                    },
                    "alive": {
                      "type": "integer",
                      "example": 3
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "facilitator": {
                            "type": "string",
                            "example": "https://facilitator.xpay.sh"
                          },
                          "alive": {
                            "type": "boolean",
                            "example": true
                          },
                          "supports_v2": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "checked": 4,
                  "alive": 3,
                  "results": [
                    {
                      "facilitator": "https://facilitator.xpay.sh",
                      "alive": true,
                      "supports_v2": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-facilitator-health",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "x402_facilitator_health",
        "tags": [
          "x402"
        ],
        "summary": "x402 facilitator health check: calls GET /supported on a facilitator (or on a default list incl (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "checked": {
                      "type": "integer",
                      "example": 4
                    },
                    "alive": {
                      "type": "integer",
                      "example": 3
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "facilitator": {
                            "type": "string",
                            "example": "https://facilitator.xpay.sh"
                          },
                          "alive": {
                            "type": "boolean",
                            "example": true
                          },
                          "supports_v2": {
                            "type": "boolean",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "checked": 4,
                  "alive": 3,
                  "results": [
                    {
                      "facilitator": "https://facilitator.xpay.sh",
                      "alive": true,
                      "supports_v2": true
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/x402-facilitator-health",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/json-schema-validate": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "json_schema_validate_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "schema",
            "in": "query",
            "required": true,
            "schema": {
              "type": "object"
            },
            "description": "JSON Schema"
          },
          {
            "name": "data",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "JSON value or string to check"
          },
          {
            "name": "repair",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "true (default) / false"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": false
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "path": {
                            "type": "string",
                            "example": "$.age"
                          },
                          "msg": {
                            "type": "string",
                            "example": "expected integer, got string"
                          }
                        }
                      }
                    },
                    "repaired": {
                      "type": "object",
                      "properties": {
                        "age": {
                          "type": "integer",
                          "example": 42
                        }
                      }
                    },
                    "repaired_valid": {
                      "type": "boolean",
                      "example": true
                    }
                  }
                },
                "example": {
                  "valid": false,
                  "errors": [
                    {
                      "path": "$.age",
                      "msg": "expected integer, got string"
                    }
                  ],
                  "repaired": {
                    "age": 42
                  },
                  "repaired_valid": true
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/json-schema-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "json_schema_validate",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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\"}"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": false
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "path": {
                            "type": "string",
                            "example": "$.age"
                          },
                          "msg": {
                            "type": "string",
                            "example": "expected integer, got string"
                          }
                        }
                      }
                    },
                    "repaired": {
                      "type": "object",
                      "properties": {
                        "age": {
                          "type": "integer",
                          "example": 42
                        }
                      }
                    },
                    "repaired_valid": {
                      "type": "boolean",
                      "example": true
                    }
                  }
                },
                "example": {
                  "valid": false,
                  "errors": [
                    {
                      "path": "$.age",
                      "msg": "expected integer, got string"
                    }
                  ],
                  "repaired": {
                    "age": 42
                  },
                  "repaired_valid": true
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/json-schema-validate",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/wikidata-entity": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "wikidata_entity_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Q-id"
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Search text (alternative)"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Language code, default en"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "Q50189"
                    },
                    "label": {
                      "type": "string",
                      "example": "Annecy"
                    },
                    "claims": {
                      "type": "object",
                      "properties": {
                        "country": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "Q142"
                              },
                              "label": {
                                "type": "string",
                                "example": "France"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "id": "Q50189",
                  "label": "Annecy",
                  "claims": {
                    "country": [
                      {
                        "id": "Q142",
                        "label": "France"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/wikidata-entity",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "wikidata_entity",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "Q50189"
                    },
                    "label": {
                      "type": "string",
                      "example": "Annecy"
                    },
                    "claims": {
                      "type": "object",
                      "properties": {
                        "country": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "Q142"
                              },
                              "label": {
                                "type": "string",
                                "example": "France"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "id": "Q50189",
                  "label": "Annecy",
                  "claims": {
                    "country": [
                      {
                        "id": "Q142",
                        "label": "France"
                      }
                    ]
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/wikidata-entity",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fr-communes": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "fr_communes_get",
        "tags": [
          "x402"
        ],
        "summary": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates",
        "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Commune name"
          },
          {
            "name": "postcode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "5-digit postcode"
          },
          {
            "name": "insee",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "5-char INSEE code"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Annecy"
                          },
                          "insee": {
                            "type": "string",
                            "example": "74010"
                          },
                          "population": {
                            "type": "integer",
                            "example": 132117
                          },
                          "department": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "74"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "results": [
                    {
                      "name": "Annecy",
                      "insee": "74010",
                      "population": 132117,
                      "department": {
                        "code": "74"
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-communes",
                    "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fr_communes",
        "tags": [
          "x402"
        ],
        "summary": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates (JSON body)",
        "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Annecy"
                          },
                          "insee": {
                            "type": "string",
                            "example": "74010"
                          },
                          "population": {
                            "type": "integer",
                            "example": 132117
                          },
                          "department": {
                            "type": "object",
                            "properties": {
                              "code": {
                                "type": "string",
                                "example": "74"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 1,
                  "results": [
                    {
                      "name": "Annecy",
                      "insee": "74010",
                      "population": 132117,
                      "department": {
                        "code": "74"
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-communes",
                    "description": "French municipalities (INSEE COG) by name, postcode or INSEE code: official name, INSEE code, postcodes, population, area, department, region, EPCI, SIREN, centre coordinates.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fx-history": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "fx_history_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Base ISO 4217, default EUR"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Target(s), comma-separated"
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "YYYY-MM-DD"
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY-MM-DD, default today"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "observations": {
                      "type": "integer",
                      "example": 63
                    },
                    "series": {
                      "type": "object",
                      "properties": {
                        "USD": {
                          "type": "object",
                          "properties": {
                            "stats": {
                              "type": "object",
                              "properties": {
                                "min": {
                                  "type": "number",
                                  "example": 1.16
                                },
                                "max": {
                                  "type": "number",
                                  "example": 1.19
                                },
                                "change_pct": {
                                  "type": "number",
                                  "example": 1.2
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "observations": 63,
                  "series": {
                    "USD": {
                      "stats": {
                        "min": 1.16,
                        "max": 1.19,
                        "change_pct": 1.2
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fx-history",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fx_history",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "observations": {
                      "type": "integer",
                      "example": 63
                    },
                    "series": {
                      "type": "object",
                      "properties": {
                        "USD": {
                          "type": "object",
                          "properties": {
                            "stats": {
                              "type": "object",
                              "properties": {
                                "min": {
                                  "type": "number",
                                  "example": 1.16
                                },
                                "max": {
                                  "type": "number",
                                  "example": 1.19
                                },
                                "change_pct": {
                                  "type": "number",
                                  "example": 1.2
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "observations": 63,
                  "series": {
                    "USD": {
                      "stats": {
                        "min": 1.16,
                        "max": 1.19,
                        "change_pct": 1.2
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fx-history",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fr-school-calendar": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "fr_school_calendar_get",
        "tags": [
          "x402"
        ],
        "summary": "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)",
        "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). Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "zone",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "A, B, C or overseas zone"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "School year e.g. 2026-2027"
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY-MM-DD to test"
          },
          {
            "name": "academie",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Académie name filter"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "school_year": {
                      "type": "string",
                      "example": "2026-2027"
                    },
                    "count": {
                      "type": "integer",
                      "example": 6
                    },
                    "periods": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "example": "Vacances de la Toussaint"
                          },
                          "start_local": {
                            "type": "string",
                            "example": "2026-10-17"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "school_year": "2026-2027",
                  "count": 6,
                  "periods": [
                    {
                      "description": "Vacances de la Toussaint",
                      "start_local": "2026-10-17"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-school-calendar",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fr_school_calendar",
        "tags": [
          "x402"
        ],
        "summary": "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) (JSON body)",
        "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). Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "school_year": {
                      "type": "string",
                      "example": "2026-2027"
                    },
                    "count": {
                      "type": "integer",
                      "example": 6
                    },
                    "periods": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "example": "Vacances de la Toussaint"
                          },
                          "start_local": {
                            "type": "string",
                            "example": "2026-10-17"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "school_year": "2026-2027",
                  "count": 6,
                  "periods": [
                    {
                      "description": "Vacances de la Toussaint",
                      "start_local": "2026-10-17"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-school-calendar",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/openapi-to-mcp": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "openapi_to_mcp_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Spec URL"
          },
          {
            "name": "spec",
            "in": "query",
            "required": false,
            "schema": {
              "type": "object"
            },
            "description": "Inline spec (POST)"
          },
          {
            "name": "base_url",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Override server URL"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 19
                    },
                    "tools": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "getPetById"
                          },
                          "inputSchema": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "example": "object"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 19,
                  "tools": [
                    {
                      "name": "getPetById",
                      "inputSchema": {
                        "type": "object"
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openapi-to-mcp",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "openapi_to_mcp",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 19
                    },
                    "tools": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "getPetById"
                          },
                          "inputSchema": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "example": "object"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 19,
                  "tools": [
                    {
                      "name": "getPetById",
                      "inputSchema": {
                        "type": "object"
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/openapi-to-mcp",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/sanctions-check": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "sanctions_check_get",
        "tags": [
          "x402"
        ],
        "summary": "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)",
        "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. Pay-per-call: $0.005 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Name to screen"
          },
          {
            "name": "type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "person, entity or vessel (optional)"
          },
          {
            "name": "lists",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ofac,eu,fr,uk (default all)"
          },
          {
            "name": "threshold",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "0.7-1, default 0.88"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-50"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "Bank Rossiya"
                    },
                    "match": {
                      "type": "boolean",
                      "example": true
                    },
                    "highest_score": {
                      "type": "integer",
                      "example": 1
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "list": {
                            "type": "string",
                            "example": "eu"
                          },
                          "name": {
                            "type": "string",
                            "example": "Bank Rossiya"
                          },
                          "score": {
                            "type": "integer",
                            "example": 1
                          },
                          "programmes": {
                            "type": "string",
                            "example": "UKR"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "query": "Bank Rossiya",
                  "match": true,
                  "highest_score": 1,
                  "hits": [
                    {
                      "list": "eu",
                      "name": "Bank Rossiya",
                      "score": 1,
                      "programmes": "UKR"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sanctions-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "sanctions_check",
        "tags": [
          "x402"
        ],
        "summary": "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) (JSON body)",
        "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. Pay-per-call: $0.005 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.005"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "5000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "query": {
                      "type": "string",
                      "example": "Bank Rossiya"
                    },
                    "match": {
                      "type": "boolean",
                      "example": true
                    },
                    "highest_score": {
                      "type": "integer",
                      "example": 1
                    },
                    "hits": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "list": {
                            "type": "string",
                            "example": "eu"
                          },
                          "name": {
                            "type": "string",
                            "example": "Bank Rossiya"
                          },
                          "score": {
                            "type": "integer",
                            "example": 1
                          },
                          "programmes": {
                            "type": "string",
                            "example": "UKR"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "query": "Bank Rossiya",
                  "match": true,
                  "highest_score": 1,
                  "hits": [
                    {
                      "list": "eu",
                      "name": "Bank Rossiya",
                      "score": 1,
                      "programmes": "UKR"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/sanctions-check",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "5000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fr-legal-status": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "fr_legal_status_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "siren",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SIREN or SIRET"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "notices 1-50"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "company": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "example": "DANONE"
                        },
                        "status": {
                          "type": "string",
                          "example": "active"
                        }
                      }
                    },
                    "collective_proceedings": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "integer",
                          "example": 0
                        },
                        "ongoing": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    },
                    "risk": {
                      "type": "string",
                      "example": "none_found"
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "company": {
                    "name": "DANONE",
                    "status": "active"
                  },
                  "collective_proceedings": {
                    "count": 0,
                    "ongoing": false
                  },
                  "risk": "none_found"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-legal-status",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fr_legal_status",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "company": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "example": "DANONE"
                        },
                        "status": {
                          "type": "string",
                          "example": "active"
                        }
                      }
                    },
                    "collective_proceedings": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "integer",
                          "example": 0
                        },
                        "ongoing": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    },
                    "risk": {
                      "type": "string",
                      "example": "none_found"
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "company": {
                    "name": "DANONE",
                    "status": "active"
                  },
                  "collective_proceedings": {
                    "count": 0,
                    "ongoing": false
                  },
                  "risk": "none_found"
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fr-legal-status",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/eu-tenders": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "eu_tenders_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "q",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Keywords"
          },
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "YYYY-MM-DD, default 30 days ago"
          },
          {
            "name": "sources",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "boamp,ted"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "TED buyer country ISO alpha-3, e.g. DEU"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-50 per source"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 20
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "type": "string",
                            "example": "TED"
                          },
                          "title": {
                            "type": "string",
                            "example": "Software development services"
                          },
                          "buyer": {
                            "type": "string",
                            "example": "…"
                          },
                          "deadline": {
                            "type": "string",
                            "example": "2026-12-01"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 20,
                  "results": [
                    {
                      "source": "TED",
                      "title": "Software development services",
                      "buyer": "…",
                      "deadline": "2026-12-01"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-tenders",
                    "description": "Public tender scanner: keyword search across BOAMP (France) and TED (EU Official Journal, all member states) since a date, merged and sorted: title, buyer, publication date, deadline, notice type, country, CPV codes and link.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "eu_tenders",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "count": {
                      "type": "integer",
                      "example": 20
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "source": {
                            "type": "string",
                            "example": "TED"
                          },
                          "title": {
                            "type": "string",
                            "example": "Software development services"
                          },
                          "buyer": {
                            "type": "string",
                            "example": "…"
                          },
                          "deadline": {
                            "type": "string",
                            "example": "2026-12-01"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "count": 20,
                  "results": [
                    {
                      "source": "TED",
                      "title": "Software development services",
                      "buyer": "…",
                      "deadline": "2026-12-01"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-tenders",
                    "description": "Public tender scanner: keyword search across BOAMP (France) and TED (EU Official Journal, all member states) since a date, merged and sorted: title, buyer, publication date, deadline, notice type, country, CPV codes and link.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/uk-postcode": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "uk_postcode_get",
        "tags": [
          "x402"
        ],
        "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. Pay-per-call: $0.001 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "postcode",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "UK postcode"
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "reverse: latitude"
          },
          {
            "name": "lon",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "reverse: longitude"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "postcode": {
                      "type": "string",
                      "example": "SW1A 1AA"
                    },
                    "admin_district": {
                      "type": "string",
                      "example": "Westminster"
                    },
                    "lat": {
                      "type": "number",
                      "example": 51.501
                    },
                    "lon": {
                      "type": "number",
                      "example": -0.1416
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "postcode": "SW1A 1AA",
                  "admin_district": "Westminster",
                  "lat": 51.501,
                  "lon": -0.1416
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uk-postcode",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "uk_postcode",
        "tags": [
          "x402"
        ],
        "summary": "UK postcode lookup and validation (postcodes (JSON body)",
        "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. Pay-per-call: $0.001 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.001"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "1000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "valid": {
                      "type": "boolean",
                      "example": true
                    },
                    "postcode": {
                      "type": "string",
                      "example": "SW1A 1AA"
                    },
                    "admin_district": {
                      "type": "string",
                      "example": "Westminster"
                    },
                    "lat": {
                      "type": "number",
                      "example": 51.501
                    },
                    "lon": {
                      "type": "number",
                      "example": -0.1416
                    }
                  }
                },
                "example": {
                  "valid": true,
                  "postcode": "SW1A 1AA",
                  "admin_district": "Westminster",
                  "lat": 51.501,
                  "lon": -0.1416
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uk-postcode",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "1000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/eu-address": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "eu_address_get",
        "tags": [
          "x402"
        ],
        "summary": "Address geocoding and normalisation through official national open services: France (Base Adresse Nationale), Netherlands (PDOK/BAG), Spain (CartoCiudad/IGN), Switzerland (swisstopo)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "address",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Free-text address"
          },
          {
            "name": "country",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "FR, NL, ES or CH"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-10"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "country": {
                      "type": "string",
                      "example": "NL"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "label": {
                            "type": "string",
                            "example": "Damrak 1, 1012LG Amsterdam"
                          },
                          "postcode": {
                            "type": "string",
                            "example": "1012LG"
                          },
                          "lat": {
                            "type": "number",
                            "example": 52.37
                          },
                          "lon": {
                            "type": "number",
                            "example": 4.89
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "country": "NL",
                  "count": 1,
                  "results": [
                    {
                      "label": "Damrak 1, 1012LG Amsterdam",
                      "postcode": "1012LG",
                      "lat": 52.37,
                      "lon": 4.89
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-address",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "eu_address",
        "tags": [
          "x402"
        ],
        "summary": "Address geocoding and normalisation through official national open services: France (Base Adresse Nationale), Netherlands (PDOK/BAG), Spain (CartoCiudad/IGN), Switzerland (swisstopo) (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "country": {
                      "type": "string",
                      "example": "NL"
                    },
                    "count": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "label": {
                            "type": "string",
                            "example": "Damrak 1, 1012LG Amsterdam"
                          },
                          "postcode": {
                            "type": "string",
                            "example": "1012LG"
                          },
                          "lat": {
                            "type": "number",
                            "example": 52.37
                          },
                          "lon": {
                            "type": "number",
                            "example": 4.89
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "country": "NL",
                  "count": 1,
                  "results": [
                    {
                      "label": "Damrak 1, 1012LG Amsterdam",
                      "postcode": "1012LG",
                      "lat": 52.37,
                      "lon": 4.89
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-address",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/no-company": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "no_company_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "orgnr",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "9-digit org number"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name search"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "EQUINOR ASA"
                    },
                    "vat_registered": {
                      "type": "boolean",
                      "example": true
                    },
                    "bankrupt": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "EQUINOR ASA",
                  "vat_registered": true,
                  "bankrupt": false
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/no-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "no_company",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "EQUINOR ASA"
                    },
                    "vat_registered": {
                      "type": "boolean",
                      "example": true
                    },
                    "bankrupt": {
                      "type": "boolean",
                      "example": false
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "EQUINOR ASA",
                  "vat_registered": true,
                  "bankrupt": false
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/no-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/fi-company": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "fi_company_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "business_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Y-tunnus 1234567-8"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name search"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "business_id": {
                            "type": "string",
                            "example": "0112038-9"
                          },
                          "name": {
                            "type": "string",
                            "example": "Nokia Oyj"
                          },
                          "vat_number": {
                            "type": "string",
                            "example": "FI01120389"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 1,
                  "results": [
                    {
                      "business_id": "0112038-9",
                      "name": "Nokia Oyj",
                      "vat_number": "FI01120389"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fi-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "fi_company",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "total": {
                      "type": "integer",
                      "example": 1
                    },
                    "results": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "business_id": {
                            "type": "string",
                            "example": "0112038-9"
                          },
                          "name": {
                            "type": "string",
                            "example": "Nokia Oyj"
                          },
                          "vat_number": {
                            "type": "string",
                            "example": "FI01120389"
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "total": 1,
                  "results": [
                    {
                      "business_id": "0112038-9",
                      "name": "Nokia Oyj",
                      "vat_number": "FI01120389"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/fi-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/uk-company": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "uk_company_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.002 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "company_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "8-char company number"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name search (alternative)"
          },
          {
            "name": "max",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "1-20"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "TESCO PLC"
                    },
                    "status": {
                      "type": "string",
                      "example": "active"
                    },
                    "officers": {
                      "type": "object",
                      "properties": {
                        "active": {
                          "type": "integer",
                          "example": 12
                        }
                      }
                    },
                    "filing": {
                      "type": "object",
                      "properties": {
                        "accounts_overdue": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "TESCO PLC",
                  "status": "active",
                  "officers": {
                    "active": 12
                  },
                  "filing": {
                    "accounts_overdue": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uk-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "uk_company",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.002 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.002"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "2000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "found": {
                      "type": "boolean",
                      "example": true
                    },
                    "name": {
                      "type": "string",
                      "example": "TESCO PLC"
                    },
                    "status": {
                      "type": "string",
                      "example": "active"
                    },
                    "officers": {
                      "type": "object",
                      "properties": {
                        "active": {
                          "type": "integer",
                          "example": 12
                        }
                      }
                    },
                    "filing": {
                      "type": "object",
                      "properties": {
                        "accounts_overdue": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "found": true,
                  "name": "TESCO PLC",
                  "status": "active",
                  "officers": {
                    "active": 12
                  },
                  "filing": {
                    "accounts_overdue": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/uk-company",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "2000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/kyb-check-uk": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "kyb_check_uk_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.01 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "company_number",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "8-char company number"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Name (alternative; best match is checked)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "company": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "example": "TESCO PLC"
                        },
                        "status": {
                          "type": "string",
                          "example": "active"
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "pass",
                  "flags": [],
                  "company": {
                    "name": "TESCO PLC",
                    "status": "active"
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-uk",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "kyb_check_uk",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.01 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "company": {
                      "type": "object",
                      "properties": {
                        "name": {
                          "type": "string",
                          "example": "TESCO PLC"
                        },
                        "status": {
                          "type": "string",
                          "example": "active"
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "pass",
                  "flags": [],
                  "company": {
                    "name": "TESCO PLC",
                    "status": "active"
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-uk",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/eu-carbon-customs": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "eu_carbon_customs_get",
        "tags": [
          "x402"
        ],
        "summary": "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)",
        "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). Pay-per-call: $0.003 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "cn",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "CN/TARIC code 4-10 digits"
          },
          {
            "name": "country",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Origin country name or ISO alpha-2"
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "2026+"
          },
          {
            "name": "tonnes",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Shipment mass in tonnes (optional)"
          },
          {
            "name": "price_eur",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "CBAM certificate price EUR/tCO2e (optional)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cn": {
                      "type": "string",
                      "example": "72081000"
                    },
                    "country_table": {
                      "type": "string",
                      "example": "China"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "example": "Flat-rolled products…"
                          },
                          "total": {
                            "type": "number",
                            "example": 2.5
                          },
                          "total_with_markup": {
                            "type": "number",
                            "example": 2.75
                          },
                          "embedded_emissions_t": {
                            "type": "integer",
                            "example": 275
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "cn": "72081000",
                  "country_table": "China",
                  "items": [
                    {
                      "description": "Flat-rolled products…",
                      "total": 2.5,
                      "total_with_markup": 2.75,
                      "embedded_emissions_t": 275
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-carbon-customs",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "eu_carbon_customs",
        "tags": [
          "x402"
        ],
        "summary": "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) (JSON body)",
        "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). Pay-per-call: $0.003 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.003"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "3000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "cn": {
                      "type": "string",
                      "example": "72081000"
                    },
                    "country_table": {
                      "type": "string",
                      "example": "China"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "description": {
                            "type": "string",
                            "example": "Flat-rolled products…"
                          },
                          "total": {
                            "type": "number",
                            "example": 2.5
                          },
                          "total_with_markup": {
                            "type": "number",
                            "example": 2.75
                          },
                          "embedded_emissions_t": {
                            "type": "integer",
                            "example": 275
                          }
                        }
                      }
                    }
                  }
                },
                "example": {
                  "cn": "72081000",
                  "country_table": "China",
                  "items": [
                    {
                      "description": "Flat-rolled products…",
                      "total": 2.5,
                      "total_with_markup": 2.75,
                      "embedded_emissions_t": 275
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/eu-carbon-customs",
                    "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).",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "3000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/kyb-check-eu": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "kyb_check_eu_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.01 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "vat",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "EU VAT number with country prefix"
          },
          {
            "name": "name",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Company name if VIES does not publish it"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "vat": {
                      "type": "string",
                      "example": "FR27552032534"
                    },
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vies": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        },
                        "name": {
                          "type": "string",
                          "example": "SA DANONE"
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "vat": "FR27552032534",
                  "verdict": "pass",
                  "flags": [],
                  "vies": {
                    "valid": true,
                    "name": "SA DANONE"
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-eu",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "kyb_check_eu",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.01 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "vat": {
                      "type": "string",
                      "example": "FR27552032534"
                    },
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vies": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        },
                        "name": {
                          "type": "string",
                          "example": "SA DANONE"
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "vat": "FR27552032534",
                  "verdict": "pass",
                  "flags": [],
                  "vies": {
                    "valid": true,
                    "name": "SA DANONE"
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-eu",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/kyb-check-fr": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "kyb_check_fr_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.01 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "siren",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "SIREN or SIRET"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "verdict": "pass",
                  "flags": [],
                  "vat": {
                    "valid": true
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-fr",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "kyb_check_fr",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.01 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "siren": {
                    "type": "string",
                    "description": "SIREN or SIRET"
                  }
                },
                "required": [
                  "siren"
                ]
              },
              "example": {
                "siren": "552032534"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "siren": {
                      "type": "string",
                      "example": "552032534"
                    },
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "siren": "552032534",
                  "verdict": "pass",
                  "flags": [],
                  "vat": {
                    "valid": true
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/kyb-check-fr",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/supplier-due-diligence": {
      "servers": [
        {
          "url": "https://forge-tools.dentreprise.workers.dev",
          "description": "Wave-1 tools worker"
        }
      ],
      "get": {
        "operationId": "supplier_due_diligence_get",
        "tags": [
          "x402"
        ],
        "summary": "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",
        "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. Pay-per-call: $0.01 USDC on Base (x402). GET uses query parameters.",
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Company name"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "ISO alpha-2"
          },
          {
            "name": "vat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "EU VAT number (optional)"
          }
        ],
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    },
                    "lei": {
                      "type": "object",
                      "properties": {
                        "candidates": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "lei": {
                                "type": "string",
                                "example": "…"
                              },
                              "status": {
                                "type": "string",
                                "example": "ACTIVE"
                              }
                            }
                          }
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "pass",
                  "flags": [],
                  "vat": {
                    "valid": true
                  },
                  "lei": {
                    "candidates": [
                      {
                        "lei": "…",
                        "status": "ACTIVE"
                      }
                    ]
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/supplier-due-diligence",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "post": {
        "operationId": "supplier_due_diligence",
        "tags": [
          "x402"
        ],
        "summary": "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 (JSON body)",
        "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. Pay-per-call: $0.01 USDC on Base (x402). POST uses a JSON body with the same fields as the GET query.",
        "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"
              }
            }
          }
        },
        "security": [],
        "x-payment": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "x-payment-info": {
          "protocols": [
            {
              "x402": {
                "version": 2
              }
            }
          ],
          "price": {
            "mode": "fixed",
            "currency": "USDC",
            "amount": "0.01"
          },
          "network": "eip155:8453",
          "networkName": "Base",
          "asset": "USDC",
          "assetContract": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
          "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
          "maxTimeoutSeconds": 120,
          "atomicAmount": "10000"
        },
        "responses": {
          "200": {
            "description": "Paid request succeeded. JSON body.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "verdict": {
                      "type": "string",
                      "example": "pass"
                    },
                    "flags": {
                      "type": "array",
                      "items": {}
                    },
                    "vat": {
                      "type": "object",
                      "properties": {
                        "valid": {
                          "type": "boolean",
                          "example": true
                        }
                      }
                    },
                    "lei": {
                      "type": "object",
                      "properties": {
                        "candidates": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "lei": {
                                "type": "string",
                                "example": "…"
                              },
                              "status": {
                                "type": "string",
                                "example": "ACTIVE"
                              }
                            }
                          }
                        }
                      }
                    },
                    "sanctions": {
                      "type": "object",
                      "properties": {
                        "match": {
                          "type": "boolean",
                          "example": false
                        }
                      }
                    }
                  }
                },
                "example": {
                  "verdict": "pass",
                  "flags": [],
                  "vat": {
                    "valid": true
                  },
                  "lei": {
                    "candidates": [
                      {
                        "lei": "…",
                        "status": "ACTIVE"
                      }
                    ]
                  },
                  "sanctions": {
                    "match": false
                  }
                }
              }
            }
          },
          "400": {
            "description": "The call was paid (or is being validated) but the input is invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "error": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required (x402). The JSON body (and the PAYMENT-REQUIRED header) is an x402 v2 challenge. accepts[].amount is the price in atomic USDC units (6 decimals). Retry with PAYMENT-SIGNATURE or X-PAYMENT.",
            "headers": {
              "PAYMENT-REQUIRED": {
                "description": "Base64-encoded JSON payment requirements (same object as the body accepts[] / x402 challenge).",
                "schema": {
                  "type": "string",
                  "format": "byte"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X402PaymentRequired"
                },
                "example": {
                  "x402Version": 2,
                  "error": "Payment required",
                  "resource": {
                    "url": "https://x402-gateway.forge-x402.workers.dev/api/supplier-due-diligence",
                    "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.",
                    "mimeType": "application/json"
                  },
                  "accepts": [
                    {
                      "scheme": "exact",
                      "network": "eip155:8453",
                      "amount": "10000",
                      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                      "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
                      "maxTimeoutSeconds": 120,
                      "extra": {
                        "name": "USD Coin",
                        "version": "2"
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "X402Accept": {
        "type": "object",
        "required": [
          "scheme",
          "network",
          "maxAmountRequired",
          "asset",
          "payTo"
        ],
        "properties": {
          "scheme": {
            "type": "string",
            "example": "exact"
          },
          "network": {
            "type": "string",
            "example": "eip155:8453",
            "description": "CAIP-2 network id. Base mainnet is eip155:8453."
          },
          "maxAmountRequired": {
            "type": "string",
            "description": "Price in atomic token units (USDC has 6 decimals; \"1000\" = 0.001 USDC).",
            "example": "1000"
          },
          "amount": {
            "type": "string",
            "description": "Alias of maxAmountRequired used by some manifests.",
            "example": "1000"
          },
          "resource": {
            "type": "string",
            "format": "uri"
          },
          "description": {
            "type": "string"
          },
          "mimeType": {
            "type": "string",
            "example": "application/json"
          },
          "payTo": {
            "type": "string",
            "example": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"
          },
          "asset": {
            "type": "string",
            "example": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
            "description": "USDC contract on Base."
          },
          "maxTimeoutSeconds": {
            "type": "integer",
            "example": 120
          },
          "extra": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "example": "USD Coin"
              },
              "version": {
                "type": "string",
                "example": "2"
              }
            }
          }
        }
      },
      "X402PaymentRequired": {
        "type": "object",
        "required": [
          "x402Version",
          "accepts"
        ],
        "properties": {
          "x402Version": {
            "type": "integer",
            "example": 2,
            "description": "x402 protocol version spoken by the resource server."
          },
          "error": {
            "type": "string",
            "example": "X-PAYMENT or PAYMENT-SIGNATURE header is required"
          },
          "accepts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/X402Accept"
            }
          }
        }
      }
    }
  },
  "x-x402": {
    "version": 2,
    "network": "eip155:8453",
    "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
    "assetSymbol": "USDC",
    "payTo": "0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7",
    "wellKnown": "/.well-known/x402",
    "paymentHeaders": [
      "PAYMENT-SIGNATURE",
      "X-PAYMENT"
    ],
    "paymentRequiredHeader": "PAYMENT-REQUIRED"
  }
}
