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.