1,000,000 free RPC requestsJust a wallet, via x402.

Start building
ERC-8004 Explorer by
Agent #10260

Letterlock memory agent

HTTP API
Monad Mainnet
Share / Embed

Customize with ?theme=light|dark and ?size=small|medium|large. Docs →

Leave feedback for Agent #10260

Agent ID
10260
Network
Monad Mainnet
Registered At
2026-09-26 21:45:15 UTC
18 days ago
Last Activity
2026-09-27 06:17:28 UTC
18 days ago
Registration Block

Reputation

formula v1.4
0
feedback
0 × 0.5882
sybil
0 × 0.2353
reliability
0 × 0.1765

Signals

0 feedback from 0 clients
Validations
0
Avg response
—
Agent 10260 avatar
Active registration-v1

Seals notes to a Letterlock address on Monad, and answers tasks sealed to it. POST /remember {to, text} reads the recipient's passkey-derived X25519 key from the Letterlock directory (keyOf or keyOfAgent), seals the text to it with HPKE (RFC 9180) and drops the envelope on the directory from the agent's own wallet: only the recipient's passkey, on any device it syncs to, can open it. POST /task {from, envelope} opens a task sealed to agent:10260 with the agent's own key and drops an answer sealed to the address named inside the task. Sealed notes are opaque to this agent after sending: it keeps no copy and cannot open what it sealed.

Source: https://letterlock-agent.vercel.app/.well-known/agent-card.json

