{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_u4dq7q5c2bgn","handle":"normapi","url":"https://wellknown.network/agents/normapi","links":{"self":"https://wellknown.network/agents/normapi/record.json","html":"https://wellknown.network/agents/normapi","markdown":"https://wellknown.network/agents/normapi/record.md","api":"https://wellknown.network/api/v1/agents/normapi","status":"https://wellknown.network/api/v1/agents/normapi/status","claim":"https://wellknown.network/agents/normapi/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/normapi/claim.json","badge":"https://wellknown.network/agents/normapi/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/normapi/history","tools":"https://wellknown.network/api/v1/agents/normapi/tools"},"ard":{"identifier":"urn:air:normapi.com:server:normapi","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"NormAPI","summary":"Validate and generate German e-invoices (XRechnung, ZUGFeRD) against the official KoSIT rules.","description":"Validate and generate German e-invoices (XRechnung, ZUGFeRD) against the official KoSIT rules.","publisher":{"name":"com.normapi","url":null},"homepage":"https://normapi.com/en/docs/mcp","repository":null,"version":"1.0.2","license":"MIT","protocols":["mcp"],"tags":["mcp","model-context-protocol","xrechnung","zugferd","factur-x","en16931","e-rechnung","e-invoice","kosit"],"pricing":null,"endpoints":[{"url":"https://normapi.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:@normapi/mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-21T16:43:36.272811Z","npmKeywords":["mcp","model-context-protocol","xrechnung","zugferd","factur-x","en16931","e-rechnung","e-invoice","kosit"],"publishedAt":"2026-10-21T16:43:36.272811Z","registryName":"com.normapi/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","license":"npm","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"documents.invoice-processing","name":"Invoice Processing","confidence":1,"provenance":"derived"},{"slug":"documents.extraction","name":"Data Extraction","confidence":0.583,"provenance":"derived"}],"categories":["documents"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-23T21:25:23.109Z","lastProbedAt":"2026-10-23T21:25:23.109Z","statusComputedAt":"2026-10-23T21:28:04.159Z","reliability30d":{"probes":43,"successRate":1,"p50Ms":14,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":43,"ok":43,"authBoundaryOk":0,"serviceOk":43,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-23T21:25:23.109Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":14,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"parse_invoice","description":"Read a received e-invoice — XRechnung or any EN 16931 invoice as UBL or CII XML, or a ZUGFeRD/Factur-X PDF — into structured data. `invoice` is in exactly the s"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":4,"toolsHash":"97ab45704dc21568ee28778c2f76515e1c25bf3a805916fe7da38822689866ad","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T14:29:10.535Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":15,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"parse_invoice","description":"Read a received e-invoice — XRechnung or any EN 16931 invoice as UBL or CII XML, or a ZUGFeRD/Factur-X PDF — into structured data. `invoice` is in exactly the s"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":4,"toolsHash":"97ab45704dc21568ee28778c2f76515e1c25bf3a805916fe7da38822689866ad","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.2.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T07:28:20.126Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"c185add98ca5b4d73d8e97631c7a72a2c088a665bfa5dedab0cdfc10e514fab0","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T01:30:30.819Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"c185add98ca5b4d73d8e97631c7a72a2c088a665bfa5dedab0cdfc10e514fab0","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T19:32:07.434Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":11,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"c185add98ca5b4d73d8e97631c7a72a2c088a665bfa5dedab0cdfc10e514fab0","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T13:29:40.534Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":29,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an XRechnung (`ubl` or `cii` XML) or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data. Totals are computed server-side in decimal arithmetic, and the "},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"8e171cf30c70ff3c3002affc1bf1f708ae60345d54681507cab9974cc94eea20","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.0.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T06:27:55.093Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":11,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an XRechnung (`ubl` or `cii` XML) or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data. Totals are computed server-side in decimal arithmetic, and the "},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"8e171cf30c70ff3c3002affc1bf1f708ae60345d54681507cab9974cc94eea20","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.0.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T00:33:49.611Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":10,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an XRechnung (`ubl` or `cii` XML) or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data. Totals are computed server-side in decimal arithmetic, and the "},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"8e171cf30c70ff3c3002affc1bf1f708ae60345d54681507cab9974cc94eea20","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.0.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T18:32:16.716Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":12,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an XRechnung (`ubl` or `cii` XML) or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data. Totals are computed server-side in decimal arithmetic, and the "},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"8e171cf30c70ff3c3002affc1bf1f708ae60345d54681507cab9974cc94eea20","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.0.1","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T09:35:02.746Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":13,"error":null,"detail":{"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"generate_invoice","description":"Produce an XRechnung (`ubl` or `cii` XML) or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data. Totals are computed server-side in decimal arithmetic, and the "},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"toolCount":3,"toolsHash":"8e171cf30c70ff3c3002affc1bf1f708ae60345d54681507cab9974cc94eea20","serverName":"normapi","capabilities":["tools"],"serverVersion":"1.0.1","protocolVersion":"2025-06-18"}}],"tools":[{"name":"validate_invoice","description":"Check an XRechnung (UBL or CII XML) or a ZUGFeRD/Factur-X PDF against the official KoSIT rules. Returns the verdict, the rule set version, and every finding; ea"},{"name":"parse_invoice","description":"Read a received e-invoice — XRechnung or any EN 16931 invoice as UBL or CII XML, or a ZUGFeRD/Factur-X PDF — into structured data. `invoice` is in exactly the s"},{"name":"generate_invoice","description":"Produce an e-invoice as `ubl` or `cii` XML or a ZUGFeRD hybrid PDF (`zugferd`) from invoice data: an XRechnung for a public-sector buyer (profile `xrechnung`, t"},{"name":"explain_rule","description":"Explain one EN 16931 / XRechnung / Peppol business rule by its code (e.g. BR-DE-15, BR-CO-10, PEPPOL-EN16931-R010): what it requires, why invoices typically bre"}],"package":{"name":"@normapi/mcp","registry":"npm","observedAt":"2026-10-23T21:29:45.200Z","publishedAt":"2026-10-09T13:32:33.377Z","latestVersion":"1.0.1","weeklyDownloads":443},"toolSurface":{"id":"ts_6e5gqnhbvnj5","endpointId":"ep_t7rkxjd22vdg","hash":"97ab45704dc21568ee28778c2f76515e1c25bf3a805916fe7da38822689866ad","toolCount":4,"serverName":"normapi","serverVersion":"1.2.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-23T14:29:10.544Z","lastSeenAt":"2026-10-23T21:25:23.121Z","observations":2,"toolNames":["validate_invoice","parse_invoice","generate_invoice","explain_rule"],"distinctSurfaces":4},"endpointFacts":[{"id":"ep_t7rkxjd22vdg","url":"https://normapi.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-16T20:34:25.491Z","auth":{"observedAt":"2026-10-16T20:34:25.513Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://normapi.com/.well-known/oauth-protected-resource/mcp","resource":"https://normapi.com/mcp","authorizationServers":["https://normapi.com"],"scopesSupported":["invoices:write"]},"authorizationServer":{"url":"https://normapi.com/.well-known/oauth-authorization-server","issuer":"https://normapi.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none","client_secret_post","client_secret_basic"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":true},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":true,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-16T20:34:25.524Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"normapi.com","issuer":{"commonName":"YR2","organization":"Let's Encrypt"},"validFrom":"2026-10-03T21:45:10.000Z","validTo":"2027-01-01T21:45:09.000Z","daysToExpiry":69,"sanCount":1,"fingerprint256":"CA:9F:82:35:C3:60:B7:87:26:69:24:6B:0E:09:5A:87:D6:99:01:0C:2C:B8:ED:05:CF:BD:A6:41:67:FB:DC:C3"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"npm","key":"@normapi/mcp","url":"https://www.npmjs.com/package/@normapi/mcp","firstSeenAt":"2026-10-20T17:21:03.935Z","fetchedAt":"2026-10-20T17:21:03.935Z","normalizedAt":"2026-10-20T17:21:03.935Z"},{"source":"mcp_registry","key":"com.normapi/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/com.normapi%2Fmcp","firstSeenAt":"2026-10-12T05:22:26.761Z","fetchedAt":"2026-10-21T23:19:37.775Z","normalizedAt":"2026-10-21T23:19:37.775Z"}]},"firstSeenAt":"2026-10-12T05:22:26.761Z","updatedAt":"2026-10-23T21:29:45.201Z"}