← Registry

Social Media

atproto.at

Provides tools to query AT Protocol social data, including profiles, records, and inbound engagement counts.

1 endpoint27 known toolsFirst detected September 3, 2026Last detected September 3, 2026

ENDPOINT 1

https://mcp.atproto.at/mcp

No auth detected

MCP server metadata

Name
taproot
Version
0.1.0
Capabilities
toolspromptsresources
Server instructions

Taproot exposes read-only AT Protocol data, PDS-agnostic (works for any PDS, relay, or labeler, not only Bluesky). Start with `resolve` for any at:// URI, handle, or DID. Use `get_profile`/`get_record`/`list_records` when you already know the shape, and `search_accounts` to turn a name into candidate DIDs. WORKFLOWS: - Who liked/reposted/replied to/quoted/mentioned/follows X: call `get_backlinks` (counts per category, each carrying a `source`), then `list_backlink_records` with that `source` for the author DIDs and record URIs, then `get_record` on a URI to read what a reply/quote/mention actually says. For a whole conversation, use `get_thread` (ancestors + direct replies). - Never trust a handle from search results or user input before acting on it: `verify_handle` checks the handle's DNS/well-known binding to the DID (anti-spoof). - Moderation labels: `list_labelers` to discover a labeler, then `query_labels` with it (labels key on DIDs; a handle target is resolved for you). - `count_records` may return exact:false with a cursor; call it again with that cursor and ADD the counts. MORE TOOLS: `get_account_history` (handle/PDS/key changes over time, did:plc). `search_lexicons`/`resolve_lexicon` (registry of published lexicons; `search_lexicons` filters by schema kind with `type`, e.g. type='space' for permissioned spaces, and always reports a `typeCounts` breakdown of the matches (plus `otherTypes` for what a type filter excluded) — an NSID does not imply its type). `list_repos_by_collection` (which accounts publish a lexicon, relay-served). `get_did_document` (raw identity doc). `get_app_link` (shareable web/PDS links). `describe_pds`/`get_repo_status` (PDS info, account takedown/active status). `get_latest_commit` (repo head CID/rev). `list_repos` (accounts hosted on a PDS). `get_pds_directory_info`/`get_relay_directory_info` (cached health cards). `list_blobs`/`get_blob_info` (an account's media blobs, and a blob's getBlob URL, content-type, and size). COMPOSE LINKS: to hand the user a prefilled record-composer link, build an at.new URL — https://at.new/?record=<percent-encoded record JSON> for small records, https://at.new/#record=b64:<base64url of the UTF-8 JSON, padding stripped> for anything bigger, or https://at.new/#record=dfl:<base64url of raw-deflate-compressed JSON> to keep large payloads compact (caps: 100 KB encoded, 1 MB decoded). Include "$type" in the record (it selects the collection). The user always reviews and presses Create themselves; nothing auto-posts. Template variables inside string values make the link reusable: {{$now}} (UTC instant), {{$did}}/{{$handle}} (whoever opens it), {{$lang}} (opener's language) resolve at create time. Any OTHER placeholder without a $ — any name you invent, e.g. {{title}} or {{message}} — becomes a text field the opener fills in before creating. Full guide: /new/api on the human host. CONVENTIONS: every list tool returns a `cursor` when more pages exist. Error responses carry a machine-readable `hint`. On a rate-limit error (429), wait retryAfterSec before retrying (heavy tools cost more budget). Add `include:['profile']` on resolve/get_profile/get_record for the repo owner's display name, bio, and avatar URL ('schema' applies to record/collection targets; 'backlinks' means followers when the target is an account). at:// URIs are also readable as MCP resources (resources/templates/list, resources/read), and prompts/list has ready-made recipes (who_engaged, account_audit, pds_health).

Known tools 27

resolve

Resolve any AT Protocol identifier to JSON.

Inferred read-only
get_profile

Get an account's repository overview (handle, DID, PDS, and the list of collections it contains).

Inferred read-only
get_record

Fetch a single record by its full at:// URI (must include collection and rkey).

Inferred read-only
list_records

List records in a collection for an account, with pagination.

