MCP server for interacting with your LINE Official Account
Taproot: AT Protocol is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Read public AT Protocol profiles, records, threads, backlinks and lexicons. No API key required.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http taproot-at-protocol-mcp https://mcp.atproto.at/mcp
# 2 — ask your agent for something these tools do
# resolve, get_profile, get_record and 24 more
Taproot: AT Protocol costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http taproot-at-protocol-mcp https://mcp.atproto.at/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
27 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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:plc:...). Returns a profile, a collection page, or a single record depending on how specific the input is. PDS-agnostic: works for any AT Protocol PDS, not just Bluesky.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| uri | string | yes | An at:// URI, a bare handle, or a DID. |
| include | array | no | Optional enrichments: 'schema' resolves the collection's lexicon; 'backlinks' lists who referenced the target; 'profile' adds the repo owner's display name, bio, and avatar URL. |
| cursor | string | no | Pagination cursor (collections only). |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
Get an account's repository overview (handle, DID, PDS, and the list of collections it contains). Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| actor | string | yes | A handle (alice.bsky.social) or DID (did:plc:...). |
| include | array | no | Optional enrichments: 'schema' resolves the collection's lexicon; 'backlinks' lists who referenced the target; 'profile' adds the repo owner's display name, bio, and avatar URL. |
Fetch a single record by its full at:// URI (must include collection and rkey). Returns the record's value, CID, and resolved identity.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| uri | string | yes | Full at:// URI: at://<did-or-handle>/<collection>/<rkey>. |
| include | array | no | Optional enrichments: 'schema' resolves the collection's lexicon; 'backlinks' lists who referenced the target; 'profile' adds the repo owner's display name, bio, and avatar URL. |
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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID. |
| collection | string | yes | Collection NSID, e.g. app.bsky.feed.post. |
| cursor | string | no | Pagination cursor from a previous page. |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
Index of who/what references a target,the inbound likes, reposts, quotes, replies, and follows,as COUNTS per category, via the Constellation backlink index. Target is a record's at:// URI or an account DID. This returns aggregate counts only; each category also includes a source string. To list the actual records and their author DIDs for one category (e.g. WHO liked a post), call list_backlink_
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target | string | yes | A record at:// URI or a DID. |
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, replied to, mentioned, or follows it. Workflow: call get_backlinks first to get a category source, then pass it here. To read WHAT a referencing record says (e.g. the text of a mention or reply), call get_record on its at:// URI. Author handl
| Parameter | Type | Required | Notes |
|---|---|---|---|
| target | string | yes | The referenced record at:// URI or account DID (same target passed to get_backlinks). |
| source | string | yes | A category source from get_backlinks, e.g. app.bsky.feed.like:subject.uri. |
| cursor | string | no | Pagination cursor returned by a previous call (to get the next page). |
| limit | integer | no | Page size (1-25, default 25). Use the returned cursor for the next page. |
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 cheap exact count, so for very large collections this returns exact:false with a lower-bound count and a cursor,call again with that cursor and ADD the counts to keep going.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID. |
| collection | string | yes | Collection NSID, e.g. app.bsky.feed.like. |
| cursor | string | no | Resume cursor from a prior capped (exact:false) count. The new count covers records AFTER it,add it to your previous total. |
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). Returns candidate accounts with DID + handle, to turn a name into a DID. Results are search CANDIDATES, not verified handle-to-DID mappings: call verify_handle before trusting that a handle really belongs to a DID (resolve/get
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | A handle fragment or display name, e.g. "alice". |
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
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 log). Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| actor | string | yes | A handle or DID (did:plc). |
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 count. Substring matches the NSID or description (query 'profile' → anything containing 'profile'); prefix the query with a DOT for a suffix match (query '.profile' → only NSIDs ENDING in .profile, i.e. profile record types). Filter by sch
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Optional substring to filter by, e.g. "profile" or "app.bsky". |
| type | no | Keep only these schema kinds, e.g. "space" for permissioned space declarations, or ["record","procedure"]. Case-insensitive. Combine with query to search within a kind. | |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
| offset | integer | no | Skip this many matches (pagination). Use the offset value printed after a truncated list. |
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 definition.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| nsid | string | yes | A collection NSID, e.g. app.bsky.feed.post. |
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 any PDS, not just Bluesky. Input is the PDS origin (e.g. https://pds.example.com).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pds | string | yes | A PDS origin URL, e.g. https://pds.example.com. |
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 on this PDS?' / 'how many accounts does this PDS have?'. By default returns DIDs only (one request, large page — best for counting); pass enrich=true to also resolve handles (slower, smaller page). Input is the PDS origin (e.g. https://pds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| pds | string | yes | A PDS origin URL, e.g. https://pds.example.com. |
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-1000, default 1000). With enrich=true the effective page is capped near 20 (each DID is resolved to a handle). Use the returned cursor for the next page. |
| enrich | boolean | no | Resolve each DID to its handle. Default false — returns DIDs only in ONE request (large page, the fast path for listing/counting). Set true only when you need handles (slower, smaller page). |
Liveness/moderation status of an account's repository: whether it is active, its current revision, and any takedown/suspended/deactivated/deleted state. Answers 'has @alice been taken down?' which get_profile can't. Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID. |
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 detect whether it changed since you last looked, without downloading data. Complements get_repo_status (which has the rev but not the commit CID). Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID. |
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 impersonation/spoofing,search results and resolve give candidates, this gives cryptographic binding.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| handle | string | yes | A handle, e.g. alice.bsky.social. |
Fetch the raw DID document for any DID or handle: all aliases (alsoKnownAs), every service entry (PDS, labeler, custom AppView), and verification methods. Broader than get_profile, and works for did:web accounts. Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| actor | string | yes | A handle or DID. |
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 user wants a clickable/pasteable link.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| uri | string | yes | An at:// URI, handle, or DID. |
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. Input is the PDS hostname (e.g. pds.example.com). Best-effort/cached data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hostname | string | yes | A PDS hostname, e.g. pds.example.com. |
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 (e.g. bsky.network). Best-effort/cached data.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hostname | string | yes | A relay hostname, e.g. bsky.network. |
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 X?'. Anonymous and service-agnostic: the labeler's own service endpoint is found from its DID document (no hardcoded aggregator). Subject is a DID/handle (account labels) or an at:// URI (record labels); labeler is the handle or DID of a l
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subject | string | yes | What to check: a DID/handle (account-level labels) or an at:// URI (record-level). |
| labeler | string | yes | The labeler service to ask,a handle or DID, e.g. moderation.bsky.app. |
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
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 relay's com.atproto.sync.listReposByCollection (anonymous). By default returns DIDs only (one request, large page); pass enrich=true to also resolve handles (slower, smaller page). For just a total, use count_repos_by_collection. NOTE: relay
| Parameter | Type | Required | Notes |
|---|---|---|---|
| collection | string | yes | A collection NSID, e.g. app.bsky.feed.generator. |
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-1000, default 1000). With enrich=true the effective page is capped near 20 (each DID is resolved to a handle). Use the returned cursor for the next page. |
| relay | string | no | Optional relay origin to query instead of the default, e.g. https://relay.example.com. |
| enrich | boolean | no | Resolve each DID to its handle. Default false — returns DIDs only in ONE request (large page, the fast path for listing/counting). Set true only when you need handles (slower, smaller page). |
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.atproto.sync.listReposByCollection with NO per-account handle resolution, so it's cheap and returns an exact total for typical collections. For very large collections it returns exact:false with a cursor,call again with that cursor and ADD the c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| collection | string | yes | A collection NSID, e.g. app.bsky.feed.generator. |
| cursor | string | no | Resume cursor from a previous exact:false response. |
| relay | string | no | Optional relay origin to query instead of the default, e.g. https://relay.example.com. |
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 its canonical PDS getBlob URL (PDS-native, works for any PDS,not a CDN). Answers 'what media does this account host?'. Records reference blobs by CID; use this (or get_blob_info) to turn a CID into a fetchable URL. Input is a handle or DID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID. |
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-100, default 50). A cursor in the response means more pages exist. |
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 bytes. Use to turn a blob ref (CID) found in a record into a downloadable link and learn what it is. Input is the owning repo (handle or DID) and the blob CID.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| repo | string | yes | A handle or DID (the blob's owning repo). |
| cid | string | yes | The blob CID (e.g. bafkrei...), as found in a record's blob ref. |
List the labeler (moderation) services known to the labeler relay,each labeler's DID, resolved handle, and service endpoint. The discovery step BEFORE query_labels, which needs a labeler DID/handle up front: use this to find moderation.bsky.app and any third-party/regional labelers, then pass one to query_labels.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| cursor | string | no | Pagination cursor from a previous call. |
| limit | integer | no | Page size (1-20, default 20). Use the returned cursor for the next page. |
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. NOTE: descendant expansion assumes the Bluesky reply model (app.bsky.feed.post with reply.parent); ancestor walking follo
| Parameter | Type | Required | Notes |
|---|---|---|---|
| uri | string | yes | A post's full at:// URI: at://<did-or-handle>/app.bsky.feed.post/<rkey>. |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Taproot: AT Protocol or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
This listing is an address its publisher runs, and you connect to it directly — this marketplace is not in the path. The scanner reads packages and public source, and an address is neither. So there is no grade — not a withheld one, an unmeasured one.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.0.0.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Taproot: AT Protocol can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.