hasparus developer documentation
GET /api/profile.json returns the author's profile, canonical URL, and contact-page URL as JSON. GET /api/posts.json returns the public article index, newest first. Each entry has a title, publication date, description, canonical URL, and Markdown URL. Both endpoints are read-only and need no authentication.
/openapi.json is the OpenAPI 3.1 specification for both content endpoints and their response schemas. Unknown /api/ paths return HTTP 404 with an error object containing code, message, and hint. Unsupported methods on the content endpoints return HTTP 405 with an Allow header. /api/status and the signed /api/og image generator serve the site itself and aren't part of the public content API.
Send Accept: text/markdown to the homepage or a public article for Markdown at the same URL. Use Accept: text/html for HTML. Negotiated responses include Vary: Accept. You can also read the homepage at /index.md. Article Markdown and /llms-full.txt contain source text, which may include MDX components or imports. Read the HTML article to see interactive examples that the source alone can't show. Missing pages requested as Markdown return a Markdown explanation with HTTP 404.
Connect MCP clients to https://haspar.us/mcp using Streamable HTTP. The server is stateless, with list_posts and read_post tools and resources for the homepage, profile, agent guide, and developer docs. POST requests receive JSON responses. There is no GET SSE stream; GET returns HTTP 405. Send Accept: application/json, text/event-stream and Content-Type: application/json. Call initialize, then send notifications/initialized before calling tools. The server exposes only public, published content and needs no credentials.
The CLI lives in packages/cli. From a checkout, run node packages/cli/bin/hasparus.mjs profile, posts, or read refinement-types. profile and posts print JSON; read prints Markdown/MDX source. The npm package isn't published yet; run it from the checkout.