{"service":{"name":"Jithox","origin":"https://jithox.com","status":"preview_local_build","serverName":"jithox","mcpServerName":"com.jithox/connection"},"canonicalEndpoint":"https://jithox.com/api/agent-connection/v1/mcp","authorizationMetadata":{"resourceMetadata":"https://jithox.com/.well-known/oauth-protected-resource/api/agent-connection/v1/mcp","authorizationServer":"https://jithox.com","authorizationServerMetadata":"https://jithox.com/.well-known/oauth-authorization-server","authorizationEndpoint":"https://jithox.com/api/oauth/authorize","tokenEndpoint":"https://jithox.com/api/oauth/token","registrationEndpoint":"https://jithox.com/api/oauth/register","revocationEndpoint":"https://jithox.com/api/oauth/revoke","grantTypes":["authorization_code","refresh_token","client_credentials","urn:ietf:params:oauth:grant-type:device_code"],"codeChallengeMethods":["S256"],"publicClients":true,"bearerKinds":["oauth_access_token","connection_credential","client_credentials_token"],"credentialPrefix":"jxc_live_","credentialPlaceholder":"<PASTE_YOUR_JITHOX_CONNECTION>","tokenTtlSeconds":600},"oauth":{"recommended":true,"flow":["GET the protected resource metadata named in the gateway's 401 challenge; it names the authorization server.","GET its metadata: authorization, token, registration and revocation endpoints, S256 only.","POST registration (public client, loopback or https redirect) → client_id.","Open the authorization endpoint with response_type=code, PKCE S256, an exact state, resource=the canonical endpoint and the scopes; the person signs in and approves on /oauth/consent.","POST the code with code_verifier to the token endpoint → a 600-second access token, a rotating refresh token, the granted scope.","Send Authorization: Bearer on every gateway request; refresh with the refresh token (the old one dies; a reuse revokes the grant); revoke at the revocation endpoint or on the account page — the next call is refused."],"staticCredential":"compatibility_fallback","clientTemplates":[{"id":"claude","label":"Claude","format":"bash","filename":null,"content":"claude mcp add --transport http jithox https://jithox.com/api/agent-connection/v1/mcp\nclaude mcp login jithox","status":"OAUTH_FLOW_TESTED","flow":"Authorization Code + PKCE S256, RFC 9728 → 8414 discovery, dynamic registration; `claude mcp login <name>` (--no-browser for headless); tokens in the credential store, never in the config file; refresh on 401 once.","proof":"Claude Code 2.1.263 signed in against the synthetic provider of the Client Certification Lab (registration, PKCE, code, tokens, tools/list) with a scratch HOME; see docs/cli/OAUTH_FIRST_CONNECTION_V2.md. Not against production: no owner sign-in was automated."},{"id":"chatgpt","label":"ChatGPT / Codex","format":"toml","filename":"~/.codex/config.toml","content":"[mcp_servers.jithox]\nurl = \"https://jithox.com/api/agent-connection/v1/mcp\"\n","status":"CONFIG_VALIDATED","flow":"Codex CLI: `auth = \"oauth\"` by default for a streamable HTTP server, PKCE, dynamic registration and CIMD, loopback callback, `codex mcp login <name>`; tokens in its credential store.","proof":"Codex CLI 0.153.4 wrote the block and attempted metadata discovery at login; the browser step was not automated."},{"id":"gemini","label":"Gemini","format":"json","filename":"~/.gemini/settings.json","content":"{\n  \"mcpServers\": {\n    \"jithox\": {\n      \"httpUrl\": \"https://jithox.com/api/agent-connection/v1/mcp\"\n    }\n  }\n}\n","status":"RESEARCHED","flow":"Gemini CLI: automatic discovery on 401, dynamic registration, `/mcp auth <name>`, tokens in ~/.gemini/mcp-oauth-tokens.json.","proof":"Official documentation only; the binary is not installed in the certification environment."},{"id":"grok_cursor","label":"Grok / Cursor","format":"json","filename":".cursor/mcp.json","content":"{\n  \"mcpServers\": {\n    \"jithox\": {\n      \"url\": \"https://jithox.com/api/agent-connection/v1/mcp\"\n    }\n  }\n}\n","status":"BLOCKED_WITH_REASON","flow":"Cursor: dynamic registration by default or a static `auth` object; callback http://localhost:8787/callback; `agent mcp login <name>` in the CLI.","proof":"Only a Windows binary is reachable from this WSL environment (Exec format error); configuration validated, no run."},{"id":"generic_mcp","label":"Any MCP client","format":"text","filename":null,"content":"https://jithox.com/api/agent-connection/v1/mcp\n(sign in when the client asks; no header)\n","status":"CONFIG_VALIDATED","flow":"Any client that follows MCP authorization: PRM → AS metadata → PKCE → code → tokens.","proof":"The kit's own login walked the full flow against the real routes in the lab."},{"id":"generic_http","label":"Any HTTP or CLI agent","format":"text","filename":null,"content":"https://jithox.com/api/agent-connection/v1/mcp\nOAuth is required for authenticated calls.\n","status":"OAUTH_FLOW_TESTED","flow":"Use an OAuth-capable MCP client for authorization, or the published `jithox` terminal kit.","proof":"Walked end to end in the Client Certification Lab against the real routes with the in-memory store."}]},"supportedProtocolVersions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26"],"initializeAnswers":"2025-06-18","transport":"streamable_http_json","liveTools":[{"name":"validate_invoice","productId":"einvoice","scope":"tools:read:einvoice"},{"name":"validate_vat_number","productId":"einvoice","scope":"tools:read:einvoice"},{"name":"verify_vat_vies","productId":"einvoice","scope":"tools:read:einvoice"},{"name":"lookup_peppol_participant","productId":"einvoice","scope":"tools:read:einvoice"},{"name":"get_einvoice_readiness","productId":"einvoice","scope":"tools:read:einvoice"},{"name":"search_eprel_products","productId":"eu-energy-label-preflight","scope":"tools:read:eu-energy-label-preflight"},{"name":"get_eprel_product_record","productId":"eu-energy-label-preflight","scope":"tools:read:eu-energy-label-preflight"},{"name":"get_eprel_energy_label_data","productId":"eu-energy-label-preflight","scope":"tools:read:eu-energy-label-preflight"},{"name":"compare_eprel_product_metrics","productId":"eu-energy-label-preflight","scope":"tools:read:eu-energy-label-preflight"},{"name":"prepare_energy_label_preflight_receipt","productId":"eu-energy-label-preflight","scope":"tools:read:eu-energy-label-preflight"},{"name":"validate_eori","productId":"eu-import-preflight","scope":"tools:read:eu-import-preflight"},{"name":"search_taric_codes","productId":"eu-import-preflight","scope":"tools:read:eu-import-preflight"},{"name":"check_eu_import_measures","productId":"eu-import-preflight","scope":"tools:read:eu-import-preflight"},{"name":"estimate_low_value_import_cost","productId":"eu-import-preflight","scope":"tools:read:eu-import-preflight"},{"name":"prepare_import_preflight_receipt","productId":"eu-import-preflight","scope":"tools:read:eu-import-preflight"},{"name":"screen_sanctioned_name","productId":"eu-sanctions-preflight","scope":"tools:read:eu-sanctions-preflight"},{"name":"screen_sanctioned_identifier","productId":"eu-sanctions-preflight","scope":"tools:read:eu-sanctions-preflight"},{"name":"get_sanctions_listing","productId":"eu-sanctions-preflight","scope":"tools:read:eu-sanctions-preflight"},{"name":"list_sanctions_regimes","productId":"eu-sanctions-preflight","scope":"tools:read:eu-sanctions-preflight"},{"name":"prepare_screening_receipt","productId":"eu-sanctions-preflight","scope":"tools:read:eu-sanctions-preflight"}],"labsTools":[{"name":"agent_action_preflight","id":"agent-action-preflight","scope":"actions:prepare:agent-action-preflight","free":true},{"name":"verify_company_registration","id":"company-register-verification","scope":"actions:prepare:company-register-verification","free":true},{"name":"find_company_registration","id":"company-register-verification","scope":"actions:prepare:company-register-verification","free":true},{"name":"check_registration_number_format","id":"company-register-verification","scope":"actions:prepare:company-register-verification","free":true}],"toolStatus":{"validate_invoice":"live","validate_vat_number":"live","verify_vat_vies":"live","lookup_peppol_participant":"live","get_einvoice_readiness":"live","search_eprel_products":"live","get_eprel_product_record":"live","get_eprel_energy_label_data":"live","compare_eprel_product_metrics":"live","prepare_energy_label_preflight_receipt":"live","validate_eori":"live","search_taric_codes":"live","check_eu_import_measures":"live","estimate_low_value_import_cost":"live","prepare_import_preflight_receipt":"live","screen_sanctioned_name":"live","screen_sanctioned_identifier":"live","get_sanctions_listing":"live","list_sanctions_regimes":"live","prepare_screening_receipt":"live","agent_action_preflight":"labs","verify_company_registration":"labs","find_company_registration":"labs","check_registration_number_format":"labs"},"pricing":{"source":"https://jithox.com/api/pricing/v1","currency":"EUR","oneBalance":true,"prepaidMinimumMinorUnits":1000,"perTool":{"validate_invoice":1,"validate_vat_number":1,"verify_vat_vies":1,"lookup_peppol_participant":1,"get_einvoice_readiness":1,"search_eprel_products":1,"get_eprel_product_record":1,"get_eprel_energy_label_data":1,"compare_eprel_product_metrics":1,"prepare_energy_label_preflight_receipt":1,"validate_eori":1,"search_taric_codes":1,"check_eu_import_measures":1,"estimate_low_value_import_cost":1,"prepare_import_preflight_receipt":1,"screen_sanctioned_name":9,"screen_sanctioned_identifier":9,"get_sanctions_listing":9,"list_sanctions_regimes":9,"prepare_screening_receipt":9,"agent_action_preflight":0,"verify_company_registration":0,"find_company_registration":0,"check_registration_number_format":0},"onlyAcceptedCallsCharged":true,"automaticTopUp":false},"freeTrial":{"includedAcceptedCalls":25,"durationDays":14,"cardRequired":false,"currentlyOffered":true,"per":"workspace"},"scopes":{"discover":"tools:discover","grantable":["tools:discover","tools:read:einvoice","tools:read:eu-energy-label-preflight","tools:read:eu-import-preflight","tools:read:eu-sanctions-preflight","actions:prepare:agent-action-preflight","actions:prepare:company-register-verification"],"neverGrantable":["actions:approve","actions:execute"]},"connectionFlow":["A signed-in person creates a connection on https://jithox.com/mcp/account#connection and copies the credential once (jxc_live_…).","The client sends it as Authorization: Bearer on https://jithox.com/api/agent-connection/v1/mcp; discovery (tools/list) needs no credential.","Optional: exchange it for a 600-second token at https://jithox.com/api/oauth/token (client_credentials; client_id = connection id, client_secret = the credential).","Every tools/call re-checks scope, entitlement and budget; refusals carry a stable code and a recovery action."],"quoteFlow":{"endpoint":"https://jithox.com/api/agent-journey/v1/quote","outcomes":["FREE_TRIAL_AVAILABLE","SUFFICIENT_BALANCE","NEEDS_CREDITS","NEEDS_PERMISSION","NEEDS_OWNER_APPROVAL","TOOL_UNAVAILABLE","PRODUCT_NOT_OFFERED"],"reservesMoney":false,"chargesMoney":false},"receiptFlow":["An accepted answer carries _meta.receipt (the product's receipt) and _meta.jithoxConnection.receiptReference.","https://jithox.com/mcp/account lists every receipt of the workspace."],"revokeFlow":["A signed-in person revokes the connection on https://jithox.com/mcp/account#connection; no API revokes it.","After revocation the gateway answers 401 unauthorized for the old credential; the Connect Kit's disconnect verifies that."],"humanApprovalURLs":{"account":"https://jithox.com/mcp/account#connection","topUp":"https://jithox.com/mcp/topup","journey":"https://jithox.com/journey","quickstart":"https://jithox.com/docs/quickstart","connectKit":"https://jithox.com/connect/cli"},"errorCodes":{"parse_error":-32700,"invalid_request":-32600,"method_not_found":-32601,"invalid_params":-32602,"unauthorized":-32001,"not_entitled":-32002,"insufficient_scope":-32003,"budget_exceeded":-32004,"rate_limited":-32005,"replayed_request":-32006,"tool_not_found":-32010,"upstream_unavailable":-32011,"store_unavailable":-32012,"credential_unavailable":-32013,"tool_retired":-32014},"recoveryActions":["create_connection","check_connection","ask_owner","add_credits","retry_later","new_idempotency_key","fix_request","choose_another_tool","slow_down","request_approval"],"recovery":{"parse_error":{"code":"parse_error","action":"fix_request","next_step":"Send one JSON-RPC 2.0 object per POST.","human_url":"https://jithox.com/docs/quickstart"},"invalid_request":{"code":"invalid_request","action":"fix_request","next_step":"Send one object with jsonrpc, id, method and params, under 64 KB.","human_url":"https://jithox.com/docs/quickstart"},"method_not_found":{"code":"method_not_found","action":"fix_request","next_step":"Use tools/list to see what exists, then tools/call.","human_url":"https://jithox.com/docs/quickstart"},"invalid_params":{"code":"invalid_params","action":"fix_request","next_step":"Read data.issues, fix the arguments, and call again with a new idempotency key.","human_url":"https://jithox.com/tools"},"unauthorized":{"code":"unauthorized","action":"create_connection","next_step":"Create a connection on the account page and send it as Authorization: Bearer.","human_url":"https://jithox.com/mcp/account#connection"},"not_entitled":{"code":"not_entitled","action":"choose_another_tool","next_step":"Choose a live tool from tools/list, or ask the owner to check the workspace on the account page.","human_url":"https://jithox.com/tools"},"insufficient_scope":{"code":"insufficient_scope","action":"ask_owner","next_step":"Ask the owner for a connection that carries it; the challenge header names the scope.","human_url":"https://jithox.com/mcp/account#connection"},"budget_exceeded":{"code":"budget_exceeded","action":"ask_owner","next_step":"Ask the owner to raise the budget on the account page, or wait for the next UTC day.","human_url":"https://jithox.com/mcp/account#connection"},"rate_limited":{"code":"rate_limited","action":"slow_down","next_step":"Wait for the Retry-After window and try again.","human_url":"https://jithox.com/docs/quickstart"},"replayed_request":{"code":"replayed_request","action":"new_idempotency_key","next_step":"Read data.earlier_outcome; to run again on purpose, use a new idempotency key.","human_url":"https://jithox.com/docs/quickstart"},"tool_not_found":{"code":"tool_not_found","action":"choose_another_tool","next_step":"Use the names from tools/list exactly as listed.","human_url":"https://jithox.com/tools"},"upstream_unavailable":{"code":"upstream_unavailable","action":"retry_later","next_step":"Try again in a moment with a new idempotency key.","human_url":"https://jithox.com/status"},"store_unavailable":{"code":"store_unavailable","action":"retry_later","next_step":"Try again shortly.","human_url":"https://jithox.com/status"},"credential_unavailable":{"code":"credential_unavailable","action":"check_connection","next_step":"Open the account page: the connection can create one, or replace a key made by hand — never silently.","human_url":"https://jithox.com/mcp/account#connection"},"tool_retired":{"code":"tool_retired","action":"choose_another_tool","next_step":"Choose a tool from tools/list on this endpoint, or see the tools Jithox offers now.","human_url":"https://jithox.com/tools"}},"clientTemplates":[{"id":"claude","label":"Claude","format":"bash","filename":null,"serverName":"jithox","content":"claude mcp add --transport http jithox https://jithox.com/api/agent-connection/v1/mcp --header \"Authorization: Bearer <PASTE_YOUR_JITHOX_CONNECTION>\"","placeholders":["<PASTE_YOUR_JITHOX_CONNECTION>"],"status":"CERTIFIED","proof":"The generated `claude mcp add --transport http` command was run with Claude Code 2.1.263 against the real E-Invoice endpoint on 2026-09-06: `claude mcp list` answered Connected, no key involved. Claude Desktop's connector UI was not exercised."},{"id":"chatgpt","label":"ChatGPT / Codex","format":"toml","filename":"~/.codex/config.toml","serverName":"jithox","content":"[mcp_servers.jithox]\nurl = \"https://jithox.com/api/agent-connection/v1/mcp\"\nbearer_token_env_var = \"JITHOX_CONNECTION\"\n","placeholders":[],"status":"CONFIG_READY","proof":"Configuration validated. The Codex CLI starts an OAuth flow on add; not run end to end here."},{"id":"gemini","label":"Gemini","format":"json","filename":"~/.gemini/settings.json","serverName":"jithox","content":"{\n  \"mcpServers\": {\n    \"jithox\": {\n      \"httpUrl\": \"https://jithox.com/api/agent-connection/v1/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <PASTE_YOUR_JITHOX_CONNECTION>\"\n      }\n    }\n  }\n}\n","placeholders":["<PASTE_YOUR_JITHOX_CONNECTION>"],"status":"CONFIG_READY","proof":"Configuration validated. Gemini CLI is not installed in the certification environment."},{"id":"grok_cursor","label":"Grok / Cursor","format":"json","filename":".cursor/mcp.json","serverName":"jithox","content":"{\n  \"mcpServers\": {\n    \"jithox\": {\n      \"url\": \"https://jithox.com/api/agent-connection/v1/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer <PASTE_YOUR_JITHOX_CONNECTION>\"\n      }\n    }\n  }\n}\n","placeholders":["<PASTE_YOUR_JITHOX_CONNECTION>"],"status":"CONFIG_READY","proof":"Configuration validated as JSON with the exact mcp.json shape; Cursor is not installed in the certification environment."},{"id":"generic_mcp","label":"Any MCP client","format":"text","filename":null,"serverName":"jithox","content":"https://jithox.com/api/agent-connection/v1/mcp\nAuthorization: Bearer <PASTE_YOUR_JITHOX_CONNECTION>\n","placeholders":["<PASTE_YOUR_JITHOX_CONNECTION>"],"status":"CONFIG_READY","proof":"Endpoint validated; discovery through the Doctor's own relay against the real server."},{"id":"generic_http","label":"Any HTTP or CLI agent","format":"bash","filename":null,"serverName":"jithox","content":"curl -s https://jithox.com/api/agent-connection/v1/mcp \\\n  -H 'Content-Type: application/json' \\\n  -H 'Accept: application/json, text/event-stream' \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}'\n","placeholders":[],"status":"CERTIFIED","proof":"The generated curl tools/list command was run against the real E-Invoice endpoint on 2026-09-06 and listed the five tools, no key involved."}],"guarantees":{"universal_master_key":false,"execute_scope_grantable":false,"approve_scope_grantable":false,"refresh_tokens":false,"secrets_in_urls":false,"secrets_in_logs":false,"secrets_in_analytics":false,"discovery_free":true,"paid_call_rechecks_scope_entitlement_budget":true,"quote_reserves_money":false,"quote_charges_money":false,"quote_consumes_trial":false,"handoff_charges_money":false,"handoff_stores_card_data":false,"automatic_top_up":false,"automatic_purchase":false,"automatic_payment_retry":false,"executes_original_call_after_payment":false,"executes_external_actions":false,"calls_model_provider":false},"lastVerifiedAt":"2026-07-28T11:20:00Z","schemaVersion":"jithox.agent-bootstrap/v2","connectKit":{"contractRevision":5,"availability":"available","reason":"Published on npm as `jithox` (0.2.4).","guideUrl":"https://jithox.com/connect/cli","distributionEvidence":{"source":"https://registry.npmjs.org/jithox","checkedAt":"2026-09-19","publishedVersion":"0.2.4","publishedAt":"2026-09-16"},"installCommand":"npm install -g jithox@0.2.4","publicActions":["npm install -g jithox@0.2.4","jithox --help","jithox discover","jithox call verify_iban --input '{\"iban\":\"BE68539007547034\"}'","jithox test --sandbox","jithox doctor --local"],"shellVariants":[{"shell":"PowerShell","command":"jithox call verify_iban --input '{\\\"iban\\\":\\\"BE68539007547034\\\"}'"},{"shell":"cmd.exe","command":"jithox call verify_iban --input \"{\\\"iban\\\":\\\"BE68539007547034\\\"}\""}],"publishedCommands":["auth","call","connect","disconnect","discover","doctor","init","status","test"],"notReleased":{"version":"0.3.0","commands":["--version","file-to-data","run"],"artifactSha1":"2bd81e7b5192f37647fd0cadb3f74d1a631cde2f"},"mainOnly":{"commands":[]}},"generatedAt":"2026-09-27T03:58:58.804Z","contentDigest":"a1b12ae4f47cab6a9b484fd85ab5a9f30051478510675a4eaaabcc5b92a9599f"}