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

# read_tool

> Get the full definition of a tool by its path.

## Overview

Retrieve the complete definition of a tool including its input/output schemas, destructive flag, and metadata. Use this after `search_tools` to understand a tool's interface before calling it via [`call_tool`](/mcp/call-tool) (HTTP transport) or in a [`run`](/mcp/run) script (stdio transport).

<Note>
  Like `search_tools`, the HTTP transport's `read_tool` only resolves paths from the per-user available catalog. A path that exists in the codebase but whose `authProvider` isn't connected returns `Tool not found: <path>`.
</Note>

## Input

| Parameter | Type     | Required | Description                              |
| --------- | -------- | -------- | ---------------------------------------- |
| `path`    | `string` | Yes      | Tool path (e.g., `github.issues.create`) |

## Annotations

* `readOnlyHint: true`

## Output

Returns the full `ToolDefinition` object:

```json theme={null}
{
  "path": "github.issues.create",
  "name": "Create Issue",
  "description": "Create a new issue in a GitHub repository.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "owner": { "type": "string" },
      "repo": { "type": "string" },
      "title": { "type": "string" },
      "body": { "type": "string" },
      "labels": { "type": "array", "items": { "type": "string" } },
      "assignees": { "type": "array", "items": { "type": "string" } }
    },
    "required": ["owner", "repo", "title"]
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "number": { "type": "number" },
      "url": { "type": "string" }
    },
    "required": ["number", "url"]
  },
  "destructive": true,
  "authProvider": "github"
}
```

If the tool is not found, returns an error message:

```json theme={null}
"Tool not found: some.invalid.path"
```

## Also available in sandbox

Inside `run` scripts:

```typescript theme={null}
const schema = await tools.describe.tool({ path: "github.issues.create" });
```
