Skip to main content
Glama
aimedialab

Risha.ai MCP Server

Official
by aimedialab

Risha.ai MCP Server

A Model Context Protocol (MCP) server for the Risha.ai API.

This server lets MCP clients such as Codex, Claude Code, and Claude Desktop discover Risha API operations, authenticate with email/password, inspect capabilities, check credit balance and create generation requests.

Features

  • Email/password authentication using Risha /auth/login/

  • Automatic login at MCP startup

  • Automatic startup context loading:

    • current user

    • active capabilities

    • credit wallet / balance

  • Generic Swagger-backed API caller for all Risha operations

  • Convenience generation helpers:

    • risha_generate_image

    • risha_create_generation

  • Automatic polling for generation completion

Related MCP server: litellm-mcp

Requirements

  • Node.js 18+

  • A valid Risha.ai account (www.risha.ai)

  • An MCP-capable client, for example:

    • Codex

    • Claude Code

    • Claude Desktop

Install

git clone https://github.com/aimedialab/risha-mcp-server.git
cd risha-mcp-server
npm install

Environment variables

Required for email/password login:

RISHA_EMAIL="you@example.com"
RISHA_PASSWORD="your-password"

Optional:

RISHA_API_BASE_URL="https://adminxcore-api.risha.ai/api"

Token-based auth is also supported, but email/password is the recommended flow:

RISHA_API_TOKEN="your-access-token"
RISHA_REFRESH_TOKEN="your-refresh-token"

Never commit real credentials. Put them in your MCP client config or a local .env file. .env is ignored by git.

Run manually

RISHA_EMAIL="you@example.com" RISHA_PASSWORD="your-password" npm start

Expected startup log:

[risha-mcp] logged in, loaded 32 capabilities, credit balance: 72621

An MCP stdio server normally waits silently after startup. That is expected.

Available MCP tools

risha_api_info

Shows API metadata, authentication mode, startup status, capabilities count, credit balance, and Swagger tag list.

risha_startup_state

Shows the context loaded at startup:

  • login state

  • current user

  • capabilities count

  • credit balance

  • startup errors, if any

risha_capabilities

Returns the active capabilities retrieved at startup.

Input example:

{
  "filter": "image",
  "limit": 20
}

risha_credit_balance

Returns credit balance, wallet, summary, and user wallet data.

risha_refresh_context

Logs in again and refreshes current user, capabilities, and credit data.

risha_login

Manually logs in with RISHA_EMAIL and RISHA_PASSWORD and caches the JWT for the current MCP session.

risha_list_operations

Searches all Swagger operations.

Input example:

{
  "filter": "generation",
  "limit": 20
}

risha_get_operation

Returns schema details for one operation.

Input example:

{
  "operationId": "generation-requests_create"
}

risha_call

Generic caller for any Swagger operation.

Input example:

{
  "operationId": "auth_me"
}

Generation request example:

{
  "operationId": "generation-requests_create",
  "body": {
    "capability": 21,
    "title": "MCP smoke test",
    "prompt_data": {
      "prompt": "a red apple on a white table",
      "resolution": "0.5k",
      "aspect_ratio": "1:1"
    }
  }
}

risha_create_generation

Creates any generation request and optionally polls until it reaches a terminal state.

Input example:

{
  "capability": 21,
  "title": "MCP image test",
  "prompt_data": {
    "prompt": "a red apple on a white table",
    "resolution": "0.5k",
    "aspect_ratio": "1:1"
  },
  "wait": true,
  "timeoutSeconds": 300,
  "pollSeconds": 5
}

risha_generate_image

Convenience text-to-image tool. Defaults to capability 21, 0.5k, 1:1.

Input example:

{
  "prompt": "a cinematic photo of a red apple on a white table",
  "resolution": "0.5k",
  "aspect_ratio": "1:1",
  "timeoutSeconds": 300,
  "pollSeconds": 5
}

risha_resolve_media_url

Converts a private authenticated Risha media URL into a signed public CDN URL.

Input example:

