Skip to main content
Glama
Zetrix-Chain

Zetrix MCP Server

Official
by Zetrix-Chain

zetrix_ws_submit_transaction

Submit blockchain transactions via WebSocket to receive real-time status updates for monitoring and verification.

Instructions

Submit transaction via WebSocket and get real-time status updates

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
transactionYesTransaction object
signaturesYesArray of signature objects with public_key and sign_data
triggerNoOptional trigger object

Implementation Reference

  • src/index.ts:368-388 (registration)
    Tool registration in the tools array, defining name, description, and inputSchema for MCP tool listing.
    {
      name: "zetrix_ws_submit_transaction",
      description: "Submit transaction via WebSocket and get real-time status updates",
      inputSchema: {
        type: "object",
        properties: {
          transaction: {
            type: "object",
            description: "Transaction object",
          },
          signatures: {
            type: "array",
            description: "Array of signature objects with public_key and sign_data",
          },
          trigger: {
            type: "object",
            description: "Optional trigger object",
          },
        },
        required: ["transaction", "signatures"],
      },
  • MCP server request handler switch case that validates arguments, retrieves WebSocket client, calls submitTransaction, and returns the result.
    case "zetrix_ws_submit_transaction": {
      if (!args) {
        throw new Error("Missing arguments");
      }
      const wsClient = getWebSocketClient();
      const result = await wsClient.submitTransaction(
        args.transaction,
        args.signatures as Array<{ public_key: string; sign_data: string }>,
        args.trigger
      );
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
  • Core tool logic implementation in ZetrixWebSocketClient: validates registration, constructs ChainSubmitTransactionRequest message, sends via WebSocket, sets up listener for tx_status response with timeout, resolves with ChainTxStatusResponse.
    submitTransaction(
      transaction: any,
      signatures: Array<{ public_key: string; sign_data: string }>,
      trigger?: any
    ): Promise<ChainTxStatusResponse> {
      return new Promise((resolve, reject) => {
        if (!this.isRegistered) {
          reject(new Error("WebSocket not registered. Call registerAndConnect first."));
          return;
        }
    
        const request: ChainSubmitTransactionRequest = {
          type: ChainMessageType.CHAIN_SUBMITTRANSACTION,
          transaction,
          signatures,
          trigger,
        };
    
        const timeout = setTimeout(() => {
          this.off("tx_status", onTxStatus);
          reject(new Error("Transaction submission timeout"));
        }, 30000);
    
        const onTxStatus = (response: ChainTxStatusResponse) => {
          clearTimeout(timeout);
          resolve(response);
        };
    
        this.once("tx_status", onTxStatus);
        this.sendMessage(request);
      });
    }

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/Zetrix-Chain/zetrix-mcp-server'

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