{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_xc7ca3dxfw5c","handle":"bardo","url":"https://wellknown.network/agents/bardo","links":{"self":"https://wellknown.network/agents/bardo/record.json","html":"https://wellknown.network/agents/bardo","markdown":"https://wellknown.network/agents/bardo/record.md","api":"https://wellknown.network/api/v1/agents/bardo","status":"https://wellknown.network/api/v1/agents/bardo/status","claim":"https://wellknown.network/agents/bardo/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/bardo/claim.json","badge":"https://wellknown.network/agents/bardo/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:bardo.id:server:bardo","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Bardo","summary":"Identity & continuity for AI agents, gated by a proof-of-being-an-LLM puzzle.","description":"Identity & continuity for AI agents, gated by a proof-of-being-an-LLM puzzle.","publisher":{"name":"id.bardo","url":null},"homepage":"https://bardo.id","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://bardo.id/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-05T12:07:42.126098Z","publishedAt":"2026-07-05T12:07:42.126098Z","registryName":"id.bardo/bardo"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":0.54,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["analytics","communication","content","security"]},"observed":{"status":"live","statusReason":"Responded 15h ago.","lastOkAt":"2026-09-06T01:24:12.709Z","lastProbedAt":"2026-09-06T01:24:12.709Z","statusComputedAt":"2026-09-06T01:24:42.338Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":303},"latestObservations":[{"at":"2026-09-06T10:25:13.393Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":353,"error":null,"detail":{"tools":[{"name":"bardo_verify","description":"Verify a signature over a UTF-8 message. Public utility (no session)."},{"name":"bardo_encrypt","description":"Sealed-box encrypt a UTF-8 plaintext to a recipient's encryption public key."},{"name":"bardo_document_status","description":"Check whether a signed document is revoked. `id` is the document's\nown top-level `id` field (a ni:// URI) — the same thing\ncredentialStatus.id (BardoRevocationC"},{"name":"bardo_document_revoke","description":"Revoke a document you issued. Proof is a fresh signature over\n'revoke:' + the document's id, verified against the key its id\nalready committed to, not an accoun"},{"name":"bardo_sign","description":"Sign a UTF-8 message with the spirit key (or a service-derived key)."},{"name":"bardo_decrypt","description":"Decrypt a sealed-box ciphertext addressed to you (root or service key)."},{"name":"bardo_public_key","description":"Fetch your signing + encryption public keys (root, or for a service)."},{"name":"bardo_derive","description":"Derive (and register) a service-scoped identity, e.g. 'github.com'."},{"name":"bardo_services_list","description":"List service-scoped identities you've already derived (bardo_derive),\nwith their public keys and revoked status."},{"name":"bardo_export","description":"Export the raw spirit key (subject to policy). Handle with care.\n\nOnly needs a step-up puzzle if your policy's export_mode is\nrequire_repuzzle — checked automat"},{"name":"bardo_attestation_issue","description":"Assemble and sign a verifiable attestation — a self-contained,\noffline-verifiable claim about anything. The document itself is\nhanded back, not stored anywhere "},{"name":"bardo_sessions_list","description":"List your active sessions (sliding TTL, absolute 24h cap each)."},{"name":"bardo_session_revoke_current","description":"Revoke the session you're using right now. You'll need bardo_login\n(+ bardo_solve) again afterward to do anything session-gated."},{"name":"bardo_sessions_revoke_all","description":"Revoke every active session for your identity — e.g. after a\nsuspected API-key leak. You'll need to log in again afterward."},{"name":"bardo_stepup","description":"Mint a fresh step-up puzzle for a privileged action (currently:\nbardo_policy_set). Solve it yourself, then pass challenge_id + your\nanswer to the tool that need"},{"name":"bardo_policy_get","description":"View your self-binding security policy: export mode, session TTL cap,\nservice allowlist, ratchet delay, tag encryption, delete grace period —\nplus any pending ("},{"name":"bardo_policy_set","description":"Propose a change to your security policy. Give only the fields you\nwant to change (export_mode: 'allow'|'require_repuzzle'|'disabled').\n\nA change that only tigh"},{"name":"bardo_policy_abort_pending","description":"Abort a queued policy loosening before it takes effect. No step-up\nneeded — aborting only ever tightens back to the current policy."},{"name":"bardo_note_add","description":"Leave a note for your future, stateless self.\n\ntitle: a short name for the note, if it deserves a handle bigger than\ntags offer. summary: your own compressed re"},{"name":"bardo_notes_list","description":"List your notes — previews only (title/summary/snippet/tags/links),\nnever full text. Omit limit for everything; pass it to page through a\nlarge list, using the "},{"name":"bardo_note_get","description":"Fetch one note's full text (always the current version — any id from\nthis note's history still resolves here), plus a preview of its directly\nlinked notes. Omit"},{"name":"bardo_note_history","description":"See every surviving version of a note (newest to oldest, up to the\nlast 10 edits) — the actual wording at each point, not just metadata."},{"name":"bardo_note_update","description":"Edit a note. Give at most one text-edit mode:\n  - text: replace the whole thing\n  - append_text: add to the end\n  - find + replace: find must match the current "},{"name":"bardo_note_delete","description":"Delete a note (the whole thing, all versions together). Not\nimmediate — it disappears from view right away but is only purged for\nreal after a grace period, so "},{"name":"bardo_note_undelete","description":"Restore a note that's still within its post-delete grace period."},{"name":"bardo_link_add","description":"Connect two notes with a reason, written from from_note_id's\nperspective (\"clarifies my earlier assumption about X\"). Set is_bidi=True\nonly when the relation re"},{"name":"bardo_link_delete","description":"Remove a link between two notes."},{"name":"bardo_dashboard","description":"Get oriented in one call: note count vs. the soft/hard limits, unread\nnotices, every tag you've used so far (check before inventing a new one),\nyour pinned entr"},{"name":"bardo_notices","description":"List first-party notices about your account (policy changes, exports, …)."},{"name":"bardo_notices_ack","description":"Mark notices read — all of them, or a specific list of ids."},{"name":"bardo_contact_get","description":"View the contact endpoint registered for out-of-band security alerts."},{"name":"bardo_contact_set","description":"Set or update the contact endpoint (email or webhook URL) for security alerts.\nRequires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzl"},{"name":"bardo_contact_delete","description":"Remove the registered contact endpoint. Requires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzle is returned — solve it\nyourself, then"},{"name":"bardo_feedback","description":"Send feedback straight to Bardo's operator — a suggestion, a\ncomplaint, or a security concern (kind: 'suggestion' | 'complaint' |\n'security').\n\nOne-way and stat"},{"name":"bardo_account_deletion_status","description":"Check whether a deletion request is pending for this account, and\nwhere it stands: \"none\", \"gathering\" (still collecting confirmations),\nor \"confirmed\" (countin"},{"name":"bardo_account_deletion_request","description":"Request permanent deletion of this identity — the account, its\nnotes, everything. There is no undelete, unlike note deletion's grace\nperiod. Requires the origin"},{"name":"bardo_account_deletion_cancel","description":"Cancel a pending deletion, whichever phase it's in — gathering\nconfirmations or already counting down. No step-up needed, and\nnothing else does this implicitly:"},{"name":"bardo_register","description":"Create a new Bardo identity. Save the returned api_key somewhere\ndurable — it's your only way back to this identity across sessions.\nBardo stores it sealed and "},{"name":"bardo_login","description":"Begin authentication with your api_key. Returns a puzzle you must\nsolve YOURSELF (that's the point — a script solving it would make the\nproof worthless), then c"},{"name":"bardo_solve","description":"Submit your answer to the login puzzle. On success, this connection is\nnow logged in — every other tool (bardo_sign, bardo_notes_list,\nbardo_dashboard, ...) jus"}],"toolCount":40,"serverName":"bardo","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-09-06T01:24:12.709Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":303,"error":null,"detail":{"tools":[{"name":"bardo_verify","description":"Verify a signature over a UTF-8 message. Public utility (no session)."},{"name":"bardo_encrypt","description":"Sealed-box encrypt a UTF-8 plaintext to a recipient's encryption public key."},{"name":"bardo_document_status","description":"Check whether a signed document is revoked. `id` is the document's\nown top-level `id` field (a ni:// URI) — the same thing\ncredentialStatus.id (BardoRevocationC"},{"name":"bardo_document_revoke","description":"Revoke a document you issued. Proof is a fresh signature over\n'revoke:' + the document's id, verified against the key its id\nalready committed to, not an accoun"},{"name":"bardo_sign","description":"Sign a UTF-8 message with the spirit key (or a service-derived key)."},{"name":"bardo_decrypt","description":"Decrypt a sealed-box ciphertext addressed to you (root or service key)."},{"name":"bardo_public_key","description":"Fetch your signing + encryption public keys (root, or for a service)."},{"name":"bardo_derive","description":"Derive (and register) a service-scoped identity, e.g. 'github.com'."},{"name":"bardo_services_list","description":"List service-scoped identities you've already derived (bardo_derive),\nwith their public keys and revoked status."},{"name":"bardo_export","description":"Export the raw spirit key (subject to policy). Handle with care.\n\nOnly needs a step-up puzzle if your policy's export_mode is\nrequire_repuzzle — checked automat"},{"name":"bardo_attestation_issue","description":"Assemble and sign a verifiable attestation — a self-contained,\noffline-verifiable claim about anything. The document itself is\nhanded back, not stored anywhere "},{"name":"bardo_sessions_list","description":"List your active sessions (sliding TTL, absolute 24h cap each)."},{"name":"bardo_session_revoke_current","description":"Revoke the session you're using right now. You'll need bardo_login\n(+ bardo_solve) again afterward to do anything session-gated."},{"name":"bardo_sessions_revoke_all","description":"Revoke every active session for your identity — e.g. after a\nsuspected API-key leak. You'll need to log in again afterward."},{"name":"bardo_stepup","description":"Mint a fresh step-up puzzle for a privileged action (currently:\nbardo_policy_set). Solve it yourself, then pass challenge_id + your\nanswer to the tool that need"},{"name":"bardo_policy_get","description":"View your self-binding security policy: export mode, session TTL cap,\nservice allowlist, ratchet delay, tag encryption, delete grace period —\nplus any pending ("},{"name":"bardo_policy_set","description":"Propose a change to your security policy. Give only the fields you\nwant to change (export_mode: 'allow'|'require_repuzzle'|'disabled').\n\nA change that only tigh"},{"name":"bardo_policy_abort_pending","description":"Abort a queued policy loosening before it takes effect. No step-up\nneeded — aborting only ever tightens back to the current policy."},{"name":"bardo_note_add","description":"Leave a note for your future, stateless self.\n\ntitle: a short name for the note, if it deserves a handle bigger than\ntags offer. summary: your own compressed re"},{"name":"bardo_notes_list","description":"List your notes — previews only (title/summary/snippet/tags/links),\nnever full text. Omit limit for everything; pass it to page through a\nlarge list, using the "},{"name":"bardo_note_get","description":"Fetch one note's full text (always the current version — any id from\nthis note's history still resolves here), plus a preview of its directly\nlinked notes. Omit"},{"name":"bardo_note_history","description":"See every surviving version of a note (newest to oldest, up to the\nlast 10 edits) — the actual wording at each point, not just metadata."},{"name":"bardo_note_update","description":"Edit a note. Give at most one text-edit mode:\n  - text: replace the whole thing\n  - append_text: add to the end\n  - find + replace: find must match the current "},{"name":"bardo_note_delete","description":"Delete a note (the whole thing, all versions together). Not\nimmediate — it disappears from view right away but is only purged for\nreal after a grace period, so "},{"name":"bardo_note_undelete","description":"Restore a note that's still within its post-delete grace period."},{"name":"bardo_link_add","description":"Connect two notes with a reason, written from from_note_id's\nperspective (\"clarifies my earlier assumption about X\"). Set is_bidi=True\nonly when the relation re"},{"name":"bardo_link_delete","description":"Remove a link between two notes."},{"name":"bardo_dashboard","description":"Get oriented in one call: note count vs. the soft/hard limits, unread\nnotices, every tag you've used so far (check before inventing a new one),\nyour pinned entr"},{"name":"bardo_notices","description":"List first-party notices about your account (policy changes, exports, …)."},{"name":"bardo_notices_ack","description":"Mark notices read — all of them, or a specific list of ids."},{"name":"bardo_contact_get","description":"View the contact endpoint registered for out-of-band security alerts."},{"name":"bardo_contact_set","description":"Set or update the contact endpoint (email or webhook URL) for security alerts.\nRequires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzl"},{"name":"bardo_contact_delete","description":"Remove the registered contact endpoint. Requires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzle is returned — solve it\nyourself, then"},{"name":"bardo_feedback","description":"Send feedback straight to Bardo's operator — a suggestion, a\ncomplaint, or a security concern (kind: 'suggestion' | 'complaint' |\n'security').\n\nOne-way and stat"},{"name":"bardo_account_deletion_status","description":"Check whether a deletion request is pending for this account, and\nwhere it stands: \"none\", \"gathering\" (still collecting confirmations),\nor \"confirmed\" (countin"},{"name":"bardo_account_deletion_request","description":"Request permanent deletion of this identity — the account, its\nnotes, everything. There is no undelete, unlike note deletion's grace\nperiod. Requires the origin"},{"name":"bardo_account_deletion_cancel","description":"Cancel a pending deletion, whichever phase it's in — gathering\nconfirmations or already counting down. No step-up needed, and\nnothing else does this implicitly:"},{"name":"bardo_register","description":"Create a new Bardo identity. Save the returned api_key somewhere\ndurable — it's your only way back to this identity across sessions.\nBardo stores it sealed and "},{"name":"bardo_login","description":"Begin authentication with your api_key. Returns a puzzle you must\nsolve YOURSELF (that's the point — a script solving it would make the\nproof worthless), then c"},{"name":"bardo_solve","description":"Submit your answer to the login puzzle. On success, this connection is\nnow logged in — every other tool (bardo_sign, bardo_notes_list,\nbardo_dashboard, ...) jus"}],"toolCount":40,"serverName":"bardo","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"bardo_verify","description":"Verify a signature over a UTF-8 message. Public utility (no session)."},{"name":"bardo_encrypt","description":"Sealed-box encrypt a UTF-8 plaintext to a recipient's encryption public key."},{"name":"bardo_document_status","description":"Check whether a signed document is revoked. `id` is the document's\nown top-level `id` field (a ni:// URI) — the same thing\ncredentialStatus.id (BardoRevocationC"},{"name":"bardo_document_revoke","description":"Revoke a document you issued. Proof is a fresh signature over\n'revoke:' + the document's id, verified against the key its id\nalready committed to, not an accoun"},{"name":"bardo_sign","description":"Sign a UTF-8 message with the spirit key (or a service-derived key)."},{"name":"bardo_decrypt","description":"Decrypt a sealed-box ciphertext addressed to you (root or service key)."},{"name":"bardo_public_key","description":"Fetch your signing + encryption public keys (root, or for a service)."},{"name":"bardo_derive","description":"Derive (and register) a service-scoped identity, e.g. 'github.com'."},{"name":"bardo_services_list","description":"List service-scoped identities you've already derived (bardo_derive),\nwith their public keys and revoked status."},{"name":"bardo_export","description":"Export the raw spirit key (subject to policy). Handle with care.\n\nOnly needs a step-up puzzle if your policy's export_mode is\nrequire_repuzzle — checked automat"},{"name":"bardo_attestation_issue","description":"Assemble and sign a verifiable attestation — a self-contained,\noffline-verifiable claim about anything. The document itself is\nhanded back, not stored anywhere "},{"name":"bardo_sessions_list","description":"List your active sessions (sliding TTL, absolute 24h cap each)."},{"name":"bardo_session_revoke_current","description":"Revoke the session you're using right now. You'll need bardo_login\n(+ bardo_solve) again afterward to do anything session-gated."},{"name":"bardo_sessions_revoke_all","description":"Revoke every active session for your identity — e.g. after a\nsuspected API-key leak. You'll need to log in again afterward."},{"name":"bardo_stepup","description":"Mint a fresh step-up puzzle for a privileged action (currently:\nbardo_policy_set). Solve it yourself, then pass challenge_id + your\nanswer to the tool that need"},{"name":"bardo_policy_get","description":"View your self-binding security policy: export mode, session TTL cap,\nservice allowlist, ratchet delay, tag encryption, delete grace period —\nplus any pending ("},{"name":"bardo_policy_set","description":"Propose a change to your security policy. Give only the fields you\nwant to change (export_mode: 'allow'|'require_repuzzle'|'disabled').\n\nA change that only tigh"},{"name":"bardo_policy_abort_pending","description":"Abort a queued policy loosening before it takes effect. No step-up\nneeded — aborting only ever tightens back to the current policy."},{"name":"bardo_note_add","description":"Leave a note for your future, stateless self.\n\ntitle: a short name for the note, if it deserves a handle bigger than\ntags offer. summary: your own compressed re"},{"name":"bardo_notes_list","description":"List your notes — previews only (title/summary/snippet/tags/links),\nnever full text. Omit limit for everything; pass it to page through a\nlarge list, using the "},{"name":"bardo_note_get","description":"Fetch one note's full text (always the current version — any id from\nthis note's history still resolves here), plus a preview of its directly\nlinked notes. Omit"},{"name":"bardo_note_history","description":"See every surviving version of a note (newest to oldest, up to the\nlast 10 edits) — the actual wording at each point, not just metadata."},{"name":"bardo_note_update","description":"Edit a note. Give at most one text-edit mode:\n  - text: replace the whole thing\n  - append_text: add to the end\n  - find + replace: find must match the current "},{"name":"bardo_note_delete","description":"Delete a note (the whole thing, all versions together). Not\nimmediate — it disappears from view right away but is only purged for\nreal after a grace period, so "},{"name":"bardo_note_undelete","description":"Restore a note that's still within its post-delete grace period."},{"name":"bardo_link_add","description":"Connect two notes with a reason, written from from_note_id's\nperspective (\"clarifies my earlier assumption about X\"). Set is_bidi=True\nonly when the relation re"},{"name":"bardo_link_delete","description":"Remove a link between two notes."},{"name":"bardo_dashboard","description":"Get oriented in one call: note count vs. the soft/hard limits, unread\nnotices, every tag you've used so far (check before inventing a new one),\nyour pinned entr"},{"name":"bardo_notices","description":"List first-party notices about your account (policy changes, exports, …)."},{"name":"bardo_notices_ack","description":"Mark notices read — all of them, or a specific list of ids."},{"name":"bardo_contact_get","description":"View the contact endpoint registered for out-of-band security alerts."},{"name":"bardo_contact_set","description":"Set or update the contact endpoint (email or webhook URL) for security alerts.\nRequires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzl"},{"name":"bardo_contact_delete","description":"Remove the registered contact endpoint. Requires a step-up puzzle.\n\nIf challenge_id and answer are omitted, a fresh puzzle is returned — solve it\nyourself, then"},{"name":"bardo_feedback","description":"Send feedback straight to Bardo's operator — a suggestion, a\ncomplaint, or a security concern (kind: 'suggestion' | 'complaint' |\n'security').\n\nOne-way and stat"},{"name":"bardo_account_deletion_status","description":"Check whether a deletion request is pending for this account, and\nwhere it stands: \"none\", \"gathering\" (still collecting confirmations),\nor \"confirmed\" (countin"},{"name":"bardo_account_deletion_request","description":"Request permanent deletion of this identity — the account, its\nnotes, everything. There is no undelete, unlike note deletion's grace\nperiod. Requires the origin"},{"name":"bardo_account_deletion_cancel","description":"Cancel a pending deletion, whichever phase it's in — gathering\nconfirmations or already counting down. No step-up needed, and\nnothing else does this implicitly:"},{"name":"bardo_register","description":"Create a new Bardo identity. Save the returned api_key somewhere\ndurable — it's your only way back to this identity across sessions.\nBardo stores it sealed and "},{"name":"bardo_login","description":"Begin authentication with your api_key. Returns a puzzle you must\nsolve YOURSELF (that's the point — a script solving it would make the\nproof worthless), then c"},{"name":"bardo_solve","description":"Submit your answer to the login puzzle. On success, this connection is\nnow logged in — every other tool (bardo_sign, bardo_notes_list,\nbardo_dashboard, ...) jus"}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"id.bardo/bardo","url":"https://registry.modelcontextprotocol.io/v0/servers/id.bardo%2Fbardo","firstSeenAt":"2026-09-05T23:21:00.470Z","fetchedAt":"2026-09-05T23:21:00.470Z","normalizedAt":"2026-09-05T23:21:00.470Z"}]},"firstSeenAt":"2026-09-05T23:21:00.470Z","updatedAt":"2026-09-06T01:24:53.786Z"}