Skip to main content
The hosted Proto MCP server gives your agent access to your account, the bioinformatics tool catalog, and tool runs. It runs through Proto and your connected Modal workspace; agents do not choose a local or remote backend. The usual workflow is to find a tool, inspect its schema and example, then run it. If a tool is not yet available in your workspace, the agent can deploy it after you approve the cost.

Workspace

workspace_info()

Shows the Proto account you are signed in as and the services connected to it, including Modal and Hugging Face when applicable. Call this first if a tool is unavailable or a connection appears to be misconfigured.

Takes no parameters.

Discover

list_tools()

Lists bioinformatics tools available to you. By default, this shows tools already available in your workspace. Pass deployed_only=false to see the full catalog, including tools that can be deployed. Each entry includes its tool_key, category, summary, and compute requirements.

boolean
default:"true"
Show only tools already available to run. Set to false for the full catalog.
string
Restrict results to one tool category.
search_tools()

Searches tool keys and descriptions by keyword. Results are ranked by relevance and include the same metadata as list_tools.

string
required
The term to search for.
boolean
default:"true"
Search only tools already available to run. Set to false to include deployable tools.
integer
default:"10"
Maximum number of matches to return.

Inspect

get_tool_schema()

Returns a tool’s input, configuration, and output schemas, along with whether it is available to you and whether it has an example. Call this before constructing an input: fields are validated strictly, and unknown fields are rejected.

string
required
The tool to inspect.
get_tool_example()

Returns a known-good example input, or null when the tool has no example. Use it as a template after checking the schema. Pass use_example=true to run_tool to run the example unchanged.

string
required
The tool to inspect.
get_tool_info()

Returns a tool’s provenance: its description, category, citation and DOI, documentation, source code, and links to the underlying method. Use this when reporting results or preparing a citation.

string
required
The tool to inspect.

Run

run_tool()

Runs a tool and returns its result. First retrieve the schema and, when available, the example. Calls can take several minutes when a container must start or a model must load.

If a run is still in progress after about 45 seconds, it returns pending with a job_id. The run continues; use get_run_status to collect its result. If the response never reaches the agent, for example because the client’s connection timed out first, use list_runs to recover the job_id rather than starting the run again. Large outputs are returned as stored assets or download links instead of being placed inline in the conversation.

string
required
The tool to run.
object
The input for the tool. It must match the tool’s input schema unless use_example is true.
object
Optional configuration that matches the tool’s config schema.
boolean
default:"false"
Run the tool’s canonical example instead of supplying inputs.
boolean
default:"false"
Include the complete output when it is available, rather than the compact result.

Deploy and collect

deploy_tool()

Deploys a tool to your Modal workspace so it can be run. A deployment can take several minutes and incurs build costs on your Modal account, so your agent should ask for approval first. A tool only needs to be deployed once; deploying it again updates the existing deployment.

The call may finish before the build does. Use get_deploy_status to follow its progress rather than starting another deployment.

string
required
The tool to deploy.
get_deploy_status()

Reports the progress of a deployment started through Proto. It is safe to call repeatedly. A tracked: false response means that no recent deployment is being tracked; use list_tools to confirm whether the tool is available.

string
required
The tool whose deployment to check.
list_runs()

Lists your recent runs, newest first, including runs started through the MCP, the website, or the SDK. Each entry includes its job_id, tool_key, status, created_at, and completed_at. Use it to recover the job_id of a run whose result never arrived, then pass that ID to get_run_status, instead of submitting the run again and paying for the compute twice.

Runs on your own Modal workspace are shown with the status last recorded, which refreshes when the run is collected. Runs started with a Modal token passed in request headers are not recorded and cannot be listed.

string
Restrict results to runs of one tool.
string
Restrict results to one status: pending, running, completed, failed, or cancelled.
integer
default:"20"
Maximum number of runs to return, up to 50.
get_run_status()

Collects the result of a run that returned pending. It is safe to call repeatedly while the job is running. Download links are refreshed each time the completed result is retrieved.

string
required
The tool used for the run.
string
required
The job ID returned by run_tool or list_runs.
boolean
default:"false"
Include the complete output when it is available.
get_asset()

Fetches a stored output through MCP when a download link cannot be reached. Text is returned as text; other file types are returned as base64. Large assets remain available through their download links rather than being added to the conversation.

string
required
The stored asset to retrieve.
integer
Maximum asset size to return inline. The server limits this value to 1 MB.

Next Steps

Connecting the MCP

Connect your agent to the hosted Proto MCP server.

Tools

Browse the bioinformatics models available through Proto.