Skip to main content

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. The server has 116 tools. You can work with tickets, knowledge, users, departments, runbooks, automation tools, access rules, and organization settings. See Available tools for the full list. 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:
Copy your organization’s specific URL from Settings → Integrations → MCP in the dashboard. Both authentication methods below use the same URL.
1

Add the MCP server to your client

Most MCP clients only need the server URL — they handle registration and the consent flow automatically.
Edit your Claude Desktop config file:
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
Replace 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.
2

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 and review the scopes the client is requesting. Clear the checkbox next to a scope to leave it out of the grant, then click Allow.The scopes you approve at this screen bound that specific client’s access — they don’t change your overall account permissions.
3

Use the tools

Risotto’s tools now appear in the client’s tool picker. The access token issued at consent is refreshed automatically; you won’t be re-prompted unless you revoke the client or the refresh window lapses.

Available scopes

OAuth clients request scopes at consent time. The same scope vocabulary applies to API keys. A scope grants the tools listed under it in Available tools.
Follow least privilege. For a read-only assistant, approve tickets:read, knowledge:read, users:read, departments:read, runbooks:read, and tools:read. Add write or execute scopes only when a workflow needs them.
Ticket access via MCP respects the authenticated user’s department membership and role, the same as the dashboard and chat — a tickets:read scope doesn’t grant visibility into tickets outside the departments that user belongs to.

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.
Revoking an OAuth client only affects that one client. Other authorized clients keep working.

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.
1

Issue a key

In the dashboard, go to Settings → Integrations → Credential Vault. In the Risotto API Keys section, click Create Key.Give it a recognizable name like Onboarding bot — production so you can revoke a single caller’s access later.
2

Select scopes

Grant only the scopes the caller needs. See the scope reference above.
3

Copy the key

The key starts with rso_live_. Copy it immediately — you will not be able to see it again. If you lose it, revoke it and issue a new one.
Send the key in an Authorization: Bearer header to the same MCP server URL from your dashboard. The MCP endpoint does not accept the X-API-Key header that the REST API accepts.
This returns every tool the server registers, with its input schema. The list is the same for every credential. Risotto checks the scope when you call a tool, not when you list tools.

Available tools

The server registers 116 tools. Each tool needs one scope. tools/list returns every tool. A call to a tool outside the credential’s scopes fails with a missing-scope error. Tool names below are the values you pass in tools/call. The dashboard Assistant is built on the same tools.
Grant tools:execute only to a key whose holder may approve every tool it can reach. execute_tool runs the tool at once, also when the tool’s approval setting is Required in the dashboard. execute_tool needs an API key credential. A call from an OAuth client fails.
Five tools collect secrets on a secure card in the dashboard Assistant: request_tool_credentials, request_custom_api_credentials, request_external_mcp_credentials, request_external_mcp_authorization, and request_okta_credentials. From an external MCP client they only report the current state. Enter the secret in the dashboard instead. ingest_attached_file reads a file uploaded in the dashboard Assistant and has no use from an external client.
The set of tools grows as Risotto adds capabilities. Call tools/list against your endpoint to see the current list with input schemas.

Troubleshooting

The bearer token or API key is missing, malformed, expired, or revoked.
  • OAuth: the client should refresh its token automatically. If it doesn’t, remove and re-add the MCP server in the client to trigger a fresh consent flow.
  • API key: confirm the value starts with rso_live_ and was copied in full, and that the key hasn’t been revoked in the dashboard.
  • The WWW-Authenticate response header points to the OAuth discovery document — most clients use this automatically to recover. If you’re building a custom client, follow that pointer.
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.
You’ve hit Risotto’s rate limit. /mcp requests are throttled per credential at 1,000 requests per hour by default, 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.
  • Restart the client after editing its config file — most clients only read MCP config at startup.
  • Run the curl snippet above to confirm the endpoint is reachable.
  • tools/list returns every tool, whatever the credential’s scopes. If a tool call fails instead, check the scope error above.