kya-brasil

KYA backed by a real company: e-CNPJ-signed agent mandates, revocation-checked, signed verdicts

我該用這個嗎

品質與安全性

A
說明品質
93%
結構描述完整度
92%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

發現項目(3)

  • LOWTool 'kya_renew' description lacks action verb在 kya_renew 中
  • LOWTool 'kya_verify' description lacks action verb在 kya_verify 中
  • LOWTool 'kya_about' description lacks action verb在 kya_about 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~4,255Token(工具定義)
~2.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.32%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "kya-brasil": {
      "url": "https://kya-br-agents.marcelfons.workers.dev/mcp"
    }
  }
}

遠端端點

https://kya-br-agents.marcelfons.workers.dev/mcpstreamable-http

它能做什麼

工具清單

工具(15)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
⚪kya_register(agent, cnpj, principal, mandate)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "agent": {
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "evm",
            "web-bot-auth",
            "erc8004"
          ],
          "description": "evm: an Ethereum-style wallet (EIP-191 signatures). web-bot-auth: an Ed25519 key (RFC 9421 / Web Bot Auth). erc8004: an agent registered in an ERC-8004 Identity Registry; its on-chain agentWallet signs."
        },
        "id": {
          "type": "string",
          "minLength": 20,
          "maxLength": 160,
          "description": "0x address for evm; base64url raw Ed25519 public key for web-bot-auth; eip155:<chainId>:<identityRegistry>:<agentId> for erc8004."
        }
      },
      "required": [
        "kind",
        "id"
      ]
    },
    "cnpj": {
      "description": "The company's CNPJ (company agents). Leave out with principal \"person\".",
      "type": "string",
      "minLength": 14,
      "maxLength": 18
    },
    "principal": {
      "description": "\"person\": the agent acts for a natural person who signs with an e-CPF (no CNPJ; no name or CPF is ever published).",
      "type": "string",
      "enum": [
        "company",
        "person"
      ]
    },
    "mandate": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "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_from, valid_until."
    }
  },
  "required": [
    "agent",
    "mandate"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_verify_paid(credential_id)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    }
  },
  "required": [
    "credential_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_check_action(credential_id, action, amount, currency, counterparty, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "action": {
      "description": "Action the agent wants to perform (e.g. pay, order, sign).",
      "type": "string",
      "maxLength": 64
    },
    "amount": {
      "type": "number",
      "minimum": 0
    },
    "currency": {
      "description": "BRL, USDC, ...",
      "type": "string",
      "maxLength": 12
    },
    "counterparty": {
      "description": "CNPJ, domain or wallet address of the other side.",
      "type": "string",
      "maxLength": 128
    },
    "spent_today": {
      "description": "What this agent already spent today, if you track it (used for max_per_day).",
      "type": "number",
      "minimum": 0
    },
    "payment_network": {
      "description": "Payment network or rail of this operation: visa, mastercard, elo, pix, ...",
      "type": "string",
      "maxLength": 32
    },
    "payment_ref_sha256": {
      "description": "SHA-256 hex of the payment token reference or PAR used (never a card number); checked against mandate.payment_instruments.",
      "type": "string",
      "pattern": "^[0-9a-fA-F]{64}$"
    }
  },
  "required": [
    "credential_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪kya_renew(credential_id)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    }
  },
  "required": [
    "credential_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡kya_prove(credential_id, challenge_id, agent_signature, ecnpj_signature)

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).

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "challenge_id": {
      "type": "string",
      "description": "challenge.id from kya_register (or kya_renew)."
    },
    "agent_signature": {
      "type": "string",
      "description": "Signature of challenge.text by the agent key: EIP-191 personal_sign hex (evm) or raw Ed25519 base64url (web-bot-auth)."
    },
    "ecnpj_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 SignedData (detached, base64 DER) of challenge.text, signed with the company's e-CNPJ certificate."
    }
  },
  "required": [
    "credential_id",
    "challenge_id",
    "agent_signature",
    "ecnpj_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_principal_match(credential_id, cpf)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "cpf": {
      "type": "string",
      "minLength": 11,
      "maxLength": 14,
      "description": "The CPF you already have for this person; used for the comparison only, never stored."
    }
  },
  "required": [
    "credential_id",
    "cpf"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_person_agents(signed_text, ecpf_signature)

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).

輸入結構描述

