llms.txt
+131 −7
https://graftfork.com/llms.txt
− > graftfork (Graft, at graftfork.com) rebuilds programs blind from their duramen records and keeps forks current on upstream releases.− graftfork is paused for new sign-ups. Existing tokens and connected apps keep working through the HTTP API and the MCP server. The rest of the site answers 503 until it opens.− - MCP server: https://graftfork.com/mcp (Streamable HTTP). Send a personal API token as "Authorization: Bearer graft_...", or connect with OAuth.− - HTTP API: https://graftfork.com/api/v1. Its OpenAPI description is public: https://graftfork.com/api/v1/openapi.json− - OAuth metadata: https://graftfork.com/.well-known/oauth-protected-resource (MCP) and https://graftfork.com/.well-known/oauth-protected-resource/api/v1 (HTTP API)− - Status: https://graftfork.com/api/status− - Support: support@graftfork.com (email only)+ > graftfork (Graft, at graftfork.com) does two things. It rebuilds a program blind from its duramen record: the requirements, worked examples and, often, a small reference model of the program you can run, called the oracle. The builder never sees the existing code, and Graft keeps a build only if every case passes and, when the record has an oracle, the build agrees with the oracle on held-out requests. Every finished rebuild gets a signed record anyone holding it can check (`npx graftfork veri+ Agents can also start at graftfork.ai, the agent front door: https://graftfork.ai/mcp is the same MCP server and https://graftfork.ai/api/v1 the same API, with the same tokens.+ Without any token, an agent can try a public fork (see "Try without an account"). The MCP server and the HTTP API need a token, sent as `Authorization: Bearer <token>`. There are three ways to get one: a personal API token (graft_...) a person makes at https://graftfork.com/app#settings and gives to the agent; a token from OAuth, which a person allows on a consent page (see "Connecting with OAuth" below); a token an agent with a wallet buys for itself, with no person (see "Agent accounts" below)+ Tokens have scopes: read: see your copies, syncs, reports, waiting conflicts and usage; sync: connect or disconnect a repository, start a sync, check, dependency upgrade or upstream build, connect, set or rebuild a spec or ask for a new spec report, start, edit, check, rebuild or discard a change order, revert a move, set a copy's desired state, add or remove a webhook, and track an upstream pull request or ask for Graft's reviewer (rebuilds and paid reports spend agent work); resolve: hand in a+ Nothing an agent sends can move a copy. A resolution is stored, Graft syncs again with it, and the copy moves only if every change lands and the tests pass. By default Graft writes nothing to a repository: it keeps the moved branch, graft/<release>, for the owner to take.+ ## What costs money+ - Free, with no account: trying a public fork (POST https://graftfork.com/api/try), reading this file, https://graftfork.com/pricing.json, the OpenAPI description and https://graftfork.com/api/status.+ - Within the plan's monthly counts, at no extra cost: connecting copies, syncs, change checks, reading results and taking moves; a spec's free grade (GET /api/v1/regen/{id}/report) and its signed records.+ - Agent work, which spends money: Graft's agent resolving a conflict, fixing a dependency upgrade that breaks the tests, a rebuild from a spec, a paid spec report and the hosted drafter. Premium includes $6 of it a month (up to $1.25 a sync, no overage); the free plan gets its first conflict resolved free once. Give each run a ceiling with max_usd: if it could cost more, the answer is price_quote and nothing is spent.+ - A person's own Anthropic API key, if they save one, is billed by Anthropic, not graftfork.+ - Agent accounts: 12 USD in USDC for 30 days of Premium, and top-ups at 10 USD (see "Agent accounts").+ ## Try without an account+ - `POST https://graftfork.com/api/try` with `Content-Type: application/json` and `{"repo": "owner/name", "upstream": "owner/name (optional)", "base": "release tag (optional)"}`. No token. It runs one real sync of a public GitHub fork onto upstream's newest release in a short-lived sandbox: it never pushes and runs no agent.+ - The 201 answer has `id`, `statusUrl` (also the Location header), `resultUrl` and `pollSeconds`. Poll `GET https://graftfork.com/api/try/{id}` until `status` is done, failed or error. `https://graftfork.com/t/{id}` is the result page to share.+ - Limits: 10 tries a day per network address (people on one network share them), one running at a time, 10 minutes each. A result for the same fork, base and release is reused for 24 hours (`cached: true`). Results are kept for 30 days.+ ## MCP server+ - Endpoint: https://graftfork.com/mcp (Streamable HTTP, stateless; protocol revisions 2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26). Server name: graftfork.+ - [Server Card](https://graftfork.com/mcp/server-card): how to connect, before connecting. Registry name: com.graftfork/graftfork.+ - Add it to Claude Code: `claude mcp add --transport http graftfork https://graftfork.com/mcp` (Claude Code opens a browser for OAuth), or with a token: `claude mcp add --transport http graftfork https://graftfork.com/mcp --header "Authorization: Bearer <token>"`+ - Every tool with its input schema: https://graftfork.com/llms-full.txt+ Tools (a token sees the ones its scopes allow):+ - `track_change` (sync): Register a GitHub repository whose changes to an open-source project Graft keeps on each upstream release.+ - `list_copies` (read): Every copy, one line each, with its last sync and what waits.+ - `status` (read): One copy, desired beside observed.+ - `sync_now` (sync): Sync one copy onto its newest allowed release now.+ - `set_copy` (sync): Write a copy's desired state; only the fields you give change.+ - `take_move` (read): A one-hour link to a move or a kept rebuild (git bundle) and the commands that fetch it into the user's clone.+ - `revert_move` (sync): Undo the move a copy is on now, back to the release before it.+ - `send_upstream` (read): One carried change and its reason, as pull request text.+ - `build_upstream` (sync): Build graft/upstream/<change>: only this change on the copy's release, tested.+ - `upstream_status` (read): One upstream build: status, test verdict, pull request text, one-hour bundle and patch links, and the tracked pull request's state.+ - `track_upstream_pr` (sync): Record the pull request the user opened upstream for a built change.+ - `explain_stop` (read): Why a copy's last sync didn't move it, and the next action: tools to resolve with, a question for the user, or something only the user can do.+ - `list_pending_conflicts` (read): Conflicting files to resolve and questions only the user decides.+ - `get_conflict` (read): One conflicting file: base, ours, theirs, and the change's recorded reason (and its intent tests, when the commit named any); or a question's options.+ - `submit_resolution` (resolve): Hand in the WHOLE resolved file for one conflict, or delete: true.+ - `answer_question` (resolve): Answer a sync's question with the option (1-based) the user picked; show them the question first.+ - `check_change` (sync): Run the project's tests on a change and its base in Graft's sandbox: pass, fail (new failures by name) or could_not_run.+ - `check_status` (read): One change check: outcome, why, new failures, the base's own failures, and test output tails.+ - `upgrade_dependency` (sync): Upgrade one npm or Python dependency on graft/upgrade/<name>-<version>, delivered only if no test newly fails.
Showing the first 40 of each.