Shipped in August: a hosted MCP server and a public price list

A hosted MCP server went live this month for read-only discovery from your agent. Plus the price list you can already curl, which deserves pointing at again.

All posts

One new thing reached production this month. The second entry below is not new, it has been live since the first of June, and it gets a mention here because almost nobody knows it exists.

Both replaced a conversation with an endpoint. Each entry ends with the command that proves it, so you do not have to believe the entry.

A hosted MCP server at mcp.aggregator.gg

Your AI agent can read your Aggregator catalog over the Model Context Protocol, without you running anything locally. Hosted MCP is read-only. An operator API key does not enable its action tools; configure callbacks in the cabinet and send authorised session requests from your backend through the HTTP API.

Point an MCP client at https://mcp.aggregator.gg/mcp. Transport is streamable HTTP. Authentication is a bearer token: the API key you already issue in the operator cabinet, sent as Authorization: Bearer <key>. The worker forwards that key to our core API and does not store it.

curl https://mcp.aggregator.gg/
{
  "name": "aggregator-mcp",
  "version": "0.1.0",
  "transport": "streamable-http",
  "endpoint": "/mcp",
  "documentation": "https://docs.aggregator.gg"
}

Call it without a key and it tells you exactly what it wants, which is the behaviour we want from every surface we run:

curl -X POST https://mcp.aggregator.gg/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
{
  "error": "unauthorized",
  "message": "Provide an Aggregator API key as 'Authorization: Bearer <key>'. Keys are issued in the operator cabinet; the Worker forwards them to Core and never stores them."
}

This is the first phase. It is stateless and it passes your key through on every call, which is the smallest thing that could work and the easiest thing to reason about when the question is who can reach your account.

The public price list at /v1/pricing, live since June

Operator pricing is one table in one database with one unauthenticated endpoint in front of it, and has been since 1 June.

curl https://api.aggregator.gg/v1/pricing

It returns every tier, the volume band each tier covers, the price per spin, the floor, and the per-call rate paid to game providers. No account, no key, no sales call.

It exists because the same prices used to live in three places on this website and had already drifted apart. Now there is one place to change a price and one place to read it. If our marketing copy and this endpoint ever disagree, the endpoint is correct.

There is more on what the numbers mean in How a spin is priced.

What is not in this entry

A few things landed in our repositories this month that are not listed above, because they are not yet doing anything for you in production. The demo booking widget on the landing page is the clearest example: the code is deployed, and it renders nothing until a scheduling link is configured, so it is not shipped.

We would rather run a short changelog than a long one that counts merges as releases.

Back to all posts