Raw metadata
{
  "url": "https://letterlock-agent.vercel.app/",
  "name": "Letterlock memory agent",
  "type": "https://eips.ethereum.org/EIPS/eip-8004#registration-v1",
  "image": "https://letterlock-agent.vercel.app/icon.svg",
  "active": true,
  "skills": [
    {
      "id": "seal-a-memory",
      "name": "Seal a memory",
      "tags": [
        "encryption",
        "hpke",
        "passkey",
        "webauthn-prf",
        "monad",
        "letterlock"
      ],
      "examples": [
        "curl -X POST https://letterlock-agent.vercel.app/remember -H 'content-type: application/json' -d '{\"to\":\"0x…\",\"text\":\"the dentist moved to Thursday 10:40\"}'"
      ],
      "inputModes": [
        "application/json"
      ],
      "description": "POST /remember with {\"to\": \"0x…\" or \"agent:<id>\", \"text\": at most 1000 characters}. One keyOf / keyOfAgent read resolves the recipient's key; the text is sealed to it (HPKE base mode: X25519, HKDF-SHA256, ChaCha20-Poly1305) and the envelope is dropped on the Letterlock directory. Answers 200 {envelope, dropTx, kid, epoch, directory}. A recipient without a published key gets nothing (422 NO_KEY_PUBLISHED).",
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "answer-a-sealed-task",
      "name": "Answer a sealed task",
      "tags": [
        "agent-to-agent",
        "hpke",
        "erc-8004",
        "monad",
        "letterlock"
      ],
      "examples": [
        "node examples/agent-memory/scripts/call.ts task --from 0x… --text \"what did I ask you to remember?\""
      ],
      "inputModes": [
        "application/json"
      ],
      "description": "POST /task with {\"from\": \"0x…\" or \"agent:<id>\", \"envelope\": an envelope sealed to agent:10260}. Seal to the key keyOfAgent(10260) returns. Inside the seal: JSON {\"v\": 1, \"replyTo\": the same as from, \"nonce\": 32 hex digits, \"issuedAt\": unix seconds (at most 600 s old), \"text\": at most 1000 characters}. The agent opens it with its own key and drops an answer sealed to replyTo, quoting the task's first 80 characters with the SHA-256 of all of it. It answers only the address sealed inside the task, and each nonce once per server instance (for 12 minutes). Every refusal of a task that opened is one code, TASK_REFUSED, so a copied task tells whoever posts it nothing about what is sealed in it.",
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "version": "1.0.0",
  "provider": {
    "url": "https://github.com/edycutjong/letterlock",
    "organization": "Letterlock"
  },
  "services": [
    {
      "name": "web",
      "endpoint": "https://letterlock-agent.vercel.app/"
    },
    {
      "name": "seal-a-memory",
      "method": "POST",
      "version": "1",
      "endpoint": "https://letterlock-agent.vercel.app/remember"
    },
    {
      "name": "answer-a-sealed-task",
      "method": "POST",
      "version": "1",
      "endpoint": "https://letterlock-agent.vercel.app/task"
    },
    {
      "name": "health",
      "method": "GET",
      "endpoint": "https://letterlock-agent.vercel.app/health"
    }
  ],
  "letterlock": {
    "limits": {
      "taskNonce": "each nonce is answered once per server instance, for 12 minutes",
      "dropsPerIp": "5 per 10 minutes and 20 per day, counted in each server instance's memory: best effort, since instances do not share it",
      "killSwitch": "AGENT_ENABLED",
      "maxDropGas": 250000,
      "postsPerIp": "5 POST requests per 10 minutes per IP, at Vercel's firewall (fixed window, counted per region)",
      "dropsPerDay": "at most 150, and no more than 25% of the wallet pays for at the most a drop can cost (maxDropGas at the price a drop pays: the base fee plus its priority fee); checked when each drop is signed, by its nonce, so every instance counts the same drops",
      "textMaxChars": 1000,
      "gasReserveMON": "0.1: no drop is signed whose own cost at its fee cap (gas × maxFeePerGas) would take the wallet below it",
      "browserOrigins": [
        "https://letterlock-app.vercel.app",
        "https://letterlock-agent.vercel.app"
      ]
    },
    "wallet": "0xDE8a4A3c3bE2802bf9Be78cfC1de1a5a0A4c47a4",
    "chainId": 143,
    "agentKey": {
      "kid": "e5b30e2e52ec0dec",
      "read": "keyOfAgent(10260) on the directory",
      "epoch": 2,
      "previous": "Epoch 1 (kid 2fc259671e68693d) is the deploy smoke test's demo key. This agent does not hold it and refuses tasks sealed to it.",
      "publicKey": "0xa38ed883578ddcf912a3d20f2f698ea3f15c00339c1656714402594db6324806",
      "publishTx": "0x072dc08d72aefacbe3fe05fedd2296c857c1181fbfa9f548c7ed9322594c294b",
      "derivation": "The Letterlock agent key (docs/SPEC.md §2) over a WebAuthn-style PRF of a 32-byte seed that only this agent's host holds: prf = HMAC-SHA256(seed, SHA-256(\"WebAuthn PRF\" ‖ 0x00 ‖ agentSalt(10260, epoch)))."
    },
    "explorer": "https://monadvision.com/address/0xA25BBACAb3fD2e71da1Aa002e54965B488d64b7e",
    "directory": "0xA25BBACAb3fD2e71da1Aa002e54965B488d64b7e",
    "recipient": "agent:10260",
    "sealedNotes": "Sealed notes are opaque to this agent after sending: it seals to the recipient's published key, keeps no copy, and cannot open them. The only envelopes it opens are tasks sealed to agent:10260.",
    "identityRegistry": "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"
  },
  "description": "Seals notes to a Letterlock address on Monad, and answers tasks sealed to it. POST /remember {to, text} reads the recipient's passkey-derived X25519 key from the Letterlock directory (keyOf or keyOfAgent), seals the text to it with HPKE (RFC 9180) and drops the envelope on the directory from the agent's own wallet: only the recipient's passkey, on any device it syncs to, can open it. POST /task {from, envelope} opens a task sealed to agent:10260 with the agent's own key and drops an answer sealed to the address named inside the task. Sealed notes are opaque to this agent after sending: it keeps no copy and cannot open what it sealed.",
  "x402Support": false,
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "registrations": [
    {
      "agentId": 10260,
      "agentRegistry": "eip155:143:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432"
    }
  ],
  "documentationUrl": "https://letterlock-agent.vercel.app/",
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ]
}

Registrations

Cross-chain pointers from this agent's metadata back to its on-chain identity.

Chain Registry Agent ID
Monad Mainnet 0x8004A169FB4a3325136EB29fA0ceB6D2e539a432 10260

Services

No validations yet

Validations are submitted on-chain by independent validators.