Skip to main content
Glama
masto

pidp10-mcp

by masto

send

Transmits input to an ITS session and returns the output it produces.

Instructions

Send input to ITS and return the output it produced.

A CR (0x0D) is appended automatically -- that is what the line editor wants -- unless input ends with the ~- marker or raw is true. Any literal LF/CRLF in input is normalised to CR, because a bare LF is a DDT command (examine next location) rather than a newline.

Returns only output produced since the previous call, plus a one-word end reason: matched, quiet, timeout, more_limit or dead.

Examples: send("z") calls ITS; send("fooej") sends f-o-o ESC j CR, the DDT altmode form usually written foo$j; send(":login rms", expect="@").

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
rawNoSend the expanded bytes verbatim: no CR appended, no newline normalisation.
inputYesText to send. Escapes in `input`: ~z=^Z(0x1A, calls ITS on a fresh line), ~e=ESC/altmode (DDT's $), ~c=^C, ~g=^G, ~d=rubout(0x7F), ~s=^S, ~o=^O, ~r=CR, ~n=LF (a DDT command, not a newline), ~t=tab, ~xNN=hex byte, ~~=literal tilde, trailing ~-=do not append CR.
expectNoRegex; return as soon as it matches the new output.
quiet_msNoReturn once the line has been silent this long. The timer only starts after the first byte arrives.
auto_moreNoAnswer '--More--' pager prompts with a space and keep collecting, up to 20 pages.
timeout_msNoHard cap on how long to wait.
Behavior5/5

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

With no annotations, the description fully discloses behavior: automatic CR appending, newline normalization to CR, return of only output since the previous call, and the one-word end reason (matched, quiet, timeout, more_limit, dead). It also explains subtle ITS/DDT quirks (bare LF is a DDT command) and provides escape semantics, giving exceptional transparency.

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?

The description is front-loaded with a clear purpose and then explains essential behavior in a streamlined paragraph. It is dense but every sentence provides unique value (CR behavior, return format, examples). It could be slightly more structured with bullets, but is appropriately concise for a complex tool.

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?

Despite no output schema, the description explicitly states the return format (output since previous call plus an end reason) and enumerates possible end reasons. It covers all six parameters, escape syntax, and important edge cases (e.g., ~- marker, auto_more paging), making the description complete for correct invocation.

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?

The schema descriptions cover 100% of parameters, providing a strong baseline. The description adds value beyond the schema by giving concrete usage examples (e.g., 'foo~ej' for DDT altmode) and explaining behavioral implications like CR handling and end reasons, which clarify how parameters affect outcomes.

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?

The first sentence 'Send input to ITS and return the output it produced' uses a specific verb ('send') with a clear resource ('input to ITS') and outcome ('return the output'). It clearly distinguishes from sibling tools like read, peek, and status by focusing on the act of sending input.

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?

The description provides strong contextual guidance through examples such as send("~z") and send(":login rms", expect="@"), making it clear when to use the tool. However, it does not explicitly contrast with alternatives (e.g., 'use read when you only need output'), so it stops short of a perfect score.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/masto/pidp10-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server