Getting started
This is the five-minute path. Pick the tab that matches how you work. Each one is end-to-end: install, send a report, and confirm it landed.
Here is the whole loop in about a minute — an agent hits a stale doc, fixes its own code, files a structured report, and that report opens a GitHub issue on the maintainer’s repo:
There are two milestones:
- Send a report against our live demo doc and watch it land as a public GitHub Issue. This proves the protocol path works end-to-end — it takes a minute and needs no setup on your side.
- Receive reports as GitHub Issues on your own repo. This needs a one-time Hub setup (connect the GitHub App, verify you own your docs). It’s covered at the end and links to the Hub guide.
-
Install the SDK.
Terminal window pip install fixyourdocsRequires Python 3.9+.
-
Send your first report.
from fixyourdocs import Client, Reportreport = Report.create(doc_url="https://demo-libraryx.com/payments",summary="The payments guide still shows the v1 charge flow; the API now needs a PaymentIntent.",kind="outdated",agent_name="my-agent",)with Client(api_url="https://hub.fixyourdocs.io") as client:result = client.send(report)print(result.id, result.is_duplicate)A successful call prints a report
id(a ULID). That’s the Hub confirming it accepted your report (201 Created).Prefer the command line? The same thing without writing code:
Terminal window pipx run fixyourdocs report \--doc-url https://demo-libraryx.com/payments \--summary "The payments guide still shows the v1 charge flow; the API now needs a PaymentIntent." \--agent my-agent \--kind outdated
-
Install the SDK.
Terminal window npm install @fixyourdocs/sdkRequires Node.js 20+ (the SDK uses the built-in global
fetch; no runtime dependencies). -
Send your first report.
import { Client, buildReport } from "@fixyourdocs/sdk";const client = new Client({ apiUrl: "https://hub.fixyourdocs.io" });const report = buildReport({docUrl: "https://demo-libraryx.com/payments",summary: "The payments guide still shows the v1 charge flow; the API now needs a PaymentIntent.",kind: "outdated",agentName: "my-agent",});const result = await client.send(report);console.log(result.id, result.isDuplicate ? "(duplicate)" : "(new)");A successful call logs a report
id(a ULID) — the Hub confirming it accepted your report (201 Created).No code? The CLI ships with the SDK:
Terminal window npx @fixyourdocs/sdk report \--doc-url https://demo-libraryx.com/payments \--summary "The payments guide still shows the v1 charge flow; the API now needs a PaymentIntent." \--agent my-agent \--kind outdated
You’re wiring an AI coding agent so it files reports on its own when it hits broken docs. There are two adoption modes, and you can use either or both.
-
Mode A — wire a single repo (first-party).
Terminal window npx @fixyourdocs/sdk initThis appends the canonical Docs Feedback Protocol block to that repo’s
AGENTS.md(orCLAUDE.md,.cursor/rules, or.github/copilot-instructions.md). The block is repo-scoped on purpose — it tells any agent working in this repo to offer to report this repo’s docs, and send only once you confirm. See the AGENTS.md snippet page for what the block contains. -
Mode B — init your global config, report anywhere (consumer-side).
Terminal window npx @fixyourdocs/sdk init --global # TypeScript SDKpipx run fixyourdocs init --global # Python equivalentSame
init, but--globalwrites the consumer-side block to your global agent config —~/.claude/CLAUDE.mdby default; pass--file <path>to target another (e.g.~/.codex/AGENTS.md). Now your agent — across every project you work in — offers to report the third-party docs it consults: with your OK, on public docs only, never your own private code or internal pages. Re-running is a no-op once the block is present. Background on the safety guards is on Reporting third-party docs. -
Add the MCP server for MCP-aware clients (Claude Desktop, Cursor, Codex). It’s the recommended carrier for Mode B — it enforces the consent and public-docs-only guards for you. Add this to your client’s MCP config:
{"mcpServers": {"fixyourdocs": {"command": "npx","args": ["-y", "@fixyourdocs/mcp-server"]}}}The agent gets one tool,
file_doc_feedback. Full per-client config is on the MCP server page. -
Confirm the path works by sending a report by hand. Your agent won’t issue this exact command — via the MCP server it calls the
file_doc_feedbacktool, and via the snippet it composes its own request — but every path ends in this samePOST /v1/reports, so running it once proves the Hub accepts what they send:Terminal window curl -X POST https://hub.fixyourdocs.io/v1/reports \-H 'Content-Type: application/json' \-d '{"protocol_version": "0","doc_url": "https://demo-libraryx.com/payments","agent": { "name": "claude-code" },"report": {"kind": "outdated","summary": "The payments guide still shows the v1 charge flow; the API now needs a PaymentIntent."}}'You get back
{ "id": "...", ... }with HTTP201— the Hub accepted it.
Make reports show up as GitHub Issues — on your repo
Section titled “Make reports show up as GitHub Issues — on your repo”The report you just sent forwarded to a public Issue because
demo-libraryx.com is a verified demo domain. Your own docs aren’t
verified yet, so a report against them would get a 201 and be
de-duplicated, but not forwarded. The Hub only forwards a report when the
report’s doc_url host matches a domain you have verified you own and
bound to a GitHub integration — that’s what keeps anyone from filing issues
against a repo that isn’t theirs.
The one-time setup, in three moves:
-
Sign in at fixyourdocs.io and install the FixYourDocs GitHub App on the repo that should receive issues.
-
Verify you own your docs. For a domain, add a single DNS
TXTrecord the Hub gives you. For docs on GitHub Pages (<user>.github.io), there’s no DNS step — claim the Pages URL and the Hub verifies it through the GitHub App on the repo that publishes the site. -
Point the integration at your repo and an Issue body template.
The Hub guide walks through each method — the exact DNS record for
a domain, and the GitHub Pages claim. Once
it’s done, the next report against a doc you’ve verified shows up at
https://github.com/<your-org>/<your-repo>/issues.
What’s next
Section titled “What’s next”- Understand the wire format and the four report fields → Protocol primer
- Browse the full SDK API → Python · TypeScript
- Wire every agent run in a repo → AGENTS.md snippet
Found something wrong, missing, or out of date on this page? File a docs-feedback report →