> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP tools

> Every tool the hosted MCP server offers, with its scope and arguments.

The MCP server offers 8 tools. Each one is the REST endpoint it names, with the same scope and the same answer; a refusal comes back as a tool error carrying the REST error code.

## `list_providers`

**List providers** · scope `catalog:read` · read only

The providers, whether this organization allows each one, and their capabilities.

No arguments.

## `discover`

**Discover tools** · scope `catalog:read` · read only

Search the catalog by text, category or provider; returns one page of models. A model with `availability: "preview"` is listed but cannot be run yet (MODEL\_NOT\_AVAILABLE); use a "live" one. A model with `allowed: false` was turned off by this organization (MODEL\_DISABLED\_BY\_ORG or PROVIDER\_DISABLED\_BY\_ORG).

**q** `string`

Free text over title, model id and category.

**category** `string`

One of `llm`, `image`, `video`, `3d`, `audio`, `web`, `data`, `social-media`, `e-commerce`, `finance`.

**provider** `string`

Provider id.

**cursor** `string`

Opaque; the `next_cursor` of the previous page.

**limit** `integer`

1–`list.max_limit` (100), default `list.default_limit` (20).

## `inspect`

**Inspect a model** · scope `catalog:read` · read only

One model's input schema, pricing, capabilities, limits and lifecycle. `pricing_sentence` says how to work out the price from the input. Only a model with `availability: "live"` can be run; a "preview" model answers MODEL\_NOT\_AVAILABLE. `allowed: false` means this organization turned the model or its provider off.

**provider** `string` *required*

Provider id.

**model** `string` *required*

Catalog id (model or tool operation).

## `run`

**Run a model or tool** · scope `runs:write` · makes changes

Start one run and wait up to `wait` seconds (default 60) for it to finish. Retransmit with the same session, API key and JSON-RPC id to replay within run retention. New identities can start paid work. After an uncertain response, use get\_run with a known run id. Only `availability: "live"` models run; a "preview" model answers MODEL\_NOT\_AVAILABLE. An input with a field the model's schema does not name, a missing required field or a value of the wrong JSON type is refused before anything is held (INVALID\_INPUT), with one `errors` entry per problem: `pointer` (e.g. /input/duration), `reason` (unknown\_field, missing\_required, wrong\_type, control\_field), `expected`, `received` and `allowed`. Value rules (enums, ranges, lengths, file sizes) are the provider's: its refusal ends the run PROVIDER\_INVALID\_INPUT with `error.errors` naming the field.

**provider** `string` *required*

Provider id from list\_providers.

**model** `string` *required*

The provider's model id or tool operation.

**input** `object` *required*

A non-empty object of the provider's own input fields, exactly as inspect's input schema names them; fields it does not name are refused.

**webhook** `object`

A public https URL that receives this run's terminal event, signed with the org's webhook signing secret; without it no webhook is sent.

**metadata** `object`

Echoed on the run.

**wait** `integer`

Seconds to wait for a final state (0–60, default 60).

## `get_run`

**Get a run** · scope `runs:read` · read only

One run; optionally waits up to `wait_seconds` (0–60) for a final state.

**id** `string` *required*

The run id (a UUID).

**wait\_seconds** `integer`

Long poll up to this many seconds for a final state (default 0).

## `list_runs`

**List runs** · scope `runs:read` · read only

This organization's runs, newest first; filter by status or provider.

**status** `string`

Public status.

**provider** `string`

Provider id.

**cursor** `string`

Opaque; the `next_cursor` of the previous page.

**limit** `integer`

1–`list.max_limit` (100), default `list.default_limit` (20).

## `upload_file`

**Upload a file** · scope `files:write` · makes changes

A signed PUT link for one file; upload the bytes to it, then pass the file id in a run's input.

**filename** `string` *required*

**mime\_type** `string` *required*

**size\_bytes** `integer` *required*

## `get_balance`

**Get the balance** · scope `account:read` · read only

Available and held money for this organization, in USD.

No arguments.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.