send-message-to-process
Send a message containing data and optional tags to a specific process on the Flux MCP server for streamlined interaction with the Arweave Operating System.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| processId | Yes | ||
| tags | No |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"data": {
"type": "string"
},
"processId": {
"type": "string"
},
"tags": {
"items": {
"additionalProperties": false,
"properties": {
"name": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"name",
"value"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"processId",
"data"
],
"type": "object"
}
Implementation Reference
- src/mcp.ts:101-125 (handler)The core handler function for the 'send-message-to-process' tool. It sends a message to the specified AO process using the `message` function from `@permaweb/aoconnect`, waits briefly with `sleep(100)`, retrieves the output using `result`, handles errors, cleans the output with `cleanOutput`, and formats the response as MCP content.async ({ processId, data, tags }) => { const messageId = await message({ process: processId, signer: this.signer, data, tags, }); await sleep(100); const output = await result({ message: messageId, process: processId, }); if (output.Error) { return { content: [{ type: "text", text: cleanOutput(output.Error) }], }; } return { content: [ { type: "text", text: cleanOutput(output.Messages[0].Data) }, ], }; }
- src/mcp.ts:89-100 (schema)Zod input schema for the tool: required `processId` (string), `data` (string), optional `tags` (array of objects with `name` and `value` strings). Defines validation for tool parameters.{ processId: z.string(), data: z.string(), tags: z .array( z.object({ name: z.string(), value: z.string(), }) ) .optional(), },
- src/mcp.ts:86-126 (registration)Registration of the 'send-message-to-process' tool on the McpServer instance within the FluxServer class's registerTools method. Includes name, description, schema, and inline handler function.this.server.tool( "send-message-to-process", "send a message to an existing AO process", { processId: z.string(), data: z.string(), tags: z .array( z.object({ name: z.string(), value: z.string(), }) ) .optional(), }, async ({ processId, data, tags }) => { const messageId = await message({ process: processId, signer: this.signer, data, tags, }); await sleep(100); const output = await result({ message: messageId, process: processId, }); if (output.Error) { return { content: [{ type: "text", text: cleanOutput(output.Error) }], }; } return { content: [ { type: "text", text: cleanOutput(output.Messages[0].Data) }, ], }; } );
- src/mcp.ts:14-20 (helper)Helper function used by the tool (and others) to clean ANSI escape codes and normalize newlines in JSON-stringified output before returning to the user.function cleanOutput(result: any): string { if (!result) return ""; return JSON.stringify(result, null, 2) .replace(/\\u001b\[\d+m/g, "") .replace(/\\n/g, "\n"); }