{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_x7g7waxdqagp","handle":"pasr-mcp","url":"https://wellknown.network/agents/pasr-mcp","links":{"self":"https://wellknown.network/agents/pasr-mcp/record.json","html":"https://wellknown.network/agents/pasr-mcp","markdown":"https://wellknown.network/agents/pasr-mcp/record.md","api":"https://wellknown.network/api/v1/agents/pasr-mcp","status":"https://wellknown.network/api/v1/agents/pasr-mcp/status","claim":"https://wellknown.network/agents/pasr-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/pasr-mcp/claim.json","badge":"https://wellknown.network/agents/pasr-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:pasr-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"pasr-mcp","summary":"Provenance-aware span recall: a zero-setup context-broker MCP for coding and document agents.","description":"# PASR\n\n**Provenance-Aware Span Recall** — a zero-setup context broker your coding agent calls\nas an MCP tool. It hands the model the *few* lines that answer the question, each with a\n`file:line` and the reason it was picked — and tells the agent when it asked the wrong\ntool.\n\n[![PyPI](https://img.shields.io/pypi/v/pasr-mcp)](https://pypi.org/project/pasr-mcp/)\n[![Python](https://img.shields.io/pypi/pyversions/pasr-mcp)](https://pypi.org/project/pasr-mcp/)\n[![CI](https://github.com/Apheironn/pasr/actions/workflows/ci.yml/badge.svg)](https://github.com/Apheironn/pasr/actions/workflows/ci.yml)\n[![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Apheironn/pasr/main/docs/assets/demo.svg\" alt=\"pasr explain — one MCP call, 42,768 to 2,718 tokens, a receipt for every line\" width=\"820\"></p>\n\n## The problem\n\nAn agent working in a real repo has two bad options: read whole files and burn its\ncontext window on code that never mattered, or grep-and-guess and miss the file that\nheld the answer. Either way, **you cannot see what it looked at** — no record, no line\nnumbers, no reason.\n\n## What PASR does\n\n### Budgeted\n\nYou set a token ceiling; PASR never returns more, and it packs whole spans — never a\ntruncated function. If the full file set already fits, you get it back unchanged.\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Apheironn/pasr/main/docs/assets/concept-budgeted.svg\" width=\"760\" alt=\"a budget bar: 2,718 tokens kept under a 3,000-token ceiling, 282 free\"></p>\n\n### Traceable\n\nEvery span carries `file:line`, a token count, its retrieval score, and *why* it was\nkept (`bm25`, `symbol`, `active_window`, …). A byte-stable receipt — of what was kept\n*and* what was dropped — lands on disk for every call.\n\n<p align=\"center\"><img src=\"https://raw.githubusercontent.com/Apheironn/pasr/main/docs/assets/concept-traceable.svg\" width=\"760\" alt=\"anatomy of one returned span: where i…","publisher":{"name":"Apheironn","url":null},"homepage":"https://github.com/Apheironn/pasr","repository":"https://github.com/Apheironn/pasr","version":"0.2.1","license":null,"protocols":["mcp"],"tags":["ai-agent","claude","code-search","coding-agent","context","context-engineering","cursor","llm","mcp","mcp-server","model-context-protocol","provenance","rag","repo-map","retrieval","token-budget","tree-sitter"],"pricing":null,"endpoints":[{"url":"pypi:pasr-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"code.generation","name":"Code Generation","confidence":1,"provenance":"derived"},{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"declared"}],"categories":["code","data"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"pasr-mcp","registry":"pypi","observedAt":"2026-09-10T09:26:53.682Z","publishedAt":"2026-09-07T03:53:32.026408Z","latestVersion":"0.2.1"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"pasr-mcp","url":"https://pypi.org/project/pasr-mcp/","firstSeenAt":"2026-09-10T09:25:37.486Z","fetchedAt":"2026-09-10T09:25:37.486Z","normalizedAt":"2026-09-10T09:25:37.486Z"}]},"firstSeenAt":"2026-09-10T09:25:37.486Z","updatedAt":"2026-09-10T09:26:53.682Z"}