# ottobib > Give it an ISBN, get a formatted citation. Five styles: MLA, APA, Chicago, Wikipedia, > and BibTeX. All five in one request. Free access, no account or key. ## Use JSON, not the HTML One request, one answer, a stable documented shape. Parsing the HTML works and is strictly more expensive for both of us. - [Machine-readable spec](https://www.ottobib.com/.well-known/openapi.json) - Any citation: `https://www.ottobib.com/isbn/{isbn}` with `Accept: application/json` - One style: `https://www.ottobib.com/isbn/{isbn}/{mla|apa|chicago|wp|bibtex}.json` - ISBN-10, ISBN-13 and hyphenated forms all resolve; a bad check digit returns 400 with a reason, and an unknown book returns 200 with `found: false`. ## Where the data comes from Requests read an immutable local publication of prepared citations. Public misses do not synchronously query vendors. A 200 response with found:false ends the immediate lookup attempt; it does not prove the book does not exist. Temporary failures (503) carry Retry-After; follow it. 429 also carries retry guidance. Current per-client limit: 50 requests/second with burst 100. Limit responses use 429 and Retry-After. lookup=local and lookup=best-effort both read the same publication. One JSON request includes normalized ISBN identity, all five styles, and available quality and uncertainty fields. - All styles: `https://www.ottobib.com/isbn/9780226458113.json` - [Crawler policy](https://www.ottobib.com/robots.txt) ## MCP There is a Model Context Protocol server, for clients that speak MCP natively. It is a stdio shim over the JSON API above and needs no key. If you are already able to make an HTTP request, the API is simpler and you do not need this. - Source, standard library only, nothing to trust but what you read: `curl -O https://www.ottobib.com/ottobib-mcp.go && go build ottobib-mcp.go` - One tool, `cite_isbn`: takes an `isbn` and an optional `style`.