MCP resource discovery and reading. Supports listing resources, reading content, and listing URI templates.

Functions

collect-pages

fn (session: ::mcp::types/Session, cursor: Str?, acc: Vec): Vec

list

fn (session: ::mcp::types/Session): Vec<::mcp::types/Resource>

List resources available on the MCP server (first page).

Returns a Vec of Resource, each with uri, name, description, and mime-type fields.

Example

::resources ::mcp::resources
resources ::resources/list(session)
// resources => [{uri: "file:///README.md", name: "README", ...}, ...]
first(resources).uri // => "file:///README.md"
first(resources).name // => "README"

list-all

fn (session: ::mcp::types/Session): Vec<::mcp::types/Resource>

List all resources across all pages, following pagination automatically.

Follows nextCursor links until all pages are exhausted. Returns a single Vec containing every resource.

Example

::resources ::mcp::resources
all-resources ::resources/list-all(session)
length(all-resources) // => total number of resources across all pages

list-page

fn (session: ::mcp::types/Session, cursor: Str?): Map

List resources with an explicit cursor for manual pagination.

Returns a Map with resources (Vec of Resource) and next-cursor (Str or null). Pass null as the cursor for the first page.

Example

::resources ::mcp::resources
page ::resources/list-page(session, null)
page.resources // => [{uri: "...", name: "...", ...}, ...]
page.next-cursor // => "cursor-abc" or null

list-templates

fn (session: ::mcp::types/Session): Vec<::mcp::types/ResourceTemplate>

List resource URI templates from the MCP server.

Templates use RFC 6570 syntax for parameterized resource URIs. Each template has uri-template, name, description, and mime-type fields.

Example

::resources ::mcp::resources
templates ::resources/list-templates(session)
// templates => [{uri-template: "file:///{path}", name: "File", ...}, ...]
first(templates).uri-template // => "file:///{path}"

list-templates-result

fn (session: ::mcp::types/Session): Map

List resource templates and retain pagination/cache metadata.

read

fn (session: ::mcp::types/Session, uri: Str): Vec<::mcp::types/ResourceContent>

Read a resource from the MCP server by URI.

Returns a Vec of ResourceContent (most resources return a single item). Each content item has uri, and either text (for text resources) or blob (base64-encoded, for binary resources).

Example

::resources ::mcp::resources
contents ::resources/read(session, "file:///project/README.md")
content first(contents)
content.uri  // => "file:///project/README.md"
content.text // => "# My Project\n..."

read-result

fn (session: ::mcp::types/Session, uri: Str): Map

Read a resource and retain its modern result type, cache hints, and metadata.

read-with-input

fn (session: ::mcp::types/Session, uri: Str, handler: Fn, max-rounds: Int): Vec<::mcp::types/ResourceContent>

Read a resource while fulfilling modern Multi Round-Trip input requests.