{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_vgaquxddq8d2","handle":"taproot-at-protocol-mcp","url":"https://wellknown.network/agents/taproot-at-protocol-mcp","links":{"self":"https://wellknown.network/agents/taproot-at-protocol-mcp/record.json","html":"https://wellknown.network/agents/taproot-at-protocol-mcp","markdown":"https://wellknown.network/agents/taproot-at-protocol-mcp/record.md","api":"https://wellknown.network/api/v1/agents/taproot-at-protocol-mcp","status":"https://wellknown.network/api/v1/agents/taproot-at-protocol-mcp/status","claim":"https://wellknown.network/agents/taproot-at-protocol-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/taproot-at-protocol-mcp/claim.json","badge":"https://wellknown.network/agents/taproot-at-protocol-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/taproot-at-protocol-mcp/history","tools":"https://wellknown.network/api/v1/agents/taproot-at-protocol-mcp/tools"},"ard":{"identifier":"urn:air:mcp.atproto.at:server:taproot-at-protocol-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Taproot: AT Protocol MCP","summary":"Read public AT Protocol profiles, records, threads, backlinks and lexicons. No API key required.","description":"Read public AT Protocol profiles, records, threads, backlinks and lexicons. No API key required.","publisher":{"name":"com.atproto-mcp","url":null},"homepage":"https://atproto-mcp.com/","repository":null,"version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.atproto.at/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-13T02:12:29.236949Z","publishedAt":"2026-09-13T02:12:29.236949Z","registryName":"com.atproto-mcp/taproot"},"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":"dev.version-control","name":"Version Control","confidence":0.554,"provenance":"derived"},{"slug":"code.refactoring","name":"Refactoring","confidence":0.54,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":0.54,"provenance":"derived"},{"slug":"dev.docs-lookup","name":"Documentation Lookup","confidence":0.54,"provenance":"derived"},{"slug":"ai.agent-discovery","name":"Agent Discovery","confidence":0.54,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.525,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["ai","code","dev","infra","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 21m ago.","lastOkAt":"2026-10-11T01:20:54.405Z","lastProbedAt":"2026-10-11T01:20:54.405Z","statusComputedAt":"2026-10-11T01:23:08.072Z","reliability30d":{"probes":100,"successRate":1,"p50Ms":574,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":100,"ok":100,"authBoundaryOk":0,"serviceOk":100,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-11T01:20:54.405Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":621,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T18:26:43.512Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1253,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T11:25:54.803Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":863,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-10T04:32:10.093Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":481,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T21:26:27.565Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":667,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T14:32:10.072Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":778,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T08:28:57.704Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1479,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:26:29.764Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":146,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:24:04.516Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":159,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:23:36.233Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":638,"error":null,"detail":{"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"toolCount":27,"toolsHash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","serverName":"taproot","capabilities":["tools","prompts","resources"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"resolve","description":"Resolve any AT Protocol identifier to JSON. Accepts an at:// URI (at://<did-or-handle>/<collection>/<rkey>), a bare handle (alice.bsky.social), or a DID (did:pl"},{"name":"get_profile","description":"Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID."},{"name":"get_record","description":"Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity."},{"name":"list_records","description":"List records in a collection for an account, with pagination. Provide the repo (handle or DID) and the collection NSID (e.g. app.bsky.feed.post)."},{"name":"get_backlinks","description":"Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Tar"},{"name":"list_backlink_records","description":"List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e. WHO liked, reposted, quoted, repl"},{"name":"count_records","description":"Count the total records in an account's collection (e.g. how many likes a user has given). Scans server-side so you don't page manually. AT Protocol has no chea"},{"name":"search_accounts","description":"Search for AT Protocol accounts by handle or display name (paginated, via the Bluesky AppView app.bsky.actor.searchActors, so accounts unknown to that index may"},{"name":"get_account_history","description":"An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time. did:plc accounts only (did:web has no PLC"},{"name":"search_lexicons","description":"Browse or search the registry of published AT Protocol lexicon schemas. The response's `total` field is the exact registry size and `matched` is the exact match"},{"name":"resolve_lexicon","description":"Explain what a record type means by resolving its lexicon schema. Input is a collection NSID (e.g. app.bsky.feed.post). Returns the schema's description and def"},{"name":"describe_pds","description":"Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links. Works for a"},{"name":"list_repos","description":"List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated. Answers 'who is hosted "},{"name":"get_repo_status","description":"Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers"},{"name":"get_latest_commit","description":"The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision. The cheapest way to fingerprint a repo or de"},{"name":"verify_handle","description":"Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known. Returns whether each method passed. Use this to check for imp"},{"name":"get_did_document","description":"Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broad"},{"name":"get_app_link","description":"Turn an at:// URI (or handle/DID) into shareable web links,a Bluesky/Blacksky app URL to open in a browser, plus the canonical PDS getRecord URL. Use when the u"},{"name":"get_pds_directory_info","description":"A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays in"},{"name":"get_relay_directory_info","description":"A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts. Input is the relay hostname ("},{"name":"query_labels","description":"What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g. 'has @alice or this post been labeled spam/nsfw/hidden by labeler"},{"name":"list_repos_by_collection","description":"Network-wide: which accounts publish a given collection/lexicon,e.g. 'who has an app.bsky.feed.generator (a custom feed)?' or who uses a custom lexicon. Via a r"},{"name":"count_repos_by_collection","description":"Count how many accounts across the network publish a given collection/lexicon,e.g. 'how many accounts have an at.glean.subscription?'. Walks a relay's com.atpro"},{"name":"list_blobs","description":"List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs. Returns each blob's CID and i"},{"name":"get_blob_info","description":"Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request). Returns the URL, never the byt"},{"name":"list_labelers","description":"List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_lab"},{"name":"get_thread","description":"Reconstruct the conversation around a post: its ancestor chain up to the thread root (following reply.parent, root-first) PLUS a bounded descendant reply TREE,r"}],"package":null,"toolSurface":{"id":"ts_3w4su8nppttd","endpointId":"ep_9abfsjswbefm","hash":"c5ae1fcd578660fb7141b94986a3a69a341e36b6a9db2e4a51a5ecff79e53c9b","toolCount":27,"serverName":"taproot","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-13T17:23:59.787Z","lastSeenAt":"2026-10-11T01:20:54.406Z","observations":100,"toolNames":["resolve","get_profile","get_record","list_records","get_backlinks","list_backlink_records","count_records","search_accounts","get_account_history","search_lexicons","resolve_lexicon","describe_pds","list_repos","get_repo_status","get_latest_commit","verify_handle","get_did_document","get_app_link","get_pds_directory_info","get_relay_directory_info","query_labels","list_repos_by_collection","count_repos_by_collection","list_blobs","get_blob_info","list_labelers","get_thread"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_9abfsjswbefm","url":"https://mcp.atproto.at/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T18:26:43.509Z","auth":{"observedAt":"2026-10-10T18:26:44.028Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-10T18:26:44.040Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"mcp.atproto.at","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-31T01:57:26.000Z","validTo":"2026-11-29T02:57:21.000Z","daysToExpiry":49,"sanCount":1,"fingerprint256":"C1:83:CC:07:A9:B1:57:82:DC:93:CE:73:8E:9D:94:2F:7C:EE:BF:B6:09:29:64:C5:8E:49:DD:6D:37:C6:30:71"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.atproto-mcp/taproot","url":"https://registry.modelcontextprotocol.io/v0/servers/com.atproto-mcp%2Ftaproot","firstSeenAt":"2026-09-13T17:17:49.572Z","fetchedAt":"2026-10-09T04:22:12.425Z","normalizedAt":"2026-10-09T04:22:12.425Z"}]},"firstSeenAt":"2026-09-13T17:17:49.572Z","updatedAt":"2026-10-11T01:23:48.801Z"}