Risha.ai MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Risha.ai MCP Servershow my credit balance"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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_imagerisha_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 installEnvironment 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
.envfile..envis ignored by git.
Run manually
RISHA_EMAIL="you@example.com" RISHA_PASSWORD="your-password" npm startExpected startup log:
[risha-mcp] logged in, loaded 32 capabilities, credit balance: 72621An 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.jsThen 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.jsOpen the Inspector URL printed in the terminal and try:
risha_api_inforisha_credit_balancerisha_capabilitiesrisha_generate_image
Typical workflow for agents
Call
risha_api_infoto confirm authentication and startup state.Call
risha_credit_balanceto check credits.Call
risha_capabilitiesto pick a capability.Use
risha_generate_imagefor simple image generation, orrisha_create_generationfor arbitrary capabilities.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:300pollSeconds:5
Development
npm install
node --check src/index.js
npm startProject layout:
risha-mcp-server/
src/
index.js # MCP server implementation
swagger.json # Risha Swagger/OpenAPI document
package.json
README.mdLicense
MIT
Available Tools
12 toolsrisha_api_infoB
Show Risha API server/configuration info loaded from Swagger.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | JSON request body for POST/PUT/PATCH | |
| query | No | Query string parameters | |
| headers | No | Extra HTTP headers | |
| pathParams | No | Values for {path} parameters | |
| operationId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| filter | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| title | No | ||
| capability | Yes | Risha capability ID | |
| pollSeconds | No | ||
| prompt_data | Yes | Prompt payload expected by the capability | |
| timeoutSeconds | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| prompt | Yes | ||
| capability | No | ||
| resolution | No | 0.5k | |
| pollSeconds | No | ||
| aspect_ratio | No | 1:1 | |
| timeoutSeconds | No | ||
| extraPromptData | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| operationId | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| filter | No | Case-insensitive text filter | |
| method | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Private Risha media URL from file_url/output_url/etc. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
12 tool updates
v1.0.0- First observed
risha_api_info - First observed
risha_call - First observed
risha_capabilities - First observed
risha_create_generation - First observed
risha_credit_balance - First observed
risha_generate_image - First observed
risha_get_operation - First observed
risha_list_operations - First observed
risha_login - First observed
risha_refresh_context - First observed
risha_resolve_media_url - First observed
risha_startup_state
TDQS
Scored across 12 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Pixapi: check live credit pricing and balance, then generate images and video.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
- mcpOAuthco.aistoryhub
Remote MCP server for AIStoryHub: stories, chapters, story bible, Voiceprints, AI generation.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that wraps the Riza Code Interpreter API and presents endpoints as individual tools.13-
- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.11 npmMIT
- AlicenseNot gradedqualityDmaintenanceMCP server for the Golpo AI video API, enabling video generation, listing, and downloading from any MCP-compatible client.MIT
- FlicenseNot gradedqualityDmaintenanceMCP 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.-