Skip to main content
Glama

send_meta_transaction

Destructive

Relays a pre-signed meta-transaction via Biconomy so the user pays no gas. Requires sigR/sigS/sigV from a locally-signed EIP-712 payload. Use when the target operation requires metaTx relay. Optionally accepts transferAuthorizations (from the sign_receive_with_* tools, completed with your local signature) so the protocol can pull ERC-20 tokens without a prior approve_exchange_token tx. Returns: relay transaction data.

Input Schema

NameRequiredDescriptionDefault
sigRYes
sigSYes
sigVYes
nonceYes
configIdYesBoson/Fermion Protocol deployment identifier. Format: '<env>-<chainId>-<index>' e.g. 'production-137-0' (Polygon mainnet), 'testing-80002-0' (Amoy testnet). Call get_config_ids to list all valid values for this server.
functionNameYes
signerAddressYesEthereum address that will sign and send this transaction. Must match the wallet that will sign the returned transaction locally.
functionSignatureYes
transferAuthorizationsNoOptional ERC-20 transfer authorizations that let the protocol pull tokens without a prior approve_exchange_token tx (e.g. commit_to_offer or deposit_funds in metaTx mode). Build each entry with the matching sign_receive_with_* tool: sign its `typedData` locally and add the resulting `signature` to its `transferAuthorization` object.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / transferAuthorizations
      Added value: +{
      +  "description": "Optional ERC-20 transfer authorizations that let the protocol pull tokens without a prior approve_exchange_token tx (e.g. commit_to_offer or deposit_funds in metaTx mode). Build each entry with the matching sign_receive_with_* tool: sign its `typedData` locally and add the resulting `signature` to its `transferAuthorization` object.",
      +  "items": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "nonce": {
      +                "pattern": "^0x[a-fA-F0-9]{64}$",
      +                "type": "string"
      +              },
      +              "validAfter": {
      +                "anyOf": [
      +                  {
      +                    "pattern": "^(\\d+|0x[a-fA-F0-9]+)$",
      +                    "type": "string"
      +                  },
      +                  {
      +                    "maximum": 9007199254740991,
      +                    "minimum": 0,
      +                    "type": "integer"
      +                  }
      +                ]
      +              },
      +              "validBefore": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              }
      +            },
      +            "required": [
      +              "validAfter",
      +              "validBefore",
      +              "nonce"
      +            ],
      +            "type": "object"
      +          },
      +          "r": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/nonce",
      +            "description": "Optional r component. Derived from `signature` if omitted."
      +          },
      +          "s": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/nonce",
      +            "description": "Optional s component. Derived from `signature` if omitted."
      +          },
      +          "signature": {
      +            "description": "Signature of the typed data returned by the matching sign_receive_with_* tool, signed locally with your wallet (EIP-712).",
      +            "pattern": "^0x[a-fA-F0-9]+$",
      +            "type": "string"
      +          },
      +          "strategy": {
      +            "const": "ERC3009",
      +            "type": "string"
      +          },
      +          "v": {
      +            "anyOf": [
      +              {
      +                "pattern": "^\\d+$",
      +                "type": "string"
      +              },
      +              {
      +                "type": "integer"
      +              }
      +            ],
      +            "description": "Optional v component (27/28, or 0/1). Derived from `signature` if omitted. Provide r, s and v together or not at all."
      +          }
      +        },
      +        "required": [
      +          "strategy",
      +          "data",
      +          "signature"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "deadline": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              }
      +            },
      +            "required": [
      +              "deadline"
      +            ],
      +            "type": "object"
      +          },
      +          "r": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
      +          },
      +          "s": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
      +          },
      +          "signature": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
      +          },
      +          "strategy": {
      +            "const": "EIP2612",
      +            "type": "string"
      +          },
      +          "v": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
      +          }
      +        },
      +        "required": [
      +          "strategy",
      +          "data",
      +          "signature"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "deadline": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              },
      +              "nonce": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              }
      +            },
      +            "required": [
      +              "nonce",
      +              "deadline"
      +            ],
      +            "type": "object"
      +          },
      +          "r": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
      +          },
      +          "s": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
      +          },
      +          "signature": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
      +          },
      +          "strategy": {
      +            "const": "Permit2",
      +            "type": "string"
      +          },
      +          "v": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
      +          }
      +        },
      +        "required": [
      +          "strategy",
      +          "data",
      +          "signature"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "data": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "expiry": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              },
      +              "nonce": {
      +                "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/data/properties/validAfter"
      +              }
      +            },
      +            "required": [
      +              "nonce",
      +              "expiry"
      +            ],
      +            "type": "object"
      +          },
      +          "r": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/r"
      +          },
      +          "s": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/s"
      +          },
      +          "signature": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/signature"
      +          },
      +          "strategy": {
      +            "const": "DAIPermit",
      +            "type": "string"
      +          },
      +          "v": {
      +            "$ref": "#/properties/transferAuthorizations/items/anyOf/0/properties/v"
      +          }
      +        },
      +        "required": [
      +          "strategy",
      +          "data",
      +          "signature"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, and the description adds real context: no gas cost to the user, the EIP-712 sigR/sigS/sigV requirement, and the token-pull mechanism. It does not state that the relay is broadcast irreversibly on-chain or what happens if the nonce/signature is stale, which for a destructive write tool would be worth adding.

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?

Five tight sentences, front-loaded with the core action and gasless benefit, then signature requirements, use condition, optional authorizations, and the return value. Dense but no sentence is filler; the nested-signing detail is the only slightly heavy part.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-param, 8-required write tool with no output schema, the description covers the purpose, prerequisite signing flow, optional token-pull flow, and states the return value. The main gap is the absence of a routing rule against the two sibling meta-transaction tools.

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?

Schema coverage is low (33%), so the description must compensate, and it does for the critical cryptography params: it explains that sigR/sigS/sigV come from a locally-signed EIP-712 payload and that transferAuthorizations are built via sign_receive_with_* tools. functionName, functionSignature, and nonce remain undocumented, but the hardest params are covered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Relays a pre-signed meta-transaction via Biconomy' with the gasless rationale. It is clear what the tool does, but it does not distinguish itself from the sibling relay tools send_forwarded_meta_transaction and send_native_meta_transaction, which an agent must choose among.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use when the target operation requires metaTx relay' gives a condition, and it explains the transferAuthorizations alternative to approve_exchange_token. However it offers no guidance on when to pick this relay over send_forwarded_meta_transaction or send_native_meta_transaction, leaving the most likely sibling confusion unresolved.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources