API, CLI, MCP
Every surface runs the same open-source reader (source, npm). The CLI, moshcode and MCP run on your machine with your own model key; the API runs here.
CLI
bunx @profullstack/fineprint stripe.com # needs ANTHROPIC_API_KEY, OPENAI_API_KEY or OPENROUTER_API_KEY fineprint https://example.com/terms --as customer fineprint example.com --context "we will send customer PII through it" --json fineprint --file agreement.txt # pasted or extracted text fineprint example.com --remote # no key: use https://fineprint.agent.pit.world fineprint # interactive TUI
moshcode and cli-tools
/terms stripe.com # inside moshcode terms stripe.com --provider openrouter # cli-tools, keys from cli-tools config
MCP
claude mcp add fineprint -- bunx @profullstack/fineprint mcp
Tools: review_terms (domain or link), review_text (pasted text), find_policies (discovery only, no model). With no model key in the environment, review_terms uses this site.
HTTP API
POST https://fineprint.agent.pit.world/api/v1/reviews
{"target": "stripe.com", "perspective": "business", "context": "optional", "fresh": false}
headers (optional, bring your own key; never stored):
x-llm-provider: anthropic | openai | openrouter
x-llm-key: sk-…
x-llm-model: claude-opus-5-5
→ 202 {"id": "…", "status": "running", "url": "https://fineprint.agent.pit.world/r/…"} (200 with the result when cached)
GET https://fineprint.agent.pit.world/api/v1/reviews/{id} # poll until status is done or failed
GET https://fineprint.agent.pit.world/api/v1/reviews/{id}.md # the review as Markdown
GET https://fineprint.agent.pit.world/api/v1/find?target=stripe.com # which documents it would read (no model, free)
GET https://fineprint.agent.pit.world/api/v1/recent
perspective: customer, business, developer, vendor. Reviews without a plan are public and shared: the same domain from the same side is answered from cache for 7 days. Fresh reviews on the house key are limited per address per day; with your own key there is no limit.
fineprint 0.1.1