# call_read_tools_batch

Source: https://libtmux.org/en/py/latest/mcp/tools/call_read_tools_batch/

> Call several `inspect` tools serially and return per-tool results.

MCP is in development

Server behavior and tool contracts may change. Tool availability depends on the server configuration.

Call several `inspect` tools serially and return per-tool results.

Use when one agent turn needs several observations. Each nested call still goes through FastMCP validation and this server’s middleware. Only `inspect` tools are accepted; anything that changes tmux state is refused, whatever this server has enabled.

This wrapper aggregates authority under its own name: a client rule keyed on a nested tool’s name does not fire for a call made through it. Read it as authority to invoke any `inspect` tool.

[All Python tools](https://libtmux.org/en/py/latest/mcp/tools/) · [JSON](https://libtmux.org/en/py/latest/mcp/tools/call_read_tools_batch.json) · [Source](https://github.com/tmux-python/libtmux-mcp/blob/4daddc0dfca96c43bf521d818bf91564e1434760/src/libtmux_mcp/tools/batch_tools.py#L277)

## Arguments

* `on_error` optional · string

  See the schema for this argument’s constraints.

  Default: `"stop"`.

* `operations` required · array

  See the schema for this argument’s constraints.

## Schemas

The schema defines required fields, nested values, defaults, and validation constraints.

Input schema

```json
{
  "additionalProperties": false,
  "properties": {
    "on_error": {
      "default": "stop",
      "enum": [
        "stop",
        "continue"
      ],
      "type": "string"
    },
    "operations": {
      "items": {
        "additionalProperties": false,
        "description": "One nested MCP tool call for a batch wrapper.",
        "properties": {
          "arguments": {
            "additionalProperties": true,
            "description": "Arguments for the nested tool call.",
            "type": "object"
          },
          "tool": {
            "description": "Registered MCP tool name to call.",
            "type": "string"
          }
        },
        "required": [
          "tool"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "operations"
  ],
  "type": "object"
}
```

Output schema

```json
{
  "description": "Structured result for a serial batch of MCP tool calls.",
  "properties": {
    "failed": {
      "description": "Number of nested tool calls that failed.",
      "type": "integer"
    },
    "response_truncated": {
      "default": false,
      "description": "True when nested result payloads were elided to keep the batch response under the server response cap.",
      "type": "boolean"
    },
    "response_truncated_bytes": {
      "default": 0,
      "description": "Approximate serialized bytes removed from nested result payloads.",
      "type": "integer"
    },
    "results": {
      "description": "Per-operation results in attempted order.",
      "items": {
        "description": "Per-operation result from a generic MCP tool batch.",
        "properties": {
          "content": {
            "description": "MCP content blocks returned by the nested tool.",
            "items": {
              "additionalProperties": true,
              "type": "object"
            },
            "type": "array"
          },
          "elapsed_seconds": {
            "description": "Time spent on this operation.",
            "type": "number"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Error message for this operation, if it failed."
          },
          "index": {
            "description": "Zero-based index in the submitted operation list.",
            "type": "integer"
          },
          "meta": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Runtime metadata returned by the nested tool, if any."
          },
          "structured_content": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Structured content returned by the nested tool, if any."
          },
          "success": {
            "description": "True when this nested tool call succeeded.",
            "type": "boolean"
          },
          "tool": {
            "description": "Nested tool name that was attempted.",
            "type": "string"
          }
        },
        "required": [
          "index",
          "tool",
          "success",
          "elapsed_seconds"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "stopped_at": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Index where processing stopped because on_error='stop', or None when all operations were attempted."
    },
    "succeeded": {
      "description": "Number of nested tool calls that succeeded.",
      "type": "integer"
    }
  },
  "required": [
    "succeeded",
    "failed"
  ],
  "type": "object"
}
```

Tool annotations

```json
{
  "destructiveHint": true,
  "idempotentHint": false,
  "openWorldHint": true,
  "readOnlyHint": false
}
```
