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

# Biohub MCP resource tools reference

> Reference for list_resources and read_resource, which let AI clients that can't read MCP resources directly list and read Biohub MCP Skill files.

Use these tools when your client can't list or read MCP resources directly, for example to load a [Skill](/biohub-mcp/skills/overview.md).
They return the same resources as native MCP resource requests, and they need no sign-in.

| Tool | Use it to |
| - | - |
| [`list_resources`](#list-resources) | List every resource the server publishes, without reading any. |
| [`read_resource`](#read-resource) | Read one resource by its exact URI. |

## List resources

`list_resources` takes no arguments and returns the complete catalog without reading any resource content.

| Field | Description |
| - | - |
| `resources` | MCP descriptors for every resource: each Skill file, and the [structure viewer app](/biohub-mcp/structure-viewer.md#the-viewer-app). |
| `resources[].uri`, `name` | The exact resource URI and name. |
| `resource_templates` | MCP descriptors for parameterized resources. Biohub MCP publishes none, so this list is empty. |
| Descriptor metadata | `title`, `description`, `mimeType`, and `_meta`, when available. Skill files carry their version and hashes in `_meta`. |

The result is complete or an error, with no pagination or truncation.
Listing starts no compute, and the tool is marked read-only.

## Read resource

| Input | Type | Required | Constraints |
| - | - | - | - |
| `uri` | string | Yes | 1 to 65,536 characters. Use an exact URI from `list_resources` or a Skill page, such as `skill://waveorder-tutorial/SKILL.md`. |

The result uses the MCP resource-read format:

| Field | Description |
| - | - |
| `contents` | Resource content items. |
| `contents[].uri` | The requested resource URI. |
| `contents[].mimeType` | The content MIME type, when available. |
| `contents[].text` | The complete text of a text item. |
| `contents[].blob` | Base64-encoded content of a binary item. |
| `_meta`, `contents[]._meta` | Published result and content metadata, when available. |

Both tools return structured content and the same JSON as text.
Neither tool fetches web pages or reads files on your computer.
`read_resource` starts no compute when it reads a Skill file.
It isn't marked read-only, because its annotation covers any resource the server publishes: `readOnlyHint` false, `destructiveHint` false, `idempotentHint` false, and `openWorldHint` true.

## Limits

A `list_resources` or `read_resource` result is limited to 128 KiB (131,072 bytes), counting both copies of the result, JSON escaping, and metadata.
A larger result returns `resource_too_large` with `size_bytes` and `max_bytes`, and no partial content.

## Errors

| Code | What to do |
| - | - |
| `not_found` | Copy the exact URI from `list_resources`. |
| `resource_too_large` | Read the resource through your client's own MCP resource support. |

The tool schema rejects invalid input.

## Example prompts

* List the Biohub MCP resources without reading them.
* Use `read_resource` to read `skill://waveorder-tutorial/SKILL.md` and tell me what the Skill needs on my computer.
* Read `skill://waveorder-tutorial/_manifest` and list the files it publishes.
