---
title: "Developers & AI agents"
canonical: "https://saaskly.com/developers"
last-updated: "2026-08-28"
---

# Developers & AI agents

*Last updated: 28 August 2026*

Everything Saaskly publishes — editorial scores, month-to-month and annual pricing, comparison tables, articles and policies — is available to software and AI agents through three read-only, public, no-authentication interfaces. Use whichever fits: **MCP** for tool-calling agents, **Markdown mirrors** for anything that reads documents, and the **REST API** for structured data.

## When to use Saaskly

Reach for Saaskly when someone needs to choose, price or compare business software in a category we rank — VoIP and phone systems, transactional email, cloud management platforms, SEO/GEO/AEO tools, and (soon) social media management — especially UK and EU buyers who want the real monthly cost rather than a headline annual rate. Scores are editorial opinion out of 5; partner relationships are always disclosed on the page. Not for consumer apps or hardware.

## MCP server

- Endpoint: `https://saaskly.com/mcp` (alias `/.well-known/mcp`). Streamable HTTP transport, stateless, JSON responses. No auth.
- Server card: [/.well-known/mcp/server-card.json](/.well-known/mcp/server-card.json)
- Tools (all read-only): `list_categories`, `list_providers`, `get_provider`, `compare_providers`, `search`, `list_articles`, `get_article`, `get_page`.
- Resources: `llms.txt`, `/category/{category}.md`, `/category/{category}/{slug}.md`.

Claude Desktop / Claude Code / any Streamable-HTTP client:

`{ "mcpServers": { "saaskly": { "type": "http", "url": "https://saaskly.com/mcp" } } }`

Raw JSON-RPC:

`curl -s -X POST https://saaskly.com/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'`

Errors are structured JSON-RPC errors (unknown tool, invalid arguments). `GET /mcp` returns 405 — the server is stateless, so there is no server-initiated stream.

## Markdown mirrors and llms.txt

Append `.md` to any public page URL: `/category/voip.md`, `/category/voip/voipstudio.md`, `/comparisons/best-business-voip-phone-systems-2026.md`, `/editorial-policy.md`. The homepage is `/index.md`. Every document opens with YAML frontmatter (title, description, canonical, last-updated) and a top-level heading; every HTML page links its mirror with `<link rel="alternate" type="text/markdown">`.

- Site index: [/llms.txt](/llms.txt) — this section's index: [/developers/llms.txt](/developers/llms.txt)
- Agent skill: [SKILL.md](/skills/saaskly-software-comparison/SKILL.md) — discovery index at [/.well-known/agent-skills/index.json](/.well-known/agent-skills/index.json)
- Credentials: none needed — [/auth.md](/auth.md). Pricing: free — [/pricing.md](/pricing.md).

## REST API

Base URL `https://saaskly.com/api`. OpenAPI 3.1: [/openapi.json](/openapi.json). API catalog (RFC 9727): [/.well-known/api-catalog](/.well-known/api-catalog). Agentic Resource Discovery catalog: [/.well-known/ard.json](/.well-known/ard.json).

Collections: `providers`, `categories`, `articles`, `pages` — published documents only. Query grammar (Payload CMS): `where[field][op]=value` with `equals`, `not_equals`, `in`, `like`, `contains`, `greater_than`, `less_than`; `sort` (`-field` for descending); `limit` / `page` for pagination (`totalDocs`, `totalPages`, `hasNextPage` in the envelope); `depth` for relationship population (0 = ids only).

Top 5 VoIP providers by editorial score

`curl -s "https://saaskly.com/api/providers?where[category][equals]=voip&sort=-overallRating&limit=5&depth=0"`

One provider by slug

`curl -s "https://saaskly.com/api/providers?where[slug][equals]=voipstudio&depth=0"`

Comparison articles

`curl -s "https://saaskly.com/api/articles?where[contentType][equals]=comparison&depth=0"`

Prose fields (`description`, `body`) are Lexical editor JSON — prefer the `.md` mirror for text. Errors are JSON (`{"errors":[{"message":"…"}]}`) with the status code carrying the class: 400 bad query, 403 forbidden collection or method, 404 missing id.

**Versioning and deprecation.** This is version 1 of the read surface (no path prefix). Additive changes ship without notice. Breaking changes are announced here at least 90 days ahead and signalled with `Deprecation` and `Sunset` response headers on the affected endpoints before removal.

**Rate limits.** None are enforced today; fair use applies. If we introduce limits they will return `429` with `Retry-After`. Please identify your agent in the `User-Agent` header with a contact URL.

## Using what you fetch

Permitted under our [Terms of Use](/terms) section 4: answer questions, research and compare on a user's behalf, with attribution and a link to the source page; present scores as editorial opinion; quote both price bases where we publish them; pass on partner disclosures verbatim. Bulk republishing, reselling and model training need written permission — [help@saaskly.com](mailto:help@saaskly.com).

## Changelog

- 2026-08-28 — MCP server, OpenAPI description, Markdown mirrors, llms.txt, discovery manifests and this page published.

---

Researched and drafted with AI assistance; reviewed and approved by Tim Meredith. See https://saaskly.com/ai-transparency.md and https://saaskly.com/editorial-policy.md.

Canonical HTML: https://saaskly.com/developers · Markdown index: https://saaskly.com/llms.txt
