Public content

# For developers and AI agents

Read the same software facts and writing that people see on this website.

## Start here

- [llms.txt](<https://pyrosoft.pro/llms.txt>): a linked guide to the catalog and writing.
- [llms-full.txt](<https://pyrosoft.pro/llms-full.txt>): product and post markdown in one document.
- [OpenAPI 3.1 description](<https://pyrosoft.pro/openapi.json>): the public JSON endpoints.
- [Blog RSS feed](<https://pyrosoft.pro/blog/feed.xml>): guides and live journals, with update dates in the journal summaries.
- [Data use policy](<https://pyrosoft.pro/agents.txt>) and [crawler rules](<https://pyrosoft.pro/robots.txt>).

## Markdown

Add `.md` to a product or blog URL, or request the HTML address with `Accept: text/markdown`. The response varies on Accept. [Read Bourbon 26 as markdown](<https://pyrosoft.pro/software/bourbon-26.md>).

Indexes are at [/software.md](<https://pyrosoft.pro/software.md>) and [/blog.md](<https://pyrosoft.pro/blog.md>). Help and curriculum have markdown versions too. Development journals use work dates and actual updates, without an invented publication date.

## Public JSON API

[/api/v1/catalog.json](<https://pyrosoft.pro/api/v1/catalog.json>) lists products. Filter with `view` (software, soon or legacy), `platform`, `category`, `q` or `price` (free, paid or pwyw). A text query matches all its terms in public product text.

Read one product at [/api/v1/software/bourbon-26.json](<https://pyrosoft.pro/api/v1/software/bourbon-26.json>). Posts are listed at [/api/v1/blog.json](<https://pyrosoft.pro/api/v1/blog.json>), with optional category and series filters; individual posts use `/api/v1/blog/<slug>.json`.

These endpoints allow GET, HEAD and OPTIONS. Responses support ETags, public caching and cross-origin reads without credentials. Unknown resources return a stable JSON error. The [API description](<https://pyrosoft.pro/openapi.json>) gives the paths and schemas.

## Respect the boundary

These resources contain public content only. They cannot sign in, buy software, redeem keys, change accounts or perform owner actions. Use the product page’s linked site to buy or download software. Prices and availability are recorded in the catalog; confirm the current offer on that linked site. Legacy products are kept for reference and never include purchase or outbound links.

Caller cookies do not personalize these public responses. The public release does not offer account, library, checkout or owner endpoints.

## MCP

Connect a Streamable HTTP client to `https://pyrosoft.pro/mcp`. The [discovery document](<https://pyrosoft.pro/.well-known/mcp.json>) lists the endpoint and versions. These are public read-only tools: `search_software`, `get_software`, `compare_software`, `how_to_get`, `list_blog_posts`, `get_blog_post` and `get_site_info`. Resources use `pyrosoft://software/<slug>` and `pyrosoft://blog/<slug>` and contain the same markdown as the website.

The current 2026-07-28 protocol uses per-request metadata and `server/discover`. Each request needs matching version/method headers and `params._meta`; tool/resource calls also need `Mcp-Name`. Older 2025-11-25 and 2025-06-18 clients may initialize normally and send their negotiated version header afterwards. Responses are JSON, with no server session or GET event stream. The endpoint rejects other browser origins and never forwards cookies or makes remote requests. Request and tool quotas can return 429.

See the [official transport specification](<https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http>) for the full client header rules. A typical client configuration is:

`{"mcpServers":{"pyrosoft":{"type":"http","url":"https://pyrosoft.pro/mcp"}}}`

Configuration keys depend on your client. The discovery document is a PyroSoft resource guide; it does not claim a universal discovery-card standard.

## Example requests

Set `PYROSOFT_ORIGIN` to the origin you are browsing, then use:

`curl "$PYROSOFT_ORIGIN/api/v1/catalog.json?platform=macOS"
curl -H 'Accept: text/markdown' "$PYROSOFT_ORIGIN/software/bourbon-26"
curl -I "$PYROSOFT_ORIGIN/api/v1/software/bourbon-26.json"`
