ruvnet/ruflo · error · Error
read action requires mail_id
Error message
read action requires mail_id
What it means
The mail tool's 'read' action was invoked without a mail_id. The schema leaves mail_id optional for the other actions, so this per-action guard enforces its presence specifically for reading a message.
Source
Thrown at v3/plugins/gastown-bridge/src/mcp-tools.ts:1445
const startTime = Date.now();
try {
const validated = MailInputSchema.parse(input);
const bridge = context.bridges.gastown;
let messages: GasTownMail[] | undefined;
let sent_id: string | undefined;
switch (validated.action) {
case 'send':
if (!validated.to || !validated.subject || !validated.body) {
throw new Error('send action requires to, subject, and body');
}
sent_id = await bridge.sendMail(validated.to, validated.subject, validated.body);
break;
case 'read':
if (!validated.mail_id) {
throw new Error('read action requires mail_id');
}
messages = [await bridge.readMail(validated.mail_id)];
break;
case 'list':
messages = await bridge.listMail(validated.limit);
break;
}
const result: MailResult = {
success: true,
action: validated.action,
messages,
sent_id,
durationMs: Date.now() - startTime,
};
return {
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],View on GitHub (pinned to fa13ee4ad6)
Solutions
- Inspect the underlying cause in logs, fix the root issue, and retry the operation.
- Validate inputs and preconditions before invoking this code path so the error is avoided.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at v3/plugins/gastown-bridge/src/mcp-tools.ts:1445 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruvnet/ruflo@fa13ee4ad6 (2026-08-18).
Data as JSON: /api/errors/e916a04bae16be76.
Report an issue: GitHub.