omnichannel.cx API & agent developer docs

Everything on omnichannel.cx is public and readable by software. The API is read-only, with no keys, accounts or sandbox to set up. The one write action, sending an enquiry, always needs a human to complete verification. This page covers each surface. The machine-readable source of truth is the OpenAPI specification.

Conventions

  • Base URL https://omnichannel.cx. No authentication; CORS is open on public endpoints.
  • Every /api/*, /mcp and /ask response carries RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. A 429 adds Retry-After.
  • REST errors are JSON { error, code, hint }, never HTML.
  • Versioning: the surface is additive (API-Version: 1). Breaking changes ship under /api/v2/. Deprecations get Deprecation and Sunset headers at least 90 days ahead.

Search the site

Semantic and keyword search over every public page, with reranking. It returns ranked snippets and their source URLs. It is retrieval only and never generates answers.

GET /api/search?q=customer%20experience%20maturity&limit=5

{ "query": "customer experience maturity",
  "results": [{ "url": "https://omnichannel.cx/...", "snippet": "...", "score": 0.82 }] }

Read any page as Markdown

Request any page with Accept: text/markdown, or fetch its .md twin, e.g. /services.md. Each Markdown page opens with frontmatter giving its title, description, canonical URL and last-updated date. llms.txt lists every page.

MCP server

A read-only remote Model Context Protocol server over Streamable HTTP at https://omnichannel.cx/mcp. Its tools are search_site and get_page. There is no authentication. The server card is at /mcp/server-card.

{
  "mcpServers": {
    "omnichannel": { "type": "http", "url": "https://omnichannel.cx/mcp" }
  }
}

NLWeb

An NLWeb v0.55 /ask endpoint over the same index. It supports list mode only and never summarises. Set prefer.streaming for Server-Sent Events.

POST /ask
{ "query": { "text": "who helps with contact centre AI in Australia?" },
  "prefer": { "streaming": false } }

In-browser tools (WebMCP)

In browsers with WebMCP, every page registers search_site. The contact page also registers prepare_contact_enquiry, which fills in the form for the visitor to review. It never submits.

Contact enquiries (humans only)

POST /api/contact delivers an enquiry, but it needs a Cloudflare Turnstile token from a person completing the check on /contact. Agents can prepare the enquiry and a human submits it. Send an Idempotency-Key header (one UUID per enquiry) so a retry never sends it twice. A repeat within 24 hours replays the original ref.

Discovery documents