{
  "url": "https://adminxcore-api.risha.ai/api/media/asset/4c6cbe1c-7696-4c13-8790-6456e5d64698/?f=webp&h=600&q=85&w=600"
}

Use with Codex

Codex reads MCP servers from ~/.codex/config.toml.

Add this block:

[mcp_servers.risha]
command = "node"
args = ["/absolute/path/to/risha-mcp-server/src/index.js"]
startup_timeout_sec = 60

[mcp_servers.risha.env]
RISHA_EMAIL = "you@example.com"
RISHA_PASSWORD = "your-password"

For the local project path created by this agent:

[mcp_servers.risha]
command = "node"
args = ["/Users/amirhamdani/Documents/risha-mcp-server/src/index.js"]
startup_timeout_sec = 60

[mcp_servers.risha.env]
RISHA_EMAIL = "you@example.com"
RISHA_PASSWORD = "your-password"

Restart Codex after editing the config.

Codex test prompts

Use the Risha MCP server and run risha_api_info.
Use the Risha MCP server and show my Risha credit balance.
Use the Risha MCP server and list image capabilities.
Use Risha MCP to generate a small image of a red apple on a white table.

Use with Claude Code

Claude Code supports MCP servers over stdio. You can add the server using either the CLI or JSON configuration.

Option A: Claude Code CLI

From the project directory:

claude mcp add risha \
  --env RISHA_EMAIL="you@example.com" \
  --env RISHA_PASSWORD="your-password" \
  -- node /absolute/path/to/risha-mcp-server/src/index.js

Then restart Claude Code or start a new session.

Test prompts:

Use the risha MCP server and run risha_api_info.
Use the risha MCP server to show my credit balance.
Use the risha MCP server to generate a small image of a robot holding a camera.

Option B: Claude MCP JSON config

If your Claude Code setup uses JSON MCP configuration, add:

{
  "mcpServers": {
    "risha": {
      "command": "node",
      "args": ["/absolute/path/to/risha-mcp-server/src/index.js"],
      "env": {
        "RISHA_EMAIL": "you@example.com",
        "RISHA_PASSWORD": "your-password"
      }
    }
  }
}

Use with Claude Desktop

Add this to your Claude Desktop MCP config:

{
  "mcpServers": {
    "risha": {
      "command": "node",
      "args": ["/absolute/path/to/risha-mcp-server/src/index.js"],
      "env": {
        "RISHA_EMAIL": "you@example.com",
        "RISHA_PASSWORD": "your-password"
      }
    }
  }
}

Restart Claude Desktop after editing the config.

Test with MCP Inspector

cd risha-mcp-server
npx @modelcontextprotocol/inspector \
  env RISHA_EMAIL="you@example.com" RISHA_PASSWORD="your-password" \
  node src/index.js

Open the Inspector URL printed in the terminal and try:

  1. risha_api_info

  2. risha_credit_balance

  3. risha_capabilities

  4. risha_generate_image

Typical workflow for agents

  1. Call risha_api_info to confirm authentication and startup state.

  2. Call risha_credit_balance to check credits.

  3. Call risha_capabilities to pick a capability.

  4. Use risha_generate_image for simple image generation, or risha_create_generation for arbitrary capabilities.

  5. Use returned public CDN URLs directly. Private media URLs are resolved automatically when possible.

Notes on generation time

Image/video generation is asynchronous. The MCP server can create a request immediately, but final completion depends on provider queue and model runtime. risha_generate_image and risha_create_generation poll until completion or timeout.

Default polling values:

  • timeoutSeconds: 300

  • pollSeconds: 5

Development

npm install
node --check src/index.js
npm start

Project layout:

risha-mcp-server/
  src/
    index.js       # MCP server implementation
    swagger.json   # Risha Swagger/OpenAPI document
  package.json
  README.md

License

MIT

Available Tools

12 tools
risha_api_infoB

