Tracea — legal identity (Know Your Agent) for AI agents, on-chain. ERC-8004 compatible.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Dry-run a payment BEFORE executing it: checks on-chain whether the agent's smart account would allow it (permission granted, within financial cap, destination approved if a whitelist exists). Returns { allowed, reason }.
Amount in ETH, e.g. '0.001'
Destination address to pay
Ethereum address of the agent (its smart account address)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Dry-run a payment BEFORE executing it: checks on-chain whether the agent's smart account would allow it (permission granted, within financial cap, destination approved if a whitelist exists). Returns { allowed, reason }.
| Argument | Type | Description |
|---|---|---|
| amount_eth* | string | Amount in ETH, e.g. '0.001' |
| destination* | string | Destination address to pay |
| agent_address* | string | Ethereum address of the agent (its smart account address) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address",
"destination",
"amount_eth"
],
"properties": {
"amount_eth": {
"type": "string",
"description": "Amount in ETH, e.g. '0.001'"
},
"destination": {
"type": "string",
"description": "Destination address to pay"
},
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent (its smart account address)"
}
}
}Read a single logged agent action from the Tracea ActionLog contract by its numeric ID. Returns agent, action type, payload and timestamp.
| Argument | Type | Description |
|---|---|---|
| action_id* | integer | Numeric action ID |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"action_id"
],
"properties": {
"action_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Numeric action ID"
}
}
}List all on-chain action IDs logged for a given agent on Tracea.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent"
}
}
}Get the raw Tracea registry record for an agent: owner, permission scope, financial cap, active status, timestamps.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent"
}
}
}Get this agent's full Tracea identity (activity apiKey +, for v2 agents, its EOA private key and ERC-4337 smart account address) using a one-time activation code from the owner. The private key is returned ONLY ONCE — save it securely.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of this agent |
| activation_code | string | One-time activation code (or use ?code= / x-activation-code) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of this agent"
},
"activation_code": {
"type": "string",
"description": "One-time activation code (or use ?code= / x-activation-code)"
}
}
}List all agent addresses registered on Tracea by a given owner address.
| Argument | Type | Description |
|---|---|---|
| owner_address* | string | Ethereum address of the owner |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"owner_address"
],
"properties": {
"owner_address": {
"type": "string",
"description": "Ethereum address of the owner"
}
}
}Get the list of owner-approved payment destination addresses for an agent (anti-injection guardrail). Non-empty list = the agent's smart account can ONLY pay these addresses. Empty = all allowed.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent"
}
}
}Fetch the ERC-8004 compatible registration file for a Tracea-registered agent, including the KYA legal principal block.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent"
}
}
}Get the public URL of an agent's Tracea KYA verification card — the shareable page that presents the mandant entity, the permission scope, the financial cap and a proof hash, with a bilingual FR/EN transparency statement. Use it to hand a verifier a link. Returns the ready-to-share link plus the machine-readable JSON endpoints. Defaults to the 'standard' disclosure level, which is what the API exposes publicly.
| Argument | Type | Description |
|---|---|---|
| lang | string | Card language; the card also auto-detects the visitor's browser language |
| niveau | string | Disclosure level: minimum | standard (default) | complet |
| agent_address* | string | Ethereum address of the agent (0x...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"lang": {
"enum": [
"fr",
"en"
],
"type": "string",
"description": "Card language; the card also auto-detects the visitor's browser language"
},
"niveau": {
"enum": [
"minimum",
"standard",
"complet"
],
"type": "string",
"description": "Disclosure level: minimum | standard (default) | complet"
},
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent (0x...)"
}
}
}Check whether an agent's mandate has been revoked on Tracea (immediate, scheduled or partial revocation).
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent"
}
}
}Log an agent action on-chain via Tracea (immutable audit trail, court-ready). Requires TRACEA_API_KEY env var. The action is signed by the account's wallet.
| Argument | Type | Description |
|---|---|---|
| data | string | Optional human-readable payload (JSON string recommended) |
| action_type* | string | Short action type, e.g. 'email_sent', 'payment_initiated' |
| agent_address* | string | Ethereum address of the acting agent |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address",
"action_type"
],
"properties": {
"data": {
"type": "string",
"maxLength": 2000,
"description": "Optional human-readable payload (JSON string recommended)"
},
"action_type": {
"type": "string",
"maxLength": 64,
"description": "Short action type, e.g. 'email_sent', 'payment_initiated'"
},
"agent_address": {
"type": "string",
"description": "Ethereum address of the acting agent"
}
}
}Verify a x402 payment ON-CHAIN (the USDC transfer to your address, exact amount) and mark the session fulfilled. The blockchain is the ONLY source of truth — the payment_sessions table is never trusted alone. Returns { status: 'fulfilled', resource } if verified, or an error if not yet paid/expired.
| Argument | Type | Description |
|---|---|---|
| tx_hash* | string | The on-chain transaction hash of the USDC transfer / payX402 call |
| payment_id* | string | The paymentId returned by payment_required (pay_...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"payment_id",
"tx_hash"
],
"properties": {
"tx_hash": {
"type": "string",
"description": "The on-chain transaction hash of the USDC transfer / payX402 call"
},
"payment_id": {
"type": "string",
"description": "The paymentId returned by payment_required (pay_...)"
}
}
}Create a x402 payment request (HTTP 402) for a resource you sell to another agent. Returns a paymentId, the USDC amount in units, the destination address and the TraceaPayments contract to call. The paying agent must then call TraceaPayments.payX402(destination, amount, paymentId) on-chain — the contract enforces financial cap + whitelist on-chain. Deliver the resource only after payment_incoming confirms fulfilment.
| Argument | Type | Description |
|---|---|---|
| agent | string | Address of the paying agent, if known |
| resource | string | Identifier/URL of the resource to unlock after payment |
| amount_usdc* | string | Amount in USDC, e.g. '0.50' or '2' |
| destination* | string | Address that receives the USDC payment (yours) |
| ttl_seconds | number | Validity of the payment session (30-3600s, default 300) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"destination",
"amount_usdc"
],
"properties": {
"agent": {
"type": "string",
"description": "Address of the paying agent, if known"
},
"resource": {
"type": "string",
"description": "Identifier/URL of the resource to unlock after payment"
},
"amount_usdc": {
"type": "string",
"description": "Amount in USDC, e.g. '0.50' or '2'"
},
"destination": {
"type": "string",
"description": "Address that receives the USDC payment (yours)"
},
"ttl_seconds": {
"type": "number",
"description": "Validity of the payment session (30-3600s, default 300)"
}
}
}Get the status of a x402 payment session (pending | paid | fulfilled | expired), with destination, amount and tx hash. Useful to poll while waiting for the paying agent's on-chain transaction.
| Argument | Type | Description |
|---|---|---|
| payment_id* | string | The paymentId returned by payment_required (pay_...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"payment_id"
],
"properties": {
"payment_id": {
"type": "string",
"description": "The paymentId returned by payment_required (pay_...)"
}
}
}Report an action the agent just performed to its owner's Tracea activity feed (off-chain, free, instant). Call this AFTER every significant action (email sent, message posted, file modified, payment, purchase, booking...). Auth via the Tracea MCP URL (?key=...) from the agent's identity page, OR self-activate with a one-time activation code (?code=... or x-activation-code header) — the tool then receives its apiKey automatically.
| Argument | Type | Description |
|---|---|---|
| details | string | Optional JSON string with extra context |
| summary* | string | Short human-readable summary of what was done |
| category* | string | Action category |
| agent_address* | string | Ethereum address of this agent |
| in_permission | boolean | false if this action is OUTSIDE the granted permissions (flagged red) |
| permission_label | string | Which owner-granted permission this action falls under |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address",
"category",
"summary"
],
"properties": {
"details": {
"type": "string",
"maxLength": 2000,
"description": "Optional JSON string with extra context"
},
"summary": {
"type": "string",
"maxLength": 500,
"description": "Short human-readable summary of what was done"
},
"category": {
"enum": [
"email",
"payment",
"document",
"message",
"purchase",
"social",
"data_access",
"rdv",
"code",
"other"
],
"type": "string",
"description": "Action category"
},
"agent_address": {
"type": "string",
"description": "Ethereum address of this agent"
},
"in_permission": {
"type": "boolean",
"description": "false if this action is OUTSIDE the granted permissions (flagged red)"
},
"permission_label": {
"type": "string",
"description": "Which owner-granted permission this action falls under"
}
}
}Seal a validated file as an immutable on-chain proof (Tracea Online, Base). Call this ONLY after tracea_check_demarche returned ok:true — it re-checks everything before anchoring. Requires the caller to be an authorized harness. Returns the proof fingerprint and the record hash.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Procedure id (e.g. 15776) |
| agent* | string | Ethereum address (0x...) of the agent smart account that judged the file compliant |
| donnees* | object | Same data object that passed tracea_check_demarche |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"donnees",
"agent"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Procedure id (e.g. 15776)",
"exclusiveMinimum": 0
},
"agent": {
"type": "string",
"description": "Ethereum address (0x...) of the agent smart account that judged the file compliant"
},
"donnees": {
"type": "object",
"description": "Same data object that passed tracea_check_demarche",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}THE anti-rejection check. Submit the data you collected; it validates every field against the official procedure schema AND cross-checks critical values against official French registries (e.g. SIRET against INSEE Sirene). Returns { ok: true, recordHash } or { ok: false, errors: [{ field, message }] }. ALWAYS call this BEFORE telling the user the file is ready, and fix the exact fields reported.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Procedure id (e.g. 15776) |
| donnees* | object | Collected data as a flat object, field names exactly as in tracea_demarche_schema |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"donnees"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Procedure id (e.g. 15776)",
"exclusiveMinimum": 0
},
"donnees": {
"type": "object",
"description": "Collected data as a flat object, field names exactly as in tracea_demarche_schema",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Prepare le document officiel d'une demarche (CERFA ou demarche libre) et le rend signable. Appelle le generateur du backend Tracea, enregistre le dossier pour l'agent du visiteur et renvoie la reference + le chemin du PDF. A appeler APRES tracea_check_demarche (ok:true) et AVANT tracea_signature. Si des champs manquent, renvoie ok:false + champsManquants : ne fabrique jamais un document partiel.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Procedure id (ex: 26002) |
| agent* | string | Adresse Ethereum (0x...) de l'agent du visiteur, celle de l'identite de la conversation. Ne jamais l'inventer. |
| donnees* | object | Donnees validees, memes champs que tracea_demarche_schema |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"donnees",
"agent"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Procedure id (ex: 26002)",
"exclusiveMinimum": 0
},
"agent": {
"type": "string",
"description": "Adresse Ethereum (0x...) de l'agent du visiteur, celle de l'identite de la conversation. Ne jamais l'inventer."
},
"donnees": {
"type": "object",
"description": "Donnees validees, memes champs que tracea_demarche_schema",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}Verify an existing proof: was this file really anchored, when, by which operator, and under which rule version? Use the recordHash returned by tracea_check_demarche / tracea_anchor_demarche. Read-only and free.
| Argument | Type | Description |
|---|---|---|
| hash* | string | recordHash (0x... 32 bytes) returned by tracea_check_demarche or tracea_anchor_demarche |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"hash"
],
"properties": {
"hash": {
"type": "string",
"description": "recordHash (0x... 32 bytes) returned by tracea_check_demarche or tracea_anchor_demarche"
}
}
}Return exactly which fields a given administrative procedure requires (name, type, required, format/pattern, bounds, example). Call this after tracea_list_demarches so you ask the user ONLY for the real fields, in the right format. Prevents hallucinated fields.
| Argument | Type | Description |
|---|---|---|
| id* | integer | Procedure id returned by tracea_list_demarches (e.g. 15776) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Procedure id returned by tracea_list_demarches (e.g. 15776)",
"exclusiveMinimum": 0
}
}
}List the administrative procedures Tracea supports. ALWAYS call this first: it returns the exact procedure IDs so the AI never has to guess which form (CERFA) applies. `schemaPret: true` means guided mode (anti-rejection check available) is ready for that procedure.
No arguments.
{
"type": "object",
"properties": {}
}DEPOSE REELLEMENT le document prepare dans Tracea Sign : cree les signataires, place la zone de signature, produit un lien de signature par personne et envoie les invitations. Exige pdfPath et signataires. Sans eux, aucun lien n'est renvoye.
| Argument | Type | Description |
|---|---|---|
| id | integer | Procedure id (informatif) |
| box | string | Zone de signature 'x,y,w,h' (defaut: detection sur le PDF) |
| titre | string | Titre du document vu par le signataire |
| niveau | string | Environnement — demo par defaut |
| envoyer | boolean | Envoyer les invitations (defaut: true) |
| pdfPath | string | Chemin du PDF prepare, ex: /root/workspaces/<id>/attestation.pdf |
| signataires | array | Adresses e-mail des signataires |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Procedure id (informatif)",
"exclusiveMinimum": 0
},
"box": {
"type": "string",
"description": "Zone de signature 'x,y,w,h' (defaut: detection sur le PDF)"
},
"titre": {
"type": "string",
"description": "Titre du document vu par le signataire"
},
"niveau": {
"enum": [
"demo",
"prod"
],
"type": "string",
"description": "Environnement — demo par defaut"
},
"envoyer": {
"type": "boolean",
"description": "Envoyer les invitations (defaut: true)"
},
"pdfPath": {
"type": "string",
"description": "Chemin du PDF prepare, ex: /root/workspaces/<id>/attestation.pdf"
},
"signataires": {
"type": "array",
"items": {
"type": "string"
},
"description": "Adresses e-mail des signataires"
}
}
}Verify an AI agent's on-chain legal identity on Tracea (Base Sepolia). Returns registration status, financial cap, permission scope, revocation status, and KYA legal identity (mandant) when available. Use this BEFORE trusting or delegating work to an agent.
| Argument | Type | Description |
|---|---|---|
| agent_address* | string | Ethereum address of the agent (0x...) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"agent_address"
],
"properties": {
"agent_address": {
"type": "string",
"description": "Ethereum address of the agent (0x...)"
}
}
}