{
  "type": "object",
  "properties": {
    "signed_text": {
      "type": "string",
      "description": "\"KYA Brasil: my agents\\nat: <ISO time>\""
    },
    "ecpf_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 of signed_text with the person's e-CPF, base64 DER."
    }
  },
  "required": [
    "signed_text",
    "ecpf_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_sign_link(credential_id, challenge_id, agent_signature)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "challenge_id": {
      "type": "string",
      "description": "challenge.id from kya_register or kya_renew."
    },
    "agent_signature": {
      "description": "The agent's signature of challenge.text, so the person only signs with the e-CNPJ.",
      "type": "string",
      "maxLength": 600
    }
  },
  "required": [
    "credential_id",
    "challenge_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_verify(credential_id, agent)

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=.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "agent": {
      "description": "Alternative to credential_id: look up active credentials by agent key.",
      "type": "object",
      "properties": {
        "kind": {
          "type": "string",
          "enum": [
            "evm",
            "web-bot-auth",
            "erc8004"
          ],
          "description": "evm: an Ethereum-style wallet (EIP-191 signatures). web-bot-auth: an Ed25519 key (RFC 9421 / Web Bot Auth). erc8004: an agent registered in an ERC-8004 Identity Registry; its on-chain agentWallet signs."
        },
        "id": {
          "type": "string",
          "minLength": 20,
          "maxLength": 160,
          "description": "0x address for evm; base64url raw Ed25519 public key for web-bot-auth; eip155:<chainId>:<identityRegistry>:<agentId> for erc8004."
        }
      },
      "required": [
        "kind",
        "id"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡kya_renew_prove(credential_id, challenge_id, agent_signature, ecnpj_signature)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "challenge_id": {
      "type": "string",
      "description": "challenge.id from kya_register (or kya_renew)."
    },
    "agent_signature": {
      "type": "string",
      "description": "Signature of challenge.text by the agent key: EIP-191 personal_sign hex (evm) or raw Ed25519 base64url (web-bot-auth)."
    },
    "ecnpj_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 SignedData (detached, base64 DER) of challenge.text, signed with the company's e-CNPJ certificate."
    }
  },
  "required": [
    "credential_id",
    "challenge_id",
    "agent_signature",
    "ecnpj_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴kya_revoke(credential_id, signed_text, ecnpj_signature, reason)

Free. The company revokes the credential at once (e-CNPJ-signed request). Revocations are listed at /v1/revocations.

輸入結構描述

{
  "type": "object",
  "properties": {
    "credential_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "credential_id returned by kya_register."
    },
    "signed_text": {
      "type": "string",
      "description": "Exactly \"KYA Brasil: revoke <credential_id>\" followed by a newline and a nonce of your choice."
    },
    "ecnpj_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 SignedData (detached, base64 DER) of signed_text with the company's e-CNPJ."
    },
    "reason": {
      "type": "string",
      "maxLength": 200
    }
  },
  "required": [
    "credential_id",
    "signed_text",
    "ecnpj_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_company_agents(cnpj, signed_text, ecnpj_signature)

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>".

輸入結構描述

{
  "type": "object",
  "properties": {
    "cnpj": {
      "type": "string",
      "maxLength": 20,
      "description": "The company's CNPJ."
    },
    "signed_text": {
      "type": "string",
      "maxLength": 1200,
      "description": "\"KYA Brasil: <agents|webhook> <cnpj>\", for the webhook a \"url: <https url or ->\" line, then \"at: <ISO time>\" (within 10 minutes)."
    },
    "ecnpj_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 SignedData of signed_text with the company's e-CNPJ, detached, base64 DER."
    }
  },
  "required": [
    "cnpj",
    "signed_text",
    "ecnpj_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪kya_company_webhook(cnpj, signed_text, ecnpj_signature)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "cnpj": {
      "type": "string",
      "maxLength": 20,
      "description": "The company's CNPJ."
    },
    "signed_text": {
      "type": "string",
      "maxLength": 1200,
      "description": "\"KYA Brasil: <agents|webhook> <cnpj>\", for the webhook a \"url: <https url or ->\" line, then \"at: <ISO time>\" (within 10 minutes)."
    },
    "ecnpj_signature": {
      "type": "string",
      "description": "CMS/PKCS#7 SignedData of signed_text with the company's e-CNPJ, detached, base64 DER."
    }
  },
  "required": [
    "cnpj",
    "signed_text",
    "ecnpj_signature"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_revocations(since)

Free. Credentials revoked since a date (default: last 30 days), for verifiers that cache credentials.

輸入結構描述

{
  "type": "object",
  "properties": {
    "since": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kya_about

Free. What KYA Brasil is, how the credential flow works, prices, and where the schemas and signing keys are.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本15 個工具