Show Risha API server/configuration info loaded from Swagger.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states it shows info. Does not disclose whether it is read-only, destructive, or other behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple info tool with no parameters and no output schema, but could specify what configuration details are shown.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 0 parameters with 100% coverage. Description adds no parameter info, but baseline for 0 params is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool shows API server/configuration info loaded from Swagger. It distinguishes from siblings like risha_call or risha_create_generation, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Context signals indicate 0 parameters and simple purpose, but description lacks usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_callB

Call a Risha API operation by operationId. Set RISHA_EMAIL and RISHA_PASSWORD for automatic login, or RISHA_API_TOKEN for Bearer auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoJSON request body for POST/PUT/PATCH
queryNoQuery string parameters
headersNoExtra HTTP headers
pathParamsNoValues for {path} parameters
operationIdYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only mentions authentication and the basic operation of calling an API, omitting side effects, error behavior, or whether it is read-only or mutating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences: one for purpose and one for authentication. It is front-loaded and efficient, though the structure could be slightly improved by adding a separation of concerns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, generic API caller) and lack of output schema, the description is insufficient. It does not explain how to find operationIds, what the response looks like, or any post-call behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80%, so the baseline is 3. The description does not add any parameter-level details beyond what the schema already provides, such as clarifying the 'operationId' parameter or the expected request format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calls a Risha API operation by operationId. However, it does not distinguish itself from sibling tools like risha_get_operation or risha_list_operations, which may lead to confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides authentication guidance but lacks explicit when-to-use or when-not-to-use instructions relative to sibling tools. Usage is implied by the generic nature of the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_capabilitiesA

Return capabilities retrieved automatically at MCP startup. Use filter to search name/slug/category/provider fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover all behavioral aspects. It discloses that data is retrieved at startup (implying no side effects), but lacks details on caching or mutability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences with no redundant information; effectively front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should clarify return format. It only says 'capabilities' which is vague. The tool is simple but completeness is moderately lacking.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add meaning. It explains filter searches specific fields (name/slug/category/provider), adding value beyond schema type-only. However, it omits description for the limit parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns capabilities retrieved at MCP startup, distinguished from sibling tools like risha_call or risha_api_info which handle different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: 'Use filter to search...' but does not explicitly state when to avoid using this tool or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_create_generationB

Create a Risha generation request and optionally poll until completed/failed. Use this instead of manual create/read polling.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNo
titleNo
capabilityYesRisha capability ID
pollSecondsNo
prompt_dataYesPrompt payload expected by the capability
timeoutSecondsNo

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full burden for behavioral disclosure. It mentions optional polling but does not disclose mutation effects, authentication requirements, cost implications, or error handling. For a creation tool, this is minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and a key benefit. Every word contributes to understanding. No unnecessary details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, nested object, no output schema, no annotations), the description is too brief. It does not explain the return value, error conditions, or how polling parameters interact. The user agent lacks critical context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 33% coverage (only capability and prompt_data have descriptions). The description adds no parameter-specific details. It does not explain how wait, pollSeconds, timeoutSeconds, or title affect behavior. High schema coverage would mitigate this, but low coverage demands more from the description, which is absent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a Risha generation request and optionally polls until completion or failure. It hints at differentiation from manual alternatives ('Use this instead of manual create/read polling'), but does not explicitly distinguish from sibling tools like risha_call or risha_generate_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises using this tool instead of manual create/read polling, providing clear context on when to use it. However, it does not specify when not to use it or list explicit alternatives, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_credit_balanceA

Return the credit balance/wallet data retrieved automatically at MCP startup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It reveals the tool returns cached data from startup, but it does not disclose whether authentication is required, if the data can be stale, or if any side effects occur. More details would improve this score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It is front-loaded with the action and resource, and every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no parameters and no output schema, the description is adequate but could mention the expected output format (e.g., numeric balance or JSON) to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters and 100% schema coverage. The description adds meaning by clarifying the subject is credit balance/wallet data, which is not self-evident from the empty schema. Baseline for 0 parameters is 4, and this is met.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns credit balance/wallet data. The verb 'Return' and resource 'credit balance/wallet data' are specific. Among sibling tools, none directly overlap, so no confusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions the data is retrieved automatically at MCP startup, implying it is a cached snapshot. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention that it may not reflect live data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_generate_imageC

