All releases

Categories, publishing, and a public docs API

Every doc can now have a category and be published to a public feed. The two built-in categories — feedback and release — work the same as any category you make up. Underneath, it's all one primitive: a doc with a type, an optional slug, and a publish state.

This unlocks a lot. The most obvious use is what we just shipped: simpleproduct.dev/blog is built entirely on the new public API — no special blog infrastructure, no separate database, just docs with category: "blog". You can do the same on your own site for a blog, knowledge base, public roadmap, case studies, RFCs, anything.

What's new

Categorize any doc

Open a doc, hit the … menu, choose a category. Free-form: type blog, changelog, case-studies, whatever fits. Categories normalize on save (Blog → blog) so Blog and blog are never two separate buckets.

Publish from the doc editor

The Publish button (in the toolbar) opens a popover where you set a slug, an excerpt, and toggle the publish state. Published docs are immediately reachable via the public API.

Public docs API

Three new endpoints, no auth required:

  • GET /api/v1/docs/public?type=<category>&workspace=<slug> — list published docs in a category
  • GET /api/v1/docs/public/<slug>?type=<category>&workspace=<slug> — single published doc by slug
  • GET /api/v1/docs/rss?type=<category>&workspace=<slug> — RSS feed for a category

Existing /api/v1/releases/public and /api/v1/releases/rss keep working unchanged.

Authenticated docs API now does everything

POST /api/v1/docs and PATCH /api/v1/docs/:id accept type, slug, excerpt, and publish (boolean shorthand for status). Pass null to any optional field to clear it.

MCP tools (@simple-product/mcp@0.1.14)

create_doc and update_doc accept type, slug, excerpt, and publish. Your coding agent can publish a doc into any category in one tool call. Update by running npx @simple-product/mcp@latest --install and restarting your MCP client.

Comments via MCP

create_comment is now a first-class tool. get_card / get_doc / get_feedback include the existing comment thread inline. Agents can read and post comments on behalf of the user.

How to use it

  1. Pick a category name. Anything URL-safe — blog, changelog, guides, etc.
  2. Set it on a doc via the … menu, fill in a slug + excerpt, click Publish.
  3. Read it back from /api/v1/docs/public?type=<your-category>&workspace=<your-workspace-slug>.
  4. Render however you want — your stack, your design.

If you want a head-start, the simpleproduct.dev/blog code is intentionally minimal and uses the same public endpoints any customer would. Same pattern works for any category.