# RepoPilot > Evidence before a coding agent acts, and proof receipts after it changes a project. RepoPilot evaluates public repositories, exact npm versions, bounded project compatibility, and caller-asserted local checks. It is decision support, not a certification, install approval, or merge approval. ## Hosted MCP server - Endpoint: `https://repopilot.app/api/mcp` - Transport: Streamable HTTP - Public use requires no API key. - All tools are read-only and nondestructive. Six evidence lookups are idempotent. `plan_repo_task` creates a fresh proof contract, and contract-backed `check_change_risk` records an attempt; do not automatically retry either call. - Setup and examples: https://repopilot.app/mcp The eight hosted tools are: 1. `check_dependency` — lean repository-level adoption evidence for one public GitHub repository or npm package. 2. `evaluate_dependency_change` — evaluate an exact npm add/upgrade against a bounded project snapshot before installation. 3. `verify_dependency_change` — verify the resolved version, lockfile receipt, advisory delta, integrity, and caller-asserted command receipts afterward. 4. `analyze_repo` — concise repository brief for an unfamiliar public repository. 5. `plan_repo_task` — task- and full-SHA-aware file orientation plus a short-lived proof contract. 6. `get_artifact` — opt-in full cached repository orientation artifact. 7. `compare_repos` — compare exactly two repositories or npm packages using shared evidence semantics. 8. `check_change_risk` — prioritize review for a pull request, raw diff, or source-free changed-file facts; task proofs may be attached. Every MCP result returns canonical `structuredContent` plus JSON text for older clients. Preserve `agent.confidence`, `agent.evidence_gaps`, `agent.next_actions`, and evidence provenance. `live_fallback`, `not_analyzed`, or confidence `none` means limited or not verified, never safe. ## Exact npm proof loop Use `evaluate_dependency_change` before editing a manifest or lockfile. Supply the exact target version plus bounded facts such as package manager, Node version, direct/relevant-peer versions, script names, relative manifest/lock paths, and a lockfile SHA-256 receipt. Preserve the returned `verification_context` unchanged. After the approved change and local checks, call `verify_dependency_change` with the original context, resolved dependency changes, the new lockfile receipt, and exact command/exit-code receipts. RepoPilot checks those receipts for consistency but did not execute them; `receipt_trust` is `caller_asserted`. Repository evidence, version-specific npm/deps.dev evidence, project-snapshot claims, and caller-asserted local receipts are separate trust classes. A favourable recommendation means no blocking signal was found in supplied evidence. It does not prove that a package is safe, compatible with every runtime, free of malicious code, or ready for production. ## Task proof loop Before editing an unfamiliar repository, call `plan_repo_task` with the public repository, task, and full checked-out Git SHA. It returns ranked files, consumers, proof obligations, SHA relation, and an expiring contract using bounded deterministic matching without retaining raw task text. After editing, call `check_change_risk` with the contract, base/head SHAs, proof statuses, and source-free file facts when possible. The risk score is a deterministic change-shape heuristic, not a defect predictor or merge approval. ## REST APIs - API guide: https://repopilot.app/api-docs - `GET /api/v2/check?package=npm:express` — repository-level dependency evidence. - `GET /api/v2/check?repo=owner/repo` — repository-level evidence for non-npm ecosystems. - `POST /api/v1/dependency-change/evaluate` — exact npm evaluation. - `POST /api/v1/dependency-change/verify` — resolved-change and receipt verification. - `GET|POST /api/v1/onboard?repo_url=https://github.com/owner/repo` — full cached repository brief and artifacts. - `GET|POST /api/v1/change-risk` — pull-request, raw-diff, or structured-file change risk. Existing `/api/v1/check` callers retain legacy `go` / `caution` / `avoid` values. The v2 repository-level vocabulary is `proceed_with_review` / `review` / `avoid`. ## Verdict pages and badges Public cached repository verdict pages use `/r/{owner}/{repo}`. Verdicts are deterministic summaries of available maintenance, ownership, license, CI/test, and known-vulnerability evidence at analysis time. - **GO** — repository-level evidence supports proceeding to exact-version, compatibility, provenance, and local verification. It does not mean “safe to depend on.” - **WAIT** — concerns or incomplete evidence require review. - **AVOID** — material repository-level concerns require explicit approval and alternatives should be considered. Badge form: ```markdown [![RepoPilot verdict](https://repopilot.app/api/badge/{owner}/{repo})](https://repopilot.app/r/{owner}/{repo}) ``` ## Privacy and retention - RepoPilot analyzes public repositories; GitHub sign-in requests profile identity, not private-repository access. - Exact project snapshots, raw task text, raw diffs, command strings, proof output, manifest bodies, and lockfile bodies are not persisted. - The privacy-first local companion uses bounded npm/Git facts and sends relative paths/status/line counts instead of source or diff hunks by default. - Filenames and public `owner/repo` slugs are still metadata. Inspect the companion's `--dry-run` output and omit repository identity when needed. Privacy policy: https://repopilot.app/privacy ## Limits and failure semantics - Per-minute abuse controls may return `429` with `Retry-After`; do not loop. - Cold live repository fallback is globally capped; cached analyses and short fallback-cache hits continue to serve. - `503` means fresh analysis capacity is unavailable, not that a target passed. - Full briefs/artifacts may return `not_analyzed` until a human generates the cached analysis. - Unknown evidence stays unknown. Absence is claimed only when the relevant evidence source was complete. ## Contact hello@repopilot.app