Skip to main content
Glama
Unilytics MCP Server

Unilytics MCP Server

Official

read_skill_file

Read-only

Fetch a skill’s reference or data file by path and page through long files via cursor, enabling agents to load only the content required for the current step.

Instructions

Return one reference or data file of a skill (e.g. "reference/keyword-pipeline.md", "data/verify_row.py").

A skill keeps long documents and scripts in separate files so they're read only when a step
needs them; get_skill lists them as reference_files and data_files. A long file comes
in pages of up to 40,000 characters as sent (JSON-escaped, so quotes and line breaks count
twice): `truncated` is true and `next_cursor` is set while more follows;
pass it back as `cursor` for the next page. The pages joined in order are the file exactly, and
`sha256` is the hex SHA-256 of the whole file's UTF-8 bytes (the same on every page).

Args:
    skill_id: The skill id (a built-in such as "context/context_write_qa", or user/..., project/...
        or unilytics/...).
    path: The file path within the skill (e.g. "reference/competitor-analysis.md").
        `file_path` is accepted as an alias (matches the file tools).
    cursor: next_cursor from a previous call, for the next page of the file.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "skill_id": "<skill_id>"
    },
    "name": "read_skill_file"
  }
}

Input Schema

NameRequiredDescriptionDefault
pathNo
cursorNo
skill_idYes
file_pathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.1.0
    • removedInput schema / properties / config
      Removed value: -{
      -  "default": null,
      -  "title": "config",
      -  "type": "string"
      -}
    • addedInput schema / properties / cursor
      Added value: +{
      +  "default": null,
      +  "title": "Cursor",
      +  "type": "string"
      +}
  2. First observedv1.0.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description goes well beyond them: it discloses pagination via truncated/next_cursor, the 40,000-character page size measured on JSON-escaped text, that joined pages reproduce the file exactly, and that sha256 is stable across pages. That is exactly the behavioral context an agent needs to reassemble a file correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and examples, then pagination semantics, then args. Every sentence is substantive, though the parenthetical about JSON-escaping doubling quote and line-break counts is dense and slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes responsibility for return values (truncated, next_cursor, sha256) and explains how to consume them. Combined with full parameter coverage and the read-only annotation, an agent has everything needed to call and page through a file.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry the load, and it does: skill_id is explained with built-in and user/project/unilytics prefixes, path is explained with an example and the file_path alias, and cursor is tied to next_cursor from a prior call. All four schema properties are given meaning beyond their bare titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Return one reference or data file of a skill') and immediately grounds it with concrete path examples. It also distinguishes itself from get_skill by noting that get_skill lists files as reference_files and data_files, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the usage context clearly: skills keep long documents in separate files 'so they're read only when a step needs them', and points to get_skill for discovery. It stops short of explicit when-not-to-use guidance or naming other file-reading siblings, so it is strong but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools