# Taproot: AT Protocol Explorer > Read any AT Protocol identifier (an at:// URI, a handle, or a DID) as clean JSON. PDS-agnostic, read-only, no auth. ## API - [Resolve](https://api.atproto.at/v1/resolve?uri=alice.bsky.social): GET ?uri=. Params: include=schema,backlinks; cursor; limit=1-100; fmt=json|md (or send Accept: text/markdown). Always pass the identifier in ?uri, never the path. - [Tools over HTTP](https://api.atproto.at/v1/tools): every MCP tool is also GET https://api.atproto.at/v1/tools/? (arrays comma-separated; add fmt=md for text). GET https://api.atproto.at/v1/tools lists the catalog. - [OpenAPI 3.1](https://atproto.at/openapi.json): full machine-readable spec (resolve + every tool). ## MCP server - [https://mcp.atproto.at/mcp](https://mcp.atproto.at/mcp): Streamable HTTP, stateless, read-only, no auth. Tools: 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. To find who liked/replied to/follows X: get_backlinks (counts) then list_backlink_records with the returned source, then get_record on a returned at:// URI to read its content. ## Examples - [Resolve a handle to its profile](https://api.atproto.at/v1/resolve?uri=bsky.app): repo overview (DID, PDS, collections). - Resolve a record with enrichments: GET https://api.atproto.at/v1/resolve?uri=at:////&include=schema,backlinks (a record plus its lexicon schema and inbound references). Replace // with a real record URI. - [Resolve as Markdown](https://api.atproto.at/v1/resolve?uri=bsky.app&fmt=md): the same data rendered as text. ## Human viewer - https://atproto.at/uri/at:////: browse any identifier; append ?fmt=md for the agent-readable version.