Phoenix STS API documentation

The published content of phoenixsts.ie (pages, news and articles, categories and search) is available to software and AI agents through a read-only REST API and a Model Context Protocol (MCP) server. Neither needs sign-up or an API key.

Machine-readable files

Authentication and scopes

Everything described here is anonymous. Send no credentials. The scope the read operations fall under is declared so tools can request least privilege:

  • content:read: Read published pages, posts, categories and search results. Granted to anonymous callers.

Only published content is returned. Drafts, users, uploads of private material and the admin panel are not part of this API.

REST API

Base URL: https://phoenixsts.ie

  • GET /api/pages, GET /api/pages/{id}
  • GET /api/posts, GET /api/posts/{id}
  • GET /api/categories
  • GET /api/search

Example requests:

# the page with slug "fire-safety"
curl "https://phoenixsts.ie/api/pages?where[slug][equals]=fire-safety&depth=0"

# the five newest articles
curl "https://phoenixsts.ie/api/posts?limit=5&sort=-publishedAt&depth=0"

# search titles for "first aid"
curl "https://phoenixsts.ie/api/search?where[title][like]=first%20aid&limit=10"

Lists return docs, totalDocs, page, totalPages, hasNextPage and hasPrevPage. Full parameter and response schemas are in the OpenAPI document.

MCP server

Endpoint: https://phoenixsts.ie/mcp (Streamable HTTP, stateless, JSON responses). Tools: search_site, get_page, list_posts, get_post. Resources: phoenix://about and phoenix://llms-txt.

# Claude Code
claude mcp add --transport http phoenix-sts https://phoenixsts.ie/mcp

# raw request
curl -X POST https://phoenixsts.ie/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Rate limits

Anonymous REST requests are limited to 120 per 60 seconds per IP address, and MCP requests to 60 per 60 seconds. Every response carries RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (seconds) and RateLimit-Policy. When the budget is spent the API answers 429 with a Retry-After header; wait that many seconds.

Versioning and deprecation

The current API version is 1 (supported: 1). Every REST and MCP response carries an API-Version header. To pin the contract, send the same header on requests (API-Version: 1); an unsupported value returns 400 listing the supported versions. It is declared as a header parameter on every operation in the OpenAPI document.

  • Breaking changes (removed or renamed fields, changed meaning) ship as a new version that runs alongside the old one. Adding fields, operations or optional parameters is not a breaking change and does not bump the version.
  • A version is announced as deprecated at least 6 months before it stops working. From then on every response carries Deprecation (RFC 9745) and Sunset (RFC 8594) headers and a Link header with rel="deprecation" pointing here.
  • No version is currently deprecated.

Client libraries and sandbox

There is no separate SDK to install: generate a typed client in your language from the OpenAPI document, for example:

npx @openapitools/openapi-generator-cli generate \
  -i https://phoenixsts.ie/openapi.json -g typescript-fetch -o ./phoenix-sts-client

There is no sandbox because none is needed: every operation is read-only and anonymous, so you can call the production API freely within the rate limits. No account, trial or API key is required.

Questions

Email info@phoenixsts.ie or use the contact page.