io.github.celfons/kya-brasil
REMOTE · KYA-BR-AGENTS.MARCELFONS.WORKERS.DEV
KYA backed by a real company: e-CNPJ-signed agent mandates, revocation-checked, signed verdicts
Available components
Last scanned (10 hours ago)
Scores higher than 45% of remote servers
Reachable. Last reached 18 Oct 2026.
Category Security
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (kya_revoke). See how to fix → View diagnostics → Fail
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 406, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability68
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 1873 tokens (~124/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability check failed: schema churn in the 5 days we've observed: 4 tool removals, 0 breaking changes, 0 auth/transport breaks, 5 additions. See how to fix → Fail
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 90% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 15 Oct 26 −1
- Tool “kya_check_action” rewrote its description, which is the text the model reads security
- Schema quality: 1378 → 1873 ▼ functional
- Server version: 0.6.0 → 0.12.1 functional
- New tool “kya_person_agents” functional
- New tool “kya_principal_match” functional
- New tool “kya_sign_link” functional
- “kya_check_action” added an optional parameter “payment_network” cosmetic
- “kya_check_action” added an optional parameter “payment_ref_sha256” cosmetic
- “kya_register” added an optional parameter “principal” cosmetic
- “kya_register” reworded the description of “cnpj” cosmetic
- “kya_register” made “cnpj” optional cosmetic
- 14 Oct 26 +2
- Stability: unverified → fail ▼ security
- Tool “kya_act” was removed ▼ security
- Tool “kya_act_text” was removed ▼ security
- Tool “kya_acts_export” was removed ▼ security
- Tool “kya_register_act” was removed ▼ security
- Tool “kya_verify” rewrote its description, which is the text the model reads security
- Tool coverage: 65% → 88% ▲ functional
- Schema quality: 1532 → 1378 ▲ functional
- Server version: 0.4.1 → 0.6.0 functional
- New tool “kya_company_agents” functional
- New tool “kya_company_webhook” functional
- 13 Oct 26 57
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 18 Oct 2026 · Probed https://kya-br-agents.marcelfons.workers.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=marcelfons.workers.dev | CN=YE2,O=Let's Encrypt,C=US | 14 Sept 2026 | 13 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 6a804eccbbd98862f505bf7bf3a564903e9 |
| SANs: *.marcelfons.workers.dev, marcelfons.workers.dev | ||||||
| CN=YE2,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 4df3b15dd6c0784c507cd37b58e6f115 |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of kya-br-agents.marcelfons.workers.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| workers.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://kya-br-agents.marcelfons.workers.dev/mcp | Verified | 200 | |
| http (plaintext) | http://kya-br-agents.marcelfons.workers.dev/mcp | Inconclusive | 406 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
kya_about ~33
Free. What KYA Brasil is, how the credential flow works, prices, and where the schemas and signing keys are.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
kya_check_action ~212
Signed verdict: is this action (action, amount, currency, counterparty, payment instrument) inside the agent's mandate and is the credential active? Evaluates the reserved mandate fields; lists the fields it did not evaluate.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Action the agent wants to perform (e.g. pay, order, sign). |
| amount | number | – | – |
| counterparty | string | – | CNPJ, domain or wallet address of the other side. |
| credential_id | string | yes | credential_id returned by kya_register. |
| currency | string | – | BRL, USDC, ... |
| payment_network | string | – | Payment network or rail of this operation: visa, mastercard, elo, pix, ... |
| payment_ref_sha256 | string | – | SHA-256 hex of the payment token reference or PAR used (never a card number); checked against mandate.payment_instruments. |
| spent_today | number | – | What this agent already spent today, if you track it (used for max_per_day). |
No output schema declared.
No examples provided.
kya_company_agents ~160
Free, company only. Every credential ever registered for your CNPJ, any status, whoever held the certificate (an accountant, another employee). Request signed with your e-CNPJ over "KYA Brasil: agents <cnpj>" + "at: <ISO time>".
| Name | Type | Req | Description |
|---|---|---|---|
| cnpj | string | yes | The company's CNPJ. |
| ecnpj_signature | string | yes | CMS/PKCS#7 SignedData of signed_text with the company's e-CNPJ, detached, base64 DER. |
| signed_text | string | yes | "KYA Brasil: <agents|webhook> <cnpj>", for the webhook a "url: <https url or ->" line, then "at: <ISO time>" (within 10 minutes). |
No output schema declared.
No examples provided.
kya_company_webhook ~148
Free, company only. Sets the https URL that receives signed events about your agents: credential issued, renewed, suspended, reinstated, revoked. Request signed with your e-CNPJ; url "-" removes it.
| Name | Type | Req | Description |
|---|---|---|---|
| cnpj | string | yes | The company's CNPJ. |
| ecnpj_signature | string | yes | CMS/PKCS#7 SignedData of signed_text with the company's e-CNPJ, detached, base64 DER. |
| signed_text | string | yes | "KYA Brasil: <agents|webhook> <cnpj>", for the webhook a "url: <https url or ->" line, then "at: <ISO time>" (within 10 minutes). |
No output schema declared.
No examples provided.
kya_person_agents ~106
Free, person only: every live credential behind your e-CPF and every CPF check made against each one. Sign "KYA Brasil: my agents\nat: <ISO time>" with the e-CPF (valid 10 minutes).
| Name | Type | Req | Description |
|---|---|---|---|
| ecpf_signature | string | yes | CMS/PKCS#7 of signed_text with the person's e-CPF, base64 DER. |
| signed_text | string | yes | "KYA Brasil: my agents\nat: <ISO time>" |
No output schema declared.
No examples provided.
kya_principal_match ~130
Signed answer ($0.01) for a person's agent (principal.kind person): does the CPF you already have match the e-CPF holder behind it? On a match, a subject_ref of your own for that person (stable for you, different for every verifier). The CPF is never stored, published or revealed; 3 non-matching answers per credential stop your checks. The person sees every check.
| Name | Type | Req | Description |
|---|---|---|---|
| cpf | string | yes | The CPF you already have for this person; used for the comparison only, never stored. |
| credential_id | string | yes | credential_id returned by kya_register. |
No output schema declared.
No examples provided.
kya_prove ~182
Free. Send both signatures of the challenge. The e-CNPJ chain is validated against ICP-Brasil roots, the CNPJ must match, the certificate must not be revoked (CRL) and the company must be ATIVA; then the credential is issued (90 days, Ed25519-signed).
| Name | Type | Req | Description |
|---|---|---|---|
| agent_signature | string | yes | Signature of challenge.text by the agent key: EIP-191 personal_sign hex (evm) or raw Ed25519 base64url (web-bot-auth). |
| challenge_id | string | yes | challenge.id from kya_register (or kya_renew). |
| credential_id | string | yes | credential_id returned by kya_register. |
| ecnpj_signature | string | yes | CMS/PKCS#7 SignedData (detached, base64 DER) of challenge.text, signed with the company's e-CNPJ certificate. |
No output schema declared.
No examples provided.
kya_register ~213
Register an AI agent for a Brazilian company: agent key (EVM address or Web Bot Auth Ed25519 key), CNPJ and a mandate (JSON, validated against /.well-known/kya-mandate.schema.json). Returns a one-time challenge the agent signs with its key and the company signs with its e-CNPJ (CMS/PKCS#7). Price covers the checks at issuance.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | object | yes | – |
| cnpj | string | – | The company's CNPJ (company agents). Leave out with principal "person". |
| mandate | object | yes | Mandate JSON validated by https://kya-br-agents.marcelfons.workers.dev/.well-known/kya-mandate.schema.json. Reserved fields: actions, max_per_operation, max_per_day, currencies, counterparties, valid… |
| principal | string | – | "person": the agent acts for a natural person who signs with an e-CPF (no CNPJ; no name or CPF is ever published). |
No output schema declared.
No examples provided.
kya_renew ~62
Re-issue the credential for 90 more days. The company signs the renewal challenge with an e-CNPJ in force (not revoked); the company must still be ATIVA at the Receita.
| Name | Type | Req | Description |
|---|---|---|---|
| credential_id | string | yes | credential_id returned by kya_register. |
No output schema declared.
No examples provided.
kya_renew_prove ~164
Free. Second step of kya_renew: send both signatures of the renewal challenge; the credential is re-issued for 90 days if the e-CNPJ is not revoked and the company is still ATIVA.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_signature | string | yes | Signature of challenge.text by the agent key: EIP-191 personal_sign hex (evm) or raw Ed25519 base64url (web-bot-auth). |
| challenge_id | string | yes | challenge.id from kya_register (or kya_renew). |
| credential_id | string | yes | credential_id returned by kya_register. |
| ecnpj_signature | string | yes | CMS/PKCS#7 SignedData (detached, base64 DER) of challenge.text, signed with the company's e-CNPJ certificate. |
No output schema declared.
No examples provided.
kya_revocations ~38
Free. Credentials revoked since a date (default: last 30 days), for verifiers that cache credentials.
| Name | Type | Req | Description |
|---|---|---|---|
| since | string | – | – |
No output schema declared.
No examples provided.
kya_revoke ~124
Free. The company revokes the credential at once (e-CNPJ-signed request). Revocations are listed at /v1/revocations.
| Name | Type | Req | Description |
|---|---|---|---|
| credential_id | string | yes | credential_id returned by kya_register. |
| ecnpj_signature | string | yes | CMS/PKCS#7 SignedData (detached, base64 DER) of signed_text with the company's e-CNPJ. |
| reason | string | – | – |
| signed_text | string | yes | Exactly "KYA Brasil: revoke <credential_id>" followed by a newline and a nonce of your choice. |
No output schema declared.
No examples provided.
kya_sign_link ~157
Free. Link for whoever holds the company's e-CNPJ (owner, accountant): give challenge_id and the agent's signature, get the /sign URL. They see agent, company and mandate and sign in the browser (A1 .pfx) or with any ICP-Brasil signer (A3 token, cloud), or run kya-sign (npm @kya-brasil/agent-tools) with the link. The issuer never sees the certificate.
| Name | Type | Req | Description |
|---|---|---|---|
| agent_signature | string | – | The agent's signature of challenge.text, so the person only signs with the e-CNPJ. |
| challenge_id | string | yes | challenge.id from kya_register or kya_renew. |
| credential_id | string | yes | credential_id returned by kya_register. |
No output schema declared.
No examples provided.
kya_verify ~89
Free (50/day per IP). The agent's current credential: principal company, mandate, status (active, suspended, revoked, expired) and signature. Also by key: /v1/agents/by-key?kind=&id=.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | object | – | Alternative to credential_id: look up active credentials by agent key. |
| credential_id | string | – | credential_id returned by kya_register. |
No output schema declared.
No examples provided.
kya_verify_paid ~55
Same as the free verification, without daily limit, plus a signed receipt of the verification itself (what was checked, when). Pay per call with x402.
| Name | Type | Req | Description |
|---|---|---|---|
| credential_id | string | yes | credential_id returned by kya_register. |
No output schema declared.
No examples provided.
How do I install the io.github.celfons/kya-brasil MCP server?
io.github.celfons/kya-brasil is a hosted endpoint at https://kya-br-agents.marcelfons.workers.dev/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · kya-br-agents.marcelfons.workers.dev
claude mcp add --transport http celfons-kya-brasil 'https://kya-br-agents.marcelfons.workers.dev/mcp'
What is the io.github.celfons/kya-brasil MCP server?
io.github.celfons/kya-brasil is an MCP server listed in the public MCP registry as io.github.celfons/kya-brasil. KYA backed by a real company: e-CNPJ-signed agent mandates, revocation-checked, signed verdicts. This page covers its hosted endpoint (https://kya-br-agents.marcelfons.workers.dev/mcp).
Is the io.github.celfons/kya-brasil MCP server safe to use?
io.github.celfons/kya-brasil scores 58 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.celfons/kya-brasil MCP server expose?
io.github.celfons/kya-brasil exposes 15 tools: kya_register, kya_verify_paid, kya_check_action, kya_renew, kya_prove, and 10 more. Their descriptions and schemas cost roughly 1,873 tokens of context every time the server is loaded.
Does the io.github.celfons/kya-brasil MCP server require authentication?
No. We connected to io.github.celfons/kya-brasil without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the io.github.celfons/kya-brasil MCP server still maintained?
io.github.celfons/kya-brasil is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.