Documentation Index
Fetch the complete documentation index at: https://docs.tryrisotto.com/llms.txt
Use this file to discover all available pages before exploring further.
Risotto MCP Server
Risotto exposes a Model Context Protocol server so MCP-compatible clients — Claude Desktop, Cursor, ChatGPT, and custom agents — can call into your Risotto workspace. You can look up tickets, search indexed knowledge, find users and departments, and trigger runbook tools. Two authentication methods are supported:- OAuth 2.1 (recommended) — interactive clients run a standard browser-based authorization flow. Each user signs in with their own Risotto identity, so tool calls are attributed and audited per-person. This is the right choice for Claude Desktop, Cursor, the MCP Inspector, and any client that ships a built-in OAuth UI.
- API key — a long-lived
rso_live_…key sent as a request header. Suited to headless scripts, CI, and other callers that can’t drive a browser-based consent flow.
OAuth clients self-register with Risotto the first time they connect — there
is no “create OAuth client” step in the dashboard. You only need the server
URL.
Prerequisites
- A Risotto account.
- An MCP-compatible client. OAuth requires a client that supports OAuth 2.1 + Dynamic Client Registration (Claude Desktop, recent Cursor, MCP Inspector, or any spec-compliant client).
Find your MCP server URL
Each Risotto organization has its own MCP server URL of the form:Connect with OAuth (recommended)
Add the MCP server to your client
Most MCP clients only need the server URL — they handle registration and the consent flow automatically.
- Claude Desktop
- Cursor
- MCP Inspector
Edit your Claude Desktop config file:Replace
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
YOUR_MCP_SERVER_URL with the URL from your dashboard. No client ID, client secret, or token URL is needed — Claude Desktop discovers everything from the server.Restart Claude Desktop after saving.Sign in and grant scopes
The first time the client connects, a browser tab opens to a Risotto consent screen. Sign in with the same account you use for the dashboard, review the scopes the client is requesting, and click Allow.The scopes you approve at this screen bound that specific client’s access — they don’t change your overall account permissions.
Available scopes
OAuth clients request scopes at consent time. The same scope vocabulary applies to API keys.| Scope | Grants |
|---|---|
tickets:read | Listing and reading tickets and their comments |
tickets:write | Creating, updating, resolving, escalating tickets and adding comments |
knowledge:read | Searching indexed knowledge |
users:read | Looking up users and user profiles |
departments:read | Listing departments |
tools:read | Listing runbook tools |
tools:execute | Executing runbook tools that are not approval-gated |
Manage authorized clients
From Settings → Integrations → MCP in the dashboard you can:- See every OAuth client that has registered against your organization, including the IP it was registered from and when it last made a request.
- Revoke a client — invalidates all of its tokens immediately. The client will be prompted to sign in again on its next request.
Connect with an API key
API keys are the right choice when the caller can’t run a browser — for example, a CI job or a server-side automation.Issue a key
In the dashboard, go to Settings → API Keys and click Create API Key.Give it a recognizable name like
Onboarding bot — production so you can revoke a single caller’s access later.Select scopes
Grant only the scopes the caller needs. See the scope reference above.
Authorization: Bearer header (or the equivalent X-API-Key header) to the same MCP server URL from your dashboard:
Available capabilities
The MCP server exposes Risotto capabilities in these areas:- Tickets — list, read, create, update, comment on, resolve, and escalate tickets
- Knowledge — search your indexed knowledge base
- Users & departments — find users, look up profiles, list departments
- Runbook tools — list available runbook tools and execute non-approval-gated ones
tools/list against the endpoint.
Troubleshooting
401 Unauthorized
401 Unauthorized
Consent screen redirects fail or loops
Consent screen redirects fail or loops
Risotto’s Dynamic Client Registration only accepts loopback redirect URIs (
http://localhost:<port>/...) per RFC 8252 §7.3. This is the default for every spec-compliant desktop client.If you’re building a custom client, ensure your redirect URI is a localhost loopback. Public-internet redirects are rejected at registration time.Tool call returns a missing scope error
Tool call returns a missing scope error
Scope failures come back as a successful JSON-RPC response whose
result.isError is true, with a message naming the missing scope (for
example, tickets:read).- OAuth: revoke the client in the dashboard and reconnect — the consent screen lets you approve the additional scope.
- API key: add the scope on the key in the dashboard, or issue a new key with the correct scopes.
429 Too Many Requests
429 Too Many Requests
You’ve hit Risotto’s rate limit.
/mcp requests are throttled per credential, and OAuth token issuance is throttled per client.The response includes Retry-After and X-RateLimit-* headers showing the reset window. Back off until the window resets, or contact support if you consistently need higher limits.Tools don't appear in the client
Tools don't appear in the client
- Restart the client after editing its config file — most clients only read MCP config at startup.
- Run the
curlsnippet above to confirm the endpoint is reachable. - If
tools/listreturns an empty list, the credential has no scopes granted. For API keys, add at leasttools:readplus whichever resource scopes you want to use. For OAuth, revoke the client and reconnect to approve scopes.