{
  "name": "InvoiceVerify",
  "description": "EU e-invoicing tools for AI agents: validate UBL, Peppol BIS Billing 3.0, XRechnung and CII / Factur-X invoices against EN 16931 and Peppol rules, generate or convert compliant invoice XML, read invoices into JSON and check whether a company can receive Peppol invoices. Without signing in, check_peppol_receivability checks one Belgian company under 0208 and 9925 for free (20 calls per hour per visitor); every other tool needs an InvoiceVerify account (OAuth sign-in) and most use metered API calls. The skills are MCP tools served at https://peppol-invoice-compass.lovable.app/mcp (Streamable HTTP); this agent does not accept A2A messages. Invoice contents are never stored.",
  "supportedInterfaces": [
    {
      "url": "https://peppol-invoice-compass.lovable.app/mcp",
      "protocolBinding": "MCP",
      "protocolVersion": "2026-07-28"
    },
    {
      "url": "https://peppol-invoice-compass.lovable.app/mcp",
      "protocolBinding": "MCP",
      "protocolVersion": "2025-11-25"
    }
  ],
  "url": "https://peppol-invoice-compass.lovable.app/mcp",
  "preferredTransport": "MCP",
  "provider": {
    "organization": "InvoiceVerify",
    "url": "https://peppol-invoice-compass.lovable.app"
  },
  "version": "1.2.1",
  "documentationUrl": "https://peppol-invoice-compass.lovable.app/docs/mcp",
  "iconUrl": "https://peppol-invoice-compass.lovable.app/press/invoiceverify-mark.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "extendedAgentCard": false,
    "extensions": [
      {
        "uri": "https://modelcontextprotocol.io/specification",
        "description": "Connect with an MCP client: the skills are MCP tools at https://peppol-invoice-compass.lovable.app/mcp (Streamable HTTP). Skill IDs are the MCP tool names.",
        "required": true,
        "params": {
          "endpoint": "https://peppol-invoice-compass.lovable.app/mcp",
          "transport": "streamable-http",
          "protocolVersions": [
            "2026-07-28",
            "2025-11-25"
          ],
          "serverId": "app.lovable.peppol-invoice-compass/invoiceverify",
          "serverName": "invoiceverify",
          "withoutSignIn": {
            "tools": [
              "check_peppol_receivability"
            ],
            "rateLimit": "20 calls per hour per visitor"
          },
          "signIn": {
            "method": "OAuth 2.1 (sign in with an InvoiceVerify account)",
            "protectedResourceMetadata": "https://peppol-invoice-compass.lovable.app/.well-known/oauth-protected-resource",
            "authorizationServer": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/auth/v1",
            "authorizationServerMetadata": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/.well-known/oauth-authorization-server/auth/v1",
            "authorizationEndpoint": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/auth/v1/oauth/authorize",
            "tokenEndpoint": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/auth/v1/oauth/token",
            "flow": "Authorization code with PKCE (S256)",
            "clientRegistration": "Dynamic client registration (RFC 7591); the registration endpoint is in the authorization server metadata",
            "tokenUsage": "Send the access token as \"Authorization: Bearer <token>\" on every /mcp request",
            "tools": [
              "validate_invoice",
              "generate_invoice",
              "convert_invoice",
              "parse_invoice",
              "lookup_peppol_participant",
              "check_belgian_peppol_list",
              "explain_rule",
              "get_usage"
            ]
          },
          "pricing": {
            "url": "https://peppol-invoice-compass.lovable.app/pricing",
            "withoutSignIn": "check_peppol_receivability: free, 20 calls per hour per visitor",
            "freeAccountMonthlyCalls": 100,
            "proMonthlyCalls": 1000,
            "proPriceEur": {
              "month": 14,
              "year": 99
            },
            "callPacks": [
              {
                "calls": 2000,
                "priceEur": 19
              },
              {
                "calls": 10000,
                "priceEur": 79
              },
              {
                "calls": 50000,
                "priceEur": 299
              }
            ],
            "callPackValidityMonths": 12,
            "pricesExclude": "VAT"
          },
          "restApi": {
            "baseUrl": "https://peppol-invoice-compass.lovable.app/api/public/v1/",
            "openapi": "https://peppol-invoice-compass.lovable.app/openapi.json",
            "documentation": "https://peppol-invoice-compass.lovable.app/docs/api",
            "authentication": "Bearer API key from https://peppol-invoice-compass.lovable.app/dashboard/api-keys (not accepted on /mcp, which uses OAuth)"
          },
          "links": {
            "documentation": "https://peppol-invoice-compass.lovable.app/docs/mcp",
            "serverCard": "https://peppol-invoice-compass.lovable.app/mcp/server-card",
            "mcpDiscovery": "https://peppol-invoice-compass.lovable.app/.well-known/mcp.json",
            "agentCard": "https://peppol-invoice-compass.lovable.app/.well-known/agent-card.json",
            "aiCatalog": "https://peppol-invoice-compass.lovable.app/.well-known/ai-catalog.json",
            "apiCatalog": "https://peppol-invoice-compass.lovable.app/.well-known/api-catalog",
            "openapi": "https://peppol-invoice-compass.lovable.app/openapi.json",
            "llmsTxt": "https://peppol-invoice-compass.lovable.app/llms.txt"
          }
        }
      }
    ]
  },
  "securitySchemes": {
    "invoiceverify_oauth": {
      "oauth2SecurityScheme": {
        "description": "Sign in with an InvoiceVerify account. MCP clients find this from the 401 challenge and https://peppol-invoice-compass.lovable.app/.well-known/oauth-protected-resource (RFC 9728), register via dynamic client registration (RFC 7591) and use the authorization-code flow with PKCE (S256); the token goes in the Authorization: Bearer header on /mcp. Not needed for check_peppol_receivability.",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/auth/v1/oauth/authorize",
            "tokenUrl": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/auth/v1/oauth/token",
            "scopes": {
              "openid": "Sign in with your InvoiceVerify account",
              "email": "Your account email address",
              "profile": "Your account name"
            }
          }
        },
        "oauth2MetadataUrl": "https://xdgwjwcgdbzgpwkwyyjd.supabase.co/.well-known/oauth-authorization-server/auth/v1"
      }
    }
  },
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "skills": [
    {
      "id": "check_peppol_receivability",
      "name": "Check Belgian Peppol receivability (free)",
      "description": "One Belgian enterprise or VAT number: can the company receive Peppol invoices under 0208 (enterprise number), 9925 (VAT number), both or neither, which ID to send to, and the fix in English, Dutch or French. Free without signing in; 20 checks per hour per visitor.",
      "tags": [
        "peppol",
        "belgium",
        "0208",
        "9925",
        "receivability",
        "free"
      ],
      "examples": [
        "Can Belgian company 0403.170.701 receive Peppol invoices?",
        "{\"id\": \"BE0403170701\", \"lang\": \"nl\"}"
      ]
    },
    {
      "id": "validate_invoice",
      "name": "Validate e-invoice",
      "description": "Validate UBL 2.1, Peppol BIS Billing 3.0, XRechnung or CII / Factur-X XML against EN 16931 and Peppol rules: pass/fail with rule IDs, line numbers and fixes. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call.",
      "tags": [
        "e-invoicing",
        "validation",
        "en16931",
        "peppol",
        "ubl",
        "xrechnung",
        "factur-x"
      ],
      "examples": [
        "Check this Peppol invoice XML before I send it.",
        "Why is my XRechnung rejected?"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "generate_invoice",
      "name": "Generate e-invoice XML",
      "description": "Create Peppol BIS 3 UBL, XRechnung (UBL or CII) or Factur-X / ZUGFeRD CII XML from structured invoice data, with totals and VAT computed and the result validated. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call.",
      "tags": [
        "e-invoicing",
        "generator",
        "peppol",
        "ubl",
        "xrechnung",
        "factur-x"
      ],
      "examples": [
        "Create a Peppol UBL invoice for 3 hours of consulting at €95, 21% VAT."
      ],
      "outputModes": [
        "application/json",
        "text/plain",
        "application/xml"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "convert_invoice",
      "name": "Convert e-invoice format",
      "description": "Convert UBL or CII / Factur-X XML into Peppol BIS 3 UBL, XRechnung UBL, XRechnung CII or Factur-X CII, and validate the result. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call.",
      "tags": [
        "e-invoicing",
        "converter",
        "ubl",
        "cii",
        "xrechnung",
        "factur-x"
      ],
      "examples": [
        "Convert this Factur-X XML to Peppol BIS 3 UBL."
      ],
      "outputModes": [
        "application/json",
        "text/plain",
        "application/xml"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "parse_invoice",
      "name": "Read e-invoice into JSON",
      "description": "Read UBL or CII / Factur-X XML into structured JSON (parties, lines, VAT, totals, payment) for booking or reconciliation. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call.",
      "tags": [
        "e-invoicing",
        "parser",
        "json",
        "ubl",
        "cii"
      ],
      "examples": [
        "Extract the seller, lines and totals from this invoice XML."
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "lookup_peppol_participant",
      "name": "Check Peppol receivability",
      "description": "Any VAT number, company number (KBO/BCE, KvK, SIREN/SIRET), GLN or Peppol ID: checks every relevant scheme in the live Peppol SML/SMP, lists supported document types and says which ID to send to. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call.",
      "tags": [
        "peppol",
        "lookup",
        "smp",
        "receivability",
        "participant-id"
      ],
      "examples": [
        "Can NL859876543B01 receive Peppol invoices, and under which ID?"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "check_belgian_peppol_list",
      "name": "Check a Belgian client list on Peppol",
      "description": "Up to 25 Belgian enterprise or VAT numbers per request, each checked under 0208 and 9925: receivable under both, only one, neither or unknown, with the risk and fix in Dutch, French or English. Requires an InvoiceVerify account (OAuth sign-in). Uses one metered API call per company, up to 25 companies per request.",
      "tags": [
        "peppol",
        "belgium",
        "0208",
        "9925",
        "bulk",
        "bookkeepers"
      ],
      "examples": [
        "Check which of my 20 Belgian clients can't receive Peppol invoices under their VAT number."
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "explain_rule",
      "name": "Explain validation rule",
      "description": "Explain an EN 16931, Peppol or XRechnung business rule (e.g. BR-CO-15) in plain English, Dutch or French, with typical causes and fix steps. Requires an InvoiceVerify account (OAuth sign-in). Free (not metered).",
      "tags": [
        "e-invoicing",
        "rules",
        "en16931",
        "peppol",
        "xrechnung"
      ],
      "examples": [
        "What does BR-CO-15 mean and how do I fix it?"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    },
    {
      "id": "get_usage",
      "name": "Show API usage",
      "description": "This month's metered calls, the included allowance, remaining call-pack credits and the reset date for the signed-in account. Requires an InvoiceVerify account (OAuth sign-in). Free (not metered).",
      "tags": [
        "account",
        "usage",
        "quota"
      ],
      "examples": [
        "How many InvoiceVerify calls do I have left this month?"
      ],
      "securityRequirements": [
        {
          "schemes": {
            "invoiceverify_oauth": {
              "list": []
            }
          }
        }
      ]
    }
  ]
}