AuralisDocs

What MCP is

What the Model Context Protocol lets a client do against a workspace here.

The Model Context Protocol lets an AI client call tools in another system. This product exposes five tools at one endpoint, /mcp, so a client such as Claude can read and work the helpdesk queue on your behalf.

Five tools, and nothing else. The rest of the product is not reachable this way. See Limits for what that rules out.

The five tools

ToolWhat it doesRole needed
list_ticketsFilter and page the ticket queueviewer
get_ticketRead one ticket with its message timelineviewer
create_ticketOpen a new ticketeditor
reply_to_ticketPost a customer reply or an internal noteeditor
search_knowledge_baseSemantic search over the workspace knowledge basesviewer

Source: services/runtime/src/runtime/mcp/tools.py:422-541.

Every call acts inside one workspace

A connection authenticates once. A workspace is chosen per call, not per connection, because one account can belong to several workspaces.

Each tool takes an optional workspace_id. If you belong to exactly one workspace you can leave it out and the server uses that one. If you belong to several and name none, the call is refused and you are asked to name one. If you name a workspace you are not a member of, you get the same answer as naming one that does not exist.

Source: services/runtime/src/runtime/mcp/tools.py:132-166 and services/runtime/src/runtime/auth/workspaces.py:164-197.

It is the same product, not a copy of it

Each tool is a thin wrapper. It works out which workspace the call acts in, applies the same role check the equivalent HTTP route applies, binds the identity the database reads for row level security, and then calls the very same function the REST API calls. No query is written twice, so no rule can be enforced in one place and forgotten in the other.

Source: services/runtime/src/runtime/mcp/tools.py:1-10 and the five handlers at services/runtime/src/runtime/mcp/tools.py:249-409.

What is off by default

MCP is off unless an operator turns it on. A deployment that never opted in has no /mcp route at all.

Source: services/runtime/src/runtime/config.py:522 and services/runtime/src/runtime/main.py:254-261.

No public endpoint exists yet

Nothing is deployed. There is no public MCP host to connect to today. The connect procedure is written from the transport, the discovery documents and the authentication configuration, all of which are readable in source, but it has never been run against a live public deployment.

How these pages are kept honest

The MCP surface is invisible to the generated API reference, by construction: /mcp is registered as a plain route rather than a documented one (services/runtime/src/runtime/mcp/asgi.py:85-87), and the two discovery routes are excluded from the schema (services/runtime/src/runtime/mcp/well_known.py:62-68). Nothing generates these pages and nothing will catch them going stale.

So every behavioural statement in this section names the file and line it came from. Review trigger: any change under services/runtime/src/runtime/mcp/ requires these pages to be re-checked against source in the same change. It is a human gate, and it is weaker than the check that protects the REST reference.

On this page