Skip to main content
Back to Home

Developers & AI

Resolve any AT Protocol URI, handle, or DID to JSON. Read-only, no auth, works with any PDS.

HTTP API

curl 'https://api.atproto.at/v1/resolve?uri=alice.bsky.social'
curl 'https://api.atproto.at/v1/resolve?uri=at://alice.bsky.social/app.bsky.feed.post/3k...&include=schema,backlinks'
curl 'https://api.atproto.at/v1/resolve?uri=alice.bsky.social&fmt=md'
uri
Required. An at:// URI, a handle, or a DID.
include
schema, backlinks, profile (comma-separated).
cursor
Pagination cursor (collections).
limit
Page size, 1–100 (collections).
fmt
json (default) or md. Accept: text/markdown also works.

Every MCP tool below is also callable over plain HTTP: https://api.atproto.at/v1/tools/<name>?<args> (catalog at /v1/tools). Full schema: openapi.json. Responses are CORS-enabled and carry the resolved identity plus a _links map.

MCP server

https://mcp.atproto.at/mcp

Add it to a client (Claude, Cursor, VS Code):

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

Or with Claude Code:

claude mcp add --transport http taproot https://mcp.atproto.at/mcp

Tools:

resolve
any at:// URI, handle, or DID → JSON
get_profile / get_record / list_records
specific shapes
search_accounts
find an account by handle or name
get_backlinks
counts of who likes/reposts/quotes/replies/follows a target
list_backlink_records
the actual accounts behind those counts
count_records
total size of a collection
get_account_history
handle changes, PDS migrations, key rotations
verify_handle
is a handle really owned by its DID (anti-spoof)
get_did_document
raw identity doc: aliases, services, keys
get_app_link
shareable Bluesky / Blacksky / raw-PDS links for a URI
describe_pds / get_repo_status
PDS server info; account active/takedown status
get_latest_commit
a repo's head commit CID + revision
list_repos
the accounts (repos) hosted on a PDS
get_pds_directory_info / get_relay_directory_info
cached PDS / relay health cards
query_labels
moderation labels a labeler applied to an account/record
list_labelers
discover labeler services (do this before query_labels)
list_repos_by_collection
which accounts publish a given lexicon (relay-served)
search_lexicons / resolve_lexicon
browse published record types, or get one's schema
get_thread
reconstruct a post's conversation (ancestors + a bounded reply tree)
list_blobs / get_blob_info
an account's media blobs; a blob's PDS URL + content-type/size

To find who liked a post: get_backlinks for the counts, then list_backlink_records with the source it returns.

llms.txtopenapi.jsonAbout MCP