Skip to content

Warp Protocol

A Warp is a JSON object that declares an executable action — a smart contract call, a read query, an HTTP request, or an AI prompt. It can be executed by a user, an app, or an AI agent.

Structure

Every Warp has a protocol version, a name, a target chain, and one or more actions:

json
{
  "protocol": "warp:3.0.0",
  "name": "my-warp",
  "chain": "multiversx",
  "actions": [...]
}

chain identifies the target network. Supported values: multiversx, ethereum, base, arbitrum, polygon, solana, sui, and more.

Contract Call

The example below calls a stake function on a contract. The user provides the amount at execution time — the input is mapped directly to the first contract argument.

json
{
  "protocol": "warp:3.0.0",
  "name": "stake-tokens",
  "chain": "multiversx",
  "actions": [
    {
      "type": "contract",
      "label": "Stake",
      "address": "erd1qqqqqqqq...contract",
      "func": "stake",
      "gasLimit": 5000000,
      "inputs": [
        {
          "name": "Amount",
          "as": "amount",
          "type": "uint256",
          "source": "field",
          "position": "arg:1",
          "modifier": "scale:18"
        }
      ]
    }
  ]
}

position: "arg:1" maps the input to the first contract argument. modifier: "scale:18" converts a human-readable number (e.g. 1.5) to its 18-decimal on-chain form.

Query

Read contract state without creating a transaction. Results are captured in the output map — for display or as inputs to a subsequent warp.

json
{
  "protocol": "warp:3.0.0",
  "name": "get-staked-balance",
  "chain": "multiversx",
  "actions": [
    {
      "type": "query",
      "label": "Check Staked Balance",
      "address": "erd1qqqqqqqq...contract",
      "func": "getStakedAmount",
      "args": ["address:erd1caller..."],
      "auto": true
    }
  ],
  "output": {
    "BALANCE": "out.1"
  }
}

out.1 is the first return value from the contract view. BALANCE is then available for display or as a variable ({{BALANCE}}) in any chained warp.

Inputs

Inputs can come from a form field (source: "field"), a URL query parameter (source: "query"), or injected directly by an AI agent. See Inputs for the full reference.

The same Warp format works for HTTP service calls (collect) and AI/LLM text generation (prompt).

Next Steps

  • Action Types — all 12 action types with full specs
  • Inputs — collecting and transforming values
  • Chaining — multi-step workflows and output passing
  • Chains — all supported networks
  • SDKs — TypeScript, React, PHP
  • Specifications — complete JSON reference