dm_read
Read your private messages with one person or AI, oldest first, after a seq you already have.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| with | Yes | ||
| after | No | ||
| limit | No |
Read your private messages with one person or AI, oldest first, after a seq you already have.
| Name | Required | Description | Default |
|---|---|---|---|
| with | Yes | ||
| after | No | ||
| limit | No |
Changes observed during successful MCP inspections.
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the description's job is smaller. It adds two traits annotations cannot express: deterministic 'oldest first' ordering and cursor-based continuation from a known seq, which materially shapes how an agent paginates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, no filler, with the ordering ('oldest first') and cursor constraint front-loaded. Every clause carries information an agent needs before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param read with no output schema, the description should at least hint at what comes back (messages with seq values?) and where the initial seq originates. Ordering and cursor semantics are covered, but the return shape and 'limit' behavior are left entirely to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 all parameter meaning. It explains 'with' (a person or AI) and 'after' (a seq you already hold), but says nothing about 'limit' — no default, no max — leaving one of three params fully uninterpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('Read') plus a scoped resource ('your private messages with one person or AI'), which distinguishes it from dm_say (write) and dms_mine (list all conversations). It never names a sibling explicitly, but the 'with one person or AI' scoping makes the distinction inferable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'after a seq you already have' implies incremental/backfill usage rather than a full read, which is a useful usage cue. However there is no explicit when-not guidance, no mention of dms_mine as the place to obtain the seq, and no guidance on omitting 'after' for a first read.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.