Inferred read-only
get_backlinks

Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index.

Inferred read-only
list_backlink_records

List the actual records (author DID + verified handle + at:// URI, newest first) that reference a target for ONE category,i.e.

Inferred read-only
count_records

Count the total records in an account's collection (e.g.

Inferred read-only
search_accounts

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

Inferred read-only
get_account_history

An account's history from its PLC audit log: handle changes, PDS migrations, signing-key rotations, and creation time.

Inferred read-only
search_lexicons

Browse or search the registry of published AT Protocol lexicon schemas.

Inferred read-only
resolve_lexicon

Explain what a record type means by resolving its lexicon schema.

Inferred read-only
describe_pds

Describe a Personal Data Server: its DID, whether registration requires an invite, the handle domains you can register there, and ToS/contact links.

Inferred read-only
list_repos

List the accounts (repositories) hosted on a PDS, via com.atproto.sync.listRepos: each repo's DID and active/takedown status, paginated.

Inferred read-only
get_repo_status

Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state.

Inferred read-only
get_latest_commit

The current head commit of an account's repository (com.atproto.sync.getLatestCommit): its commit CID and revision.

Inferred read-only
verify_handle

Bidirectionally verify that a handle is really owned by its DID, via DNS TXT and HTTPS well-known.

Inferred read-only
get_did_document

Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods.

Inferred read-only
get_app_link

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.

Inferred read-only
get_pds_directory_info

A cached health card for a PDS from pds.directory: version, DID, approximate user count, reachability, last-checked time, available domains, and which relays index it.

Inferred read-only
get_relay_directory_info

A cached overview of a relay from firehose.directory: counts of PDSes it indexes (total/active/offline/banned) and total accounts.

Inferred read-only
query_labels

What moderation labels a labeler has applied to a subject (com.atproto.label.queryLabels),e.g.

Inferred read-only
list_repos_by_collection

Network-wide: which accounts publish a given collection/lexicon,e.g.

Potential side effects
count_repos_by_collection

Count how many accounts across the network publish a given collection/lexicon,e.g.

Potential side effects
list_blobs

List the blobs (uploaded media/attachments,images, video, etc.) hosted in an account's repository, via com.atproto.sync.listBlobs.

Inferred read-only
get_blob_info

Get metadata for a single blob: its canonical PDS getBlob URL plus a best-effort content-type and byte size (via a HEAD request).

Inferred read-only
list_labelers

List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint.

Inferred read-only
get_thread

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,replies, replies-to-replies, and so on, each tagged with its depth and parent,walked breadth-first and capped for cost.

Potential side effects

CONNECT WITH APPROVAL

Client installation

Review this server and its permissions before adding it. Secret placeholders must be set locally.

Codex

~/.codex/config.toml

[mcp_servers.taproot]
url = "https://mcp.atproto.at/mcp"
enabled = true
Claude Code

.mcp.json

{
  "mcpServers": {
    "taproot": {
      "type": "http",
      "url": "https://mcp.atproto.at/mcp"
    }
  }
}
Claude Desktop

Settings → Connectors → Add custom connector

Name: taproot
Remote MCP URL: https://mcp.atproto.at/mcp

Add this remote URL as a custom connector in Claude Desktop. Availability depends on the user plan and workspace policy.

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "taproot": {
      "url": "https://mcp.atproto.at/mcp"
    }
  }
}
Visual Studio Code

.vscode/mcp.json

Add to Visual Studio Code
{
  "servers": {
    "taproot": {
      "type": "http",
      "url": "https://mcp.atproto.at/mcp"
    }
  }
}
Generic MCP

Client-specific MCP configuration

{
  "name": "taproot",
  "transport": "streamable-http",
  "url": "https://mcp.atproto.at/mcp"
}
MCP Inspector

Run the official MCP Inspector locally and enter the indexed Streamable HTTP endpoint.

TRUST AND VERIFICATION EVIDENCE

Loading Trust v2 evidence…

Checking the associated registrable domain. The BuiltWith key remains server-side.

Indexed

Evidence is source-attributed and does not guarantee that a third-party server is safe. Risk labels are conservative metadata heuristics.