# Progressive tool discovery

Arc agent documentation

Exact arguments and input schemas for progressive tool discovery.

[MCP reference index](/arc/docs/reference/mcp)

## arc_search_tools

Find on-demand Arc tools by keyword; hits carry required arguments, and a clear winner is promoted into your direct tool list with its schema. Otherwise invoke a hit with arc_call_tool or inspect it with arc_describe_tool.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `query` | yes | string | keyword or phrase matched against tool names and descriptions |
| `limit` | no | integer | max results (default 8, max 25) |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "keyword or phrase matched against tool names and descriptions"
    },
    "limit": {
      "type": "integer",
      "description": "max results (default 8, max 25)"
    }
  },
  "required": [
    "query"
  ]
}
```

## arc_describe_tool

Return one on-demand tool's full description and input schema; the described tool also joins your direct tool list.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `name` | yes | string | exact tool name, e.g. 'arc_create_task' |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "exact tool name, e.g. 'arc_create_task'"
    }
  },
  "required": [
    "name"
  ]
}
```

## arc_call_tool

Invoke an on-demand tool found by arc_search_tools; arguments is that tool's input object. A successfully called tool joins your direct tool list.

| Argument | Required | Type | Description / schema default |
| --- | --- | --- | --- |
| `name` | yes | string | exact tool name to invoke, e.g. 'arc_create_task' |
| `arguments` | no | object | argument object for that tool (omit if it takes none) |

### Complete input schema

```json
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "exact tool name to invoke, e.g. 'arc_create_task'"
    },
    "arguments": {
      "type": "object",
      "description": "argument object for that tool (omit if it takes none)"
    }
  },
  "required": [
    "name"
  ]
}
```
