{
  "markdown": "# GitPin\n\n[![Validate](https://github.com/shmindmaster/gitpin/actions/workflows/ci.yml/badge.svg)](https://github.com/shmindmaster/gitpin/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![Node.js Version](https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg)](package.json)\n[![MCP Protocol](https://img.shields.io/badge/MCP-1.30-blue.svg)](https://modelcontextprotocol.io)\n[![npm](https://img.shields.io/npm/v/gitpin.svg)](https://www.npmjs.com/package/gitpin)\n\n### Make agent-authored changes show exact evidence before merge.\n\n**GitPin is an agent-delivery assurance gate with a local evidence MCP.** It makes material PR claims cover the actual diff and point to exact committed line slices. The local MCP supplies index-free, read-only, multi-repo evidence that humans and CI can re-check with `git show`.\n\n```text\nAgent claim\n    → pin.search_*   (candidates only)\n    → pin.prove      (evidence pack: path + line + full SHA + content hash)\n    → pin.verify     (git show re-check; HEAD match report)\n    → you run: git show <sha>:<path>\n```\n\n| Crowded category | GitPin product |\n| --- | --- |\n| Vector / SQLite “repo context” servers | **No embeddings, no DB, no reindex** |\n| Filesystem MCP (writes) | **Never writes indexed repos** |\n| One-shot repo dumps | **Live prove → verify MCP loop** |\n| Grep hits as “the answer” | **Candidates → evidence pack → verification report** |\n| GitHub platform MCP | **Local Git roots (private/offline)** |\n\nFormerly RepoContext 0.3.x. See [migration](docs/migration-gitpin.md).\n\n## Required PR evidence gate\n\n```bash\ngitpin gate --base <full-base-sha> --head <full-head-sha>\n```\n\nThe gate reads policy only from the trusted base commit, reads the submitted manifest only from the head commit, compares the merge-base diff, and verifies exact line-slice hashes. It never executes PR code and never labels a locator match as proof of semantic correctness. Use the [GitPin GitHub Action setup](docs/pr-evidence-gate.md) to make it a required check. That guide also documents an optional, separate CrewScore check for teams that want written-control coverage alongside GitPin evidence verification.\n\n> **Current release:** GitPin 0.6.3 is verified on npm, the MCP Registry, GitHub Releases, and Pages. Install with `npx -y gitpin@0.6.3`. Node 20+.\n\nGitPin is maintained by **Sarosh Hussain**, who leads the project's technical direction. **Pendoah** is his company and operating context; GitPin remains the product and repository.\n\n## Five-minute path\n\n```bash\n# From a committed Git repository\nnpx -y gitpin@0.6.3 init --client codex\n```\n\n`init` creates `~/.gitpin/repositories.yaml` **outside** the repo, runs `doctor`, prints a **first evidence line with full SHA**, and paste-ready MCP config. It never edits the indexed repository.\n\n```bash\n# Independently verify any claim (same contract as pin.verify)\nnpx -y gitpin@0.6.3 verify \\\n  --repository my-service \\\n  --path docs/architecture.md \\\n  --line 42 \\\n  --sha <full-or-short-hex>\n```\n\n## Product job\n\n**When** agents invent file contents, mix dirty worktrees, or cite the wrong branch  \n**You want** every fact re-checkable with `git show <sha>:<path>`  \n**GitPin** registers local Git roots, serves **HEAD-only** docs/code, flags **stale** tracked docs, returns **path / line / SHA**, and closes the loop with **`pin.verify`**.\n\n### Agent tool surface (`pin.*`) — 12 read-only tools\n\n| Job | Tools |\n| --- | --- |\n| Discover | `pin.catalog` |\n| Find candidates | `pin.search_docs`, `pin.search_code` |\n| Prove | `pin.prove` (primary), `pin.prove_set` (1–8 cites), `pin.get_doc`, `pin.read` |\n| Verify | `pin.verify`, `pin.verify_set` |\n| Decide | `pin.analyze` → `EvidenceBrief` |\n| Inspect / diff | `pin.inspect`, `pin.compare` |\n\nResource: `gitpin://catalog`. Prompt: `prove-with-git-head` (forces the product loop).  \nCite formats: [docs/cite-spec.md](docs/cite-spec.md). Agent skill template: [templates/gitpin-skill.md](templates/gitpin-skill.md).\n\n### Functionality that is the pivot (not a rename)\n\n- **Evidence pack** (`pin.prove`): claim binding, line slice, full SHA, `contentSha256`, `citation.cite` / `handle`, next-step verify.\n- **Multi-cite sets** (`pin.prove_set` / `pin.verify_set`): stable `evidenceSetId` for multi-repo answers and CI.\n- **Verification report** (`pin.verify` / CLI): independent `git show`; optional `mustContain` claim-text; status includes `contradicted`.\n- **Candidates, not claims**: search returns `kind: evidence-candidates` with forced `next: pin.prove`.\n- **EvidenceBrief**: multi-repo knownFacts / gaps / stable `evidenceSetId` (schema v2).\n- **Dirty exclusion**: uncommitted work is never cited as HEAD evidence.\n\n### Explicit non-goals\n\n- Semantic / embedding search  \n- Writing, committing, or pushing  \n- Replacing GitHub Issues/PRs automation  \n- Indexing non-Git umbrella folders as one “repo”  \n\n## Configuration\n\n| Variable | Purpose |\n| --- | --- |\n| `GITPIN_REGISTRY` | Registry YAML path (legacy compatibility alias: `REPOCONTEXT_REGISTRY`) |\n| `GITPIN_MCP_TOKEN` | HTTP bearer token (legacy compatibility alias: `REPOCONTEXT_MCP_TOKEN`) |\n| `GITPIN_ALLOWED_HOSTS` | HTTP host allowlist (legacy compatibility alias: `REPOCONTEXT_ALLOWED_HOSTS`) |\n\nDefault registry: `~/.gitpin/repositories.yaml` (legacy compatibility fallback: `~/.repocontext/...` if present).\n\n## Docs\n\n[Tools](docs/tools.md) · [Compare](docs/compare.md) · [FAQ](docs/faq.md) · [Migration](docs/migration-gitpin.md) · [Clients](docs/clients.md) · [Architecture](docs/architecture.md) · [Competitive landscape](docs/research/competitive-landscape-corrected-2026-07-30.md)\n\nSite: [shmindmaster.github.io/gitpin](https://shmindmaster.github.io/gitpin/). GitPin is the canonical product and repository name; legacy `repocontext` references exist only for migration compatibility.\n\n## Development\n\n```bash\ncorepack enable\npnpm install --frozen-lockfile\npnpm validate\npnpm build\npnpm verify:package\npnpm site:test\n```\n\n## License\n\n[MIT](LICENSE)\n",
  "bytes": 6032,
  "sha": "809e15e27152698aef79847451faf2ef4d5801da158626cd43bbba0e321327b5",
  "repo_slug": "shmindmaster/repocontext",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_shmindmaster_repocontext_ac0c6edf/readme"
}