io. github. celfons/ kya-brasil
by celfons · remote · no sign-in to list tools · v0.4.1 · published by GitHub user celfons
KYA backed by a real company: e-CNPJ-signed agent mandates, revocation-checked, signed verdicts
15 tools: 1 can delete or cancel things, 1 do something that can't be undone and 13 change things.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things13Claude Code: ask: see these tools
- Only reads0Claude Code: allow
15 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http kya-brasil https://kya-br-agents.marcelfons.workers.dev/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnkya_check_action
The server marks "kya_check_action" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The input carries an amount (input.amount) and a currency, so it moves money.
- Warnkya_sign_link
The server marks "kya_sign_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kya_sign_link" says "link": a word for a change.
- Infokya_check_action
The description mentions "credential".
What this check looks forMatched text
description: "...) inside the agent's mandate and is the credential active? Evaluates the reserved mandate..."
- Infokya_renew
The description mentions "credential".
What this check looks forMatched text
description: "Re-issue the credential for 90 more days. The company signs the..."
- Infokya_prove
The description mentions "credential".
What this check looks forMatched text
description: "...and the company must be ATIVA; then the credential is issued (90 days, Ed25519-signed)."
The description mentions "credential".
What this check looks forMatched text
description: "...or revealed; 3 non-matching answers per credential stop your checks. The person sees every..."
Show 9 more findingsShow fewer
The description mentions "credential".
What this check looks forMatched text
description: "Free, person only: every live credential behind your e-CPF and every CPF check m..."
- Infokya_verify
The description mentions "credential".
What this check looks forMatched text
description: "...ee (50/day per IP). The agent's current credential: principal company, mandate, status (ac..."
- Infokya_verify
The input schema at properties.agent.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.agent.description: "...native to credential_id: look up active credentials by agent key."
- Infokya_renew_prove
The description mentions "credential".
What this check looks forMatched text
description: "...ignatures of the renewal challenge; the credential is re-issued for 90 days if the e-CNPJ..."
- Infokya_revoke
The description mentions "credential".
What this check looks forMatched text
description: "Free. The company revokes the credential at once (e-CNPJ-signed request). Revoca..."
The description mentions "credential".
What this check looks forMatched text
description: "Free, company only. Every credential ever registered for your CNPJ, any stat..."
The description mentions "credential".
What this check looks forMatched text
description: "...ceives signed events about your agents: credential issued, renewed, suspended, reinstated,..."
- Infokya_revocations
The description mentions "Credentials".
What this check looks forMatched text
description: "Free. Credentials revoked since a date (default: last 30..."
- Infokya_about
The description mentions "credential".
What this check looks forMatched text
description: "Free. What KYA Brasil is, how the credential flow works, prices, and where the schem..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
15 tools
Deletes or cancels 1Claude Code: deny
kya_revokeFree.1 finding
Why it is in this group
- The name "kya_revoke" says "revoke": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Free. The company revokes the credential at once (e-CNPJ-signed request). Revoca..."
Description, as the server wrote it Free. The company revokes the credential at once (e-CNPJ-signed request). Revocations are listed at /v1/revocations.
Annotations the server declares
- destructiveHint: true
- openWorldHint: true
Can't be undone 1Claude Code: ask
kya_check_actionSigned verdict: is this action (action, amount, currency, counterparty, payment instrument) inside the agent's mandate and is the credential active?2 findings
Why it is in this group
- The input carries an amount (input.amount) and a currency, so it moves money.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...) inside the agent's mandate and is the credential active? Evaluates the reserved mandate..."
- Warn
The server marks "kya_check_action" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The input carries an amount (input.amount) and a currency, so it moves money.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
Changes things 13Claude Code: ask
kya_aboutFree.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Free. What KYA Brasil is, how the credential flow works, prices, and where the schem..."
Description, as the server wrote it Free. What KYA Brasil is, how the credential flow works, prices, and where the schemas and signing keys are.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
kya_company_agentsFree, company only.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Free, company only. Every credential ever registered for your CNPJ, any stat..."
Description, as the server wrote it 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>".
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
kya_company_webhookFree, company only.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...ceives signed events about your agents: credential issued, renewed, suspended, reinstated,..."
Description, as the server wrote it 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.
Annotations the server declares
- idempotentHint: true
- openWorldHint: true
kya_person_agentsFree, person only: every live credential behind your e-CPF and every CPF check made against each one.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Free, person only: every live credential behind your e-CPF and every CPF check m..."
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
kya_principal_matchSigned answer ($0.01) for a person's agent (principal.kind person): does the CPF you already have match the e-CPF holder behind it?1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...or revealed; 3 non-matching answers per credential stop your checks. The person sees every..."
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
kya_proveFree.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...and the company must be ATIVA; then the credential is issued (90 days, Ed25519-signed)."
Description, as the server wrote it 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).
Annotations the server declares
- openWorldHint: true
kya_registerRegister 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)…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- openWorldHint: true
kya_renewRe-issue the credential for 90 more days.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "Re-issue the credential for 90 more days. The company signs the..."
Description, as the server wrote it 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.
Annotations the server declares
- openWorldHint: true
kya_renew_proveFree.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...ignatures of the renewal challenge; the credential is re-issued for 90 days if the e-CNPJ..."
Description, as the server wrote it 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.
Annotations the server declares
- openWorldHint: true
kya_revocationsFree.1 finding
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "Credentials".
What this check looks forMatched text
description: "Free. Credentials revoked since a date (default: last 30..."
Description, as the server wrote it Free. Credentials revoked since a date (default: last 30 days), for verifiers that cache credentials.
Annotations the server declares
- readOnlyHint: true
- idempotentHint: true
kya_sign_linkFree.1 finding
Why it is in this group
- The name "kya_sign_link" says "link": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "kya_sign_link" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"openWorldHint":true}; The name "kya_sign_link" says "link": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
kya_verifyFree (50/day per IP).2 findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Info
The description mentions "credential".
What this check looks forMatched text
description: "...ee (50/day per IP). The agent's current credential: principal company, mandate, status (ac..."
- Info
The input schema at properties.agent.description mentions "credentials".
What this check looks forMatched text
inputSchema.properties.agent.description: "...native to credential_id: look up active credentials by agent key."
Description, as the server wrote it 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=.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
kya_verify_paidSame as the free verification, without daily limit, plus a signed receipt of the verification itself (what was checked, when).No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.4.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http kya-brasil https://kya-br-agents.marcelfons.workers.dev/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [],
"ask": [
"mcp__kya-brasil__kya_register",
"mcp__kya-brasil__kya_verify_paid",
"mcp__kya-brasil__kya_check_action",
"mcp__kya-brasil__kya_renew",
"mcp__kya-brasil__kya_prove",
"mcp__kya-brasil__kya_principal_match",
"mcp__kya-brasil__kya_person_agents",
"mcp__kya-brasil__kya_sign_link",
"mcp__kya-brasil__kya_verify",
"mcp__kya-brasil__kya_renew_prove",
"mcp__kya-brasil__kya_company_agents",
"mcp__kya-brasil__kya_company_webhook",
"mcp__kya-brasil__kya_revocations",
"mcp__kya-brasil__kya_about"
],
"deny": [
"mcp__kya-brasil__kya_revoke"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as kya-brasil. Review it before you use it.
