Hosted versus workspace MCP
See MCP Servers for local servers. Use Connect Aiola through MCP for client setup.
URL and transport
OAuth discovery
The edge function exposes protected-resource metadata at the public URL’s well-known path:401 with a WWW-Authenticate: Bearer challenge containing the resource_metadata URL. The edge verifies the JWT issuer, authenticated audience, ES256 or RS256 signature, role, and UUID subject. OAuth client tokens must be demoted to the aiola_mcp role by the configured access-token hook.
Subscription access
Every tool call reads the account’s analytics-quota row before running. Access is granted when either condition is true:
Tier
gui_lifetime is explicitly excluded. A denied call returns the tool error Aiola subscription required — https://aiola.app/pricing.
Analytics tools that request analytics data also check the current usage period. When measured usage is greater than the finite quota, they return Aiola analytics quota exceeded — https://aiola.app/pricing. A failure to measure analytics usage fails open, while authentication, entitlement, ownership, and rate limiting still apply.
Project scope
list_projects merges project names found in project keys, analytics sites, app-log groups, and feedback. Other tools accept a case-insensitive project name.
Queries apply both the authenticated user ID and resolved project name, or rely on the authenticated row-level-security policy where the schema requires it.
Tool catalog
Write operations
The only writes are status changes.
Closing an App Log group sets
resolved_at to the current timestamp; every other status clears resolved_at. Both updates constrain the write by authenticated user and resolved project.
Redaction
get_app_log_events omits these top-level fields unless include_request_data is explicitly true:
eyJ… token fragments. Replacements use [redacted], and each event reports _redacted plus _redacted_nested_values.
Setting include_request_data: true returns the stored event rows without this MCP redaction pass and should be used only when the client needs that sensitive context.
Rate limiting
All tools share weighted limits per authenticated user.
If the minute limiter or its backing RPC fails, the tool returns
rate limited — try again in a minute. When the daily limit is exhausted, it returns daily Aiola MCP limit reached — resets within 24 hours.
Worker and edge architecture
authorization, content-type, accept, accept-encoding, mcp-session-id, mcp-protocol-version, last-event-id, and user-agent. Cookies and forwarding headers are dropped. The upstream timeout is 120000 ms, and upstream responses pass through so OAuth challenges and MCP headers survive.
The edge server is stateless (sessionIdGenerator is undefined), accepts CORS methods GET, POST, DELETE, OPTIONS, and exposes a GET /health response of { "ok": true }.
Client compatibility
The in-app compatibility list contains exactly these clients:
Compatibility means the app presents these as examples for Streamable HTTP plus OAuth 2.1. Menu names and connection steps live in Connect Aiola through MCP, where they can be maintained independently of this server contract.