Convenience text-to-image tool. Defaults to the lightweight Nano Banana 2 text-to-image capability and waits for the final public image URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
promptYes
capabilityNo
resolutionNo0.5k
pollSecondsNo
aspect_ratioNo1:1
timeoutSecondsNo
extraPromptDataNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Reveals that it waits for the final public image URL (polling behavior). Without annotations, this is useful but incomplete—does not mention authentication, rate limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very concise—two sentences. But could be better structured (e.g., separate parameter semantics). Still, it is front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description is insufficient. It misses details about return values, error handling, and parameter roles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no information about any of the 8 parameters. Agent must rely solely on property names and defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it is a text-to-image tool and mentions default capability (Nano Banana 2) and behavior (waits for final URL). However, it does not distinguish from sibling tools like risha_create_generation or risha_resolve_media_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. The description implies it's for simple generation but lacks explicit when/when-not instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_get_operationA

Get details for one Risha API operation, including required path/query parameters and request body schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
operationIdYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description mentions included details but does not disclose idempotency, authorization needs, or rate limits. Adequate but lacks depth for a non-annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that efficiently conveys purpose. Could be slightly more structured but is not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool with one parameter and no output schema, but lacks guidance on obtaining the operationId (e.g., via sibling 'risha_list_operations') and expected return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; description only mentions 'including required path/query parameters' without explaining what 'operationId' is or how to obtain it. Does not add meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'Get details', resource 'one Risha API operation', and includes scope 'required path/query parameters and request body schema'. Distinct from sibling like 'risha_list_operations'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for retrieving details of a specific operation, but does not explicitly contrast with siblings like 'risha_list_operations' or mention when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_list_operationsB

List Risha API operations from the Swagger document. Use filter to search operationId, path, tag, or summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
filterNoCase-insensitive text filter
methodNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states it lists operations and supports filtering, but does not disclose data freshness, pagination behavior, rate limits, or the read-only nature. Key behavioral details are missing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the purpose and then providing immediate usage guidance. Every word carries weight with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has four parameters, no output schema, and no annotations, the description is incomplete. It does not explain the limit parameter's role in pagination, the meaning of tag and method filters, nor the structure of the returned operation list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (filter has a description). The tool description adds value by explaining filter searches operationId, path, tag, or summary, but other parameters (tag, limit, method) are left without explanation beyond the schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists Risha API operations from a Swagger document, with a specific verb (list) and resource (operations). It distinguishes from siblings like risha_get_operation by implying a broad listing, and mentions filtering for search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for using the tool (listing operations, filtering), but does not explicitly state when not to use it or name alternative tools like risha_get_operation for specific operations. No exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_loginA

Login to Risha using RISHA_EMAIL and RISHA_PASSWORD and cache the returned JWT for this MCP server session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions caching the JWT for the session, which is a useful behavioral trait. However, without annotations, it does not disclose potential side effects, idempotency, or failure modes (e.g., if credentials are invalid).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that front-loads the key action and outcome, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description is fairly complete. It explains what the tool does and the result (cached JWT). A minor gap is that it doesn't mention what happens if the login fails or whether the JWT is automatically refreshed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, but the description adds meaning by specifying that the tool uses RISHA_EMAIL and RISHA_PASSWORD (likely environment variables). This compensates for the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it logs in to Risha and caches the JWT. It is distinct from sibling tools like risha_call or risha_generate_image, which are not login-related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it should be used before other tools that require authentication (due to caching JWT), but does not explicitly state when to use it or when not to use alternatives. No guidance on prerequisites beyond environment variables.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_refresh_contextB

