Riza MCP Server
Click 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., "@Riza MCP Serverexecute python to calculate factorial of 5"
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.
Riza MCP Server
Riza offers an isolated code interpreter for your LLM-generated code.
Our MCP server implementation wraps the Riza API and presents endpoints as individual tools.
Configure with Claude Desktop as below, or adapt as necessary for your MCP client. Get a free Riza API key in your Riza Dashboard.
{
"mcpServers": {
"riza-server": {
"command": "npx",
"args": [
"@riza-io/riza-mcp"
],
"env": {
"RIZA_API_KEY": "your-api-key"
}
}
}
}The Riza MCP server provides several tools to your LLM:
create_tool: Your LLM can write code and save it as a tool using the Riza Tools API. It can then execute these tools securely on Riza usingexecute_tool.fetch_tool: Your LLM can fetch saved Riza tools, including source code, which can be useful for editing tools.execute_tool: Executes a saved tool securely on Riza's code interpreter API.edit_tool: Edits an existing saved tool.list_tools: Lists available saved tools.execute_code: Executes arbitrary code safely on Riza's code interpreter API, without saving it as a tool.
Available Tools
6 toolscreate_toolC
Create a new tool. This tool will be used to create new tools. You can use the tools you have created to perform tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The Typescript code for the tool you are writing. The code should be a valid Typescript function named `execute` that takes one argument called `input`. When called, the `input` provided will match the schema of the `input_schema` of the tool. | |
| name | Yes | The name of the tool you are writing. This is what you will use to call the tool. | |
| language | Yes | The language of the tool you are writing. This must be either 'TYPESCRIPT' or 'PYTHON'. | |
| description | Yes | A description of the tool you are writing. This will help you or other agents or people pick the appropriate tool in the future. | |
| input_schema | Yes | The input schema for the tool. This must be provided as a valid JSON Schema object. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only says the tool creates something. It does not disclose side effects, persistence, permissions, validation behavior, or what happens after creation, leaving the agent with the bare meaning of the verb.
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 wastes space with a redundant second sentence and a vague third sentence that does not explain the creation workflow. It would be stronger as a single focused sentence stating the tool's purpose and perhaps a key constraint.
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 tool with five required parameters, no annotations, and no output schema, the description is under-specified. It lacks guidance on how created tools integrate with sibling tools, what the response will be, and when to use this instead of edit_tool.
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 already provides 100% coverage with descriptions for all five required parameters, so the baseline of 3 applies. The tool description itself adds no parameter-level meaning, but the schema compensates adequately.
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 first sentence, 'Create a new tool,' clearly states the verb and resource, and the tool name plus siblings make its distinct role as creation versus fetch/edit/list/execute evident. However, the second sentence is a tautology that restates the name and adds no new meaning.
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 gives no guidance on when to use create_tool versus edit_tool or other siblings. It only vaguely states that created tools can be used to perform tasks, which does not help an agent decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_toolA
Edit a tool, including its source code. Omit properties that you do not want to change.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The Typescript code for the tool you are editing. The code should be a valid Typescript function named `execute` that takes one argument called `input`. When called, the `input` provided will match the schema of the `input_schema` of the tool. | |
| name | No | The name of the tool you are editing. This is what you will use to call the tool. | |
| tool_id | Yes | The ID of the tool you are editing. | |
| language | Yes | The language of the tool you are editing. This must be either 'TYPESCRIPT' or 'PYTHON'. | |
| description | No | A description of the tool you are editing. This will help you or other agents or people pick the appropriate tool in the future. | |
| input_schema | Yes | The input schema for the tool. This must be provided as a valid JSON Schema object. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that this is a mutation operation and hints at partial updates, but it does not disclose required-field constraints (code, language, input_schema are required), potential side effects, permissions, irreversibility, or what happens when source code is replaced.
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 concise sentence that front-loads the core action and includes a relevant usage qualifier. Every part adds value and there is no unnecessary text.
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?
The provided input schema is detailed enough to describe the parameters, but the overall definition is thin for a mutation tool with no annotations and no output schema. An agent would still lack guidance on expected return values, required-field constraints that complicate the 'omit' instruction, and the operational consequences of editing a live tool.
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 100%, so the schema already provides detailed parameter meanings. The description adds only the general partial-update behavior and does not materially clarify parameter syntax beyond the 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?
Description uses a specific verb ('Edit') with a clear resource ('a tool') and explicitly mentions source code, distinguishing it from sibling tools like create_tool, fetch_tool, and execute_tool. The edit-versus-create contrast is immediately understandable.
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 gives useful partial-update guidance: 'Omit properties that you do not want to change.' This clearly conveys the intended modification workflow, even though it does not explicitly name alternatives or excluded cases such as creating a new tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_codeB
Execute arbitrary Typescript or Python code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | The code you are writing. This will be executed as a script. Write any output to stdout or stderr. | |
| language | No | The language of the code you are writing. This must be either 'TYPESCRIPT' or 'PYTHON'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It hints at unrestricted behavior via 'arbitrary' but omits environment constraints, side effects, timeouts, error handling, or privileges. The destructive/unsafe nature of arbitrary code execution is implied but not explained.
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 short and front-loaded, with zero waste. It is efficiently worded, though slightly sparse in behavioral depth.
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 tool that executes arbitrary user-supplied code, the absence of safety context, environment description, and usage boundaries leaves a meaningful gap. The minimal description is not enough to safely and correctly deploy the tool.
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 covers the code and language parameters fully, so the baseline is 3. The description's mention of 'Typescript or Python' adds no detail beyond the language parameter's permitted values.
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?
States a specific verb ('Execute'), resource ('arbitrary...code'), and languages ('Typescript or Python'), clearly distinguishing it from sibling execute_tool which implies running a predefined tool. The word 'arbitrary' conveys a general-purpose code runner.
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 versus execute_tool or other siblings. It does not state exclusions, prerequisites, or preferred contexts, leaving an agent to infer when arbitrary code execution is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_toolB
Executes a tool. This tool will be used to execute a self-written tool.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | The input to the tool. This must match the input schema of the tool. | |
| tool_id | Yes | The ID of the tool you are executing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of disclosing behavior, but it only restates the action. It does not warn that executing a self-written tool can run arbitrary code, mention side effects, or explain what happens on success or failure.
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 brief and front-loaded with the core action. The second sentence repeats the idea but adds the 'self-written' qualifier, so it earns a mild pass; it is not bloated.
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 dynamic execution tool with no output schema and no annotations, the description is too thin. It does not explain how to obtain a tool_id, what the return value is, or what side effects may occur when executing an arbitrary self-written tool.
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 100%, so the schema already documents tool_id and input. The description adds no parameter-level detail beyond that baseline, which is acceptable but not additive.
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 states a clear action and resource: 'Executes a tool' and further narrows it to 'a self-written tool.' This separates it from sibling create/fetch/edit/list tools and from execute_code, though it stops short of explicitly naming the distinction.
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 line 'This tool will be used to execute a self-written tool' implies the main use case, but there is no explicit when-to-use guidance or comparison with alternatives such as execute_code. The agent must infer when this tool is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetch_toolA
Fetch a tool, including its source code.
| Name | Required | Description | Default |
|---|---|---|---|
| tool_id | No | The ID of the tool to fetch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Fetch ... including its source code' implies a read-only retrieval and hints at return content, but it does not disclose failure behavior, permissions, whether source code is truncated, or any 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?
The description is a single concise sentence with no filler. The core action and key differentiator ('including its source code') are immediately visible.
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?
This is adequate for a simple single-parameter fetch operation, but with no output schema and no annotations it could usefully mention return format, not-found behavior, or the relationship to list_tools for obtaining a valid tool_id. The absence of requiredness information for tool_id is also left ambiguous.
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 only parameter, tool_id, is already fully described in the schema ('The ID of the tool to fetch'), and schema description coverage is 100%. The description adds no additional parameter meaning, such as how to obtain the ID or whether it is required.
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 uses a specific verb ('Fetch') and resource ('a tool'), and the added phrase 'including its source code' clarifies what makes this different from list_tools or execute_tool. An agent can tell this is a retrieval operation for a single tool's definition.
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?
There is no guidance on when to use this tool versus list_tools, execute_tool, or edit_tool. It does not state that fetch_tool is for reading a single tool's details/source before modifying or executing it, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_toolsA
Lists the tool definitions of all self-written tools available for use. These tools can be used by calling use_tool with the name and input.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly indicates a read-only listing operation with no destructive or mutating behavior mentioned. It also adds useful context about how the returned definitions relate to use_tool. It does not detail exact output structure, but for a simple list operation this is acceptable.
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 concise sentences with no filler. The main purpose is front-loaded, and the second sentence provides directly actionable follow-up information about using the listed tools via use_tool.
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 listing tool with no output schema, the description is largely sufficient: it states what is returned, the scope ('all self-written tools'), and how to proceed with the results. It could have explicitly mentioned the output format in slightly more detail, but the available context makes this a minor gap.
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 zero parameters, and the schema is an empty object with 100% coverage. The baseline for zero-parameter tools is 4, and the description adds useful context about what the returned tool definitions are for, so no deduction is needed.
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 action ('lists') and the resource ('tool definitions of all self-written tools available for use'). It is easily distinguished from siblings like create_tool, fetch_tool, edit_tool, and execute_tool, all of which describe 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?
The description gives clear context: this tool is the way to discover available custom tool definitions, and it explicitly explains how the listed tools can be invoked via use_tool. It does not explicitly mention alternatives or when-not-to-use cases, which keeps it just short of a 5.
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.
6 tool updates
v0.1.3- First observed
create_tool - First observed
edit_tool - First observed
execute_code - First observed
execute_tool - First observed
fetch_tool - First observed
list_tools
TDQS
Scored across 6 tools
Each tool has a distinct role: create, fetch, edit, list, and execute self-written tools, plus execute_code for arbitrary ad-hoc code. The only potentially overlapping pair, execute_code and execute_tool, is clearly separated by whether the code is a saved tool or not.
All tool names follow a consistent snake_case verb_noun pattern, such as create_tool, fetch_tool, edit_tool, and execute_tool. The minor pluralization in list_tools is predictable and does not break the naming convention.
Six tools is well-suited to the server's purpose of managing and executing self-written tools. Each tool contributes a necessary operation without unnecessary bloat.
The set covers create, read, update, list, and execute, but lacks a delete/remove operation, which is a notable lifecycle gap. Additionally, list_tools references a use_tool that does not exist in the exposed tool set, though execute_tool appears to fill that role.
Maintenance
Related MCP Connectors
- mcp-serverOAuthai.cdbx
Build Apps and run code in 30 languages ā sandboxed, with persistent sessions for agent loops.
Run Python code in a secure sandbox without local setup. Declare inline dependencies and execute sā¦
Run Python code from natural language prompts, with optional PyPI package install.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that wraps the Riza Code Interpreter API and presents endpoints as individual tools.13-
- AlicenseNot gradedqualityAmaintenanceProvides sandboxed code execution for AI agents with support for Python, JavaScript, and shell commands. Includes comprehensive safety features like destructive pattern blocking, timeout protection, and restricted file access for secure production use.7 npm65 PyPIMIT
- AlicenseAqualityCmaintenanceConnects LLMs to the Piston code execution engine to run code in various languages.19MIT
- AlicenseNot gradedqualityAmaintenanceEnables LLMs to execute Python code securely in a sandboxed environment. Supports configurable restrictions like no network access and returns results including files.MIT