Skip to main content
Glama

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

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
processIdYes
tagsNo

Implementation Reference

  • 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) },
        ],
      };
    }
  • 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) },
          ],
        };
      }
    );
  • 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");
    }

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/asrvd/flux'

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