Login again and refresh startup context: current user, all capabilities, and credit balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions 'Login again' implying re-authentication, but it does not disclose whether this invalidates previous sessions, if it is destructive, or what the output or side effects are. With no annotations, this lack of behavioral detail is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the core action ('Login again and refresh startup context') followed by details. It is appropriately sized with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description adequately covers what the tool does. However, it is incomplete in that it does not explain what the result is (does it return the refreshed data?) or any behavioral traits, which limits full understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description accurately reflects that no parameters are needed by stating it refreshes all context. It adds meaning by explaining why no parameters are required—because it refreshes tied state.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool logs in again and refreshes startup context including user, capabilities, and credit balance. It distinguishes itself from sibling tools like risha_login or risha_startup_state by combining both actions, though the exact boundary between these tools could be more explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives such as risha_login or risha_startup_state. The description does not mention prerequisites, scenarios, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_resolve_media_urlA

Convert a private Risha /api/media/asset/... URL into its signed public/CDN URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPrivate Risha media URL from file_url/output_url/etc.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It states the conversion produces a signed public URL, implying a read-only, idempotent operation. However, it does not clarify authentication needs, rate limits, or side effects, leaving some uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently conveys the tool's purpose without extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and no output schema, the description adequately explains the conversion operation. However, it could mention that the result is a string URL, which would improve completeness for an agent without access to an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the 'url' parameter as 'Private Risha media URL from file_url/output_url/etc.' The description adds no additional meaning beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts a private Risha media URL to a signed public/CDN URL. It uses a specific verb ('convert') and resource ('private Risha /api/media/asset/... URL'), and is distinct from sibling tools, none of which perform URL conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when you have a private media URL from Risha and need a public accessible version. It does not explicitly mention when not to use it or provide alternatives, but the context of siblings makes the usage clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

risha_startup_stateA

Show the Risha data loaded automatically at MCP startup: login status, user, capabilities count, and credit balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavior. It mentions data loaded automatically at startup, indicating a read-only snapshot, but does not clarify authentication requirements or potential failure modes. Adequate but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that immediately states the tool's purpose and lists key outputs. No wasted words, front-loaded with 'Show the Risha data loaded automatically at MCP startup'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool, the description adequately communicates the return values (four data points) and context (startup data). Could mention that it is read-only or requires prior login, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the description adds value by specifying the output fields (login status, user, capabilities count, credit balance), which is not available from the empty schema. Baseline 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool shows startup-specific data (login status, user, capabilities count, credit balance), differentiating it from siblings like risha_credit_balance or risha_capabilities which focus on individual data points.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving initial state but lacks explicit guidance on when to use it versus alternatives like risha_login or risha_credit_balance. No when-not-to-use or exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv1.0.0
    • First observedrisha_api_info
    • First observedrisha_call
    • First observedrisha_capabilities
    • First observedrisha_create_generation
    • First observedrisha_credit_balance
    • First observedrisha_generate_image
    • First observedrisha_get_operation
    • First observedrisha_list_operations
    • First observedrisha_login
    • First observedrisha_refresh_context
    • First observedrisha_resolve_media_url
    • First observedrisha_startup_state

TDQS

A3.7/5.0

Scored across 12 tools

Disambiguation5/5

Each tool targets a distinct aspect of the Risha API: authentication, API info, operation listing/calling, generation, image generation, media URL resolution, and startup state. No two tools have overlapping purposes.

Naming Consistency5/5

All tools follow the consistent pattern of 'risha_' prefix followed by a verb_noun or noun structure (e.g., risha_create_generation, risha_get_operation, risha_credit_balance). The convention is uniform and predictable.

Tool Count5/5

12 tools is an appropriate number for a server that wraps a generative AI API, covering authentication, information retrieval, API calling, image generation, and media management without being excessive or insufficient.

Completeness4/5

The tool set covers core workflows: login, state inspection, API operation discovery, general API calling, and specific generation/image tasks. A minor gap is the lack of a tool to list past generations, but the surface is otherwise comprehensive.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that wraps the Riza Code Interpreter API and presents endpoints as individual tools.
    13
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.
    11 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server that interfaces with Gemini and OpenAI CLI tools to enable AI model interactions. It provides a bridge to external AI CLIs with predefined model configurations.
    -