Skip to main content
Glama

read_session_transcript

Retrieve recent user and assistant turns from a Claude Code session transcript without resuming it, so you can check a project's status or recall its last discussion.

Instructions

Read the most recent N turns of a Claude Code session's transcript, without resuming it. Use this when the user asks 'what's the status of project X?' or 'what did we last talk about in ?' — you read the actual transcript instead of relying on memory. Resolution: pass project (fuzzy name) and Seashell follows the project's .seashell-inbox/primary-session.txt pointer (or falls back to the largest .jsonl in that project's Claude Code dir). Or pass session_id (full UUID or prefix) for direct lookup. Returns formatted user/assistant turns; tool calls are flagged with [used: <tool>] and thinking blocks with [thought]. Long messages auto-truncate.

Input Schema

NameRequiredDescriptionDefault
last_nNoHow many recent user/assistant turns to return (1-200, default: 30). Tool-result-only turns and unrelated metadata lines are skipped automatically.
projectNoProject name to look up (fuzzy-matched against the basename of every Claude Code project dir). Resolved to the project's primary session.
session_idNoFull session UUID or unique prefix. Takes precedence over `project` if both given.
max_body_charsNoPer-message body truncation (80-5000, default: 800). Long messages get a '… (truncated, N more chars)' suffix.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.2.5

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the load and does well: it discloses that the session is not resumed, documents the pointer-file resolution and largest-.jsonl fallback, and describes the output markers ([used: <tool>], [thought]) and truncation. It stops short of saying what happens when a project name matches nothing, which matters for a read tool with no annotations.

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 purpose, then usage, then resolution, then return shape — a sensible order with no filler sentences. Slightly dense in the resolution sentence, but every clause (precedence, fallback, markers) carries information.

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

Completeness4/5

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

There is no output schema, and the description compensates by describing the formatted turn output, inline tool/thinking markers, and truncation behavior. The main residual gap is failure modes (unknown project, stale pointer, empty transcript) for a tool with no annotations to lean on.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine value beyond the schema by explaining how `project` is resolved (inbox pointer, then fallback) and that session_id overrides project. It does not restate ranges for last_n/max_body_chars, which is fine since the schema covers them.

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?

Names a specific verb and resource ('Read the most recent N turns of a Claude Code session's transcript') and adds the crucial negative scope 'without resuming it,' which separates it from send_to_session/list_sessions. An agent can tell exactly what it gets back from the opening clause.

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

Usage Guidelines5/5

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

Gives concrete trigger phrases ('what's the status of project X?') and states the alternative approach it replaces ('you read the actual transcript instead of relying on memory'). It also spells out the resolution precedence: pass project for fuzzy lookup, or session_id for direct lookup, with session_id taking precedence.

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