{
  "schemaVersion": "1.0",
  "item": {
    "slug": "moralis-streams-api",
    "name": "Moralis Streams Api",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/novnski/moralis-streams-api",
    "canonicalUrl": "https://clawhub.ai/novnski/moralis-streams-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/moralis-streams-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=moralis-streams-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/CommonPitfalls.md",
      "references/DeliveryGuarantees.md",
      "references/ErrorHandling.md",
      "references/FAQ.md",
      "references/FilterStreams.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/moralis-streams-api"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/moralis-streams-api",
    "agentPageUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "CRITICAL: Read Rule Files Before Implementing",
        "body": "The #1 cause of bugs is using wrong HTTP methods or stream configurations.\n\nFor EVERY endpoint:\n\nRead rules/{EndpointName}.md\nCheck HTTP method (PUT for create, POST for update, DELETE for delete)\nVerify stream ID format (UUID, not hex)\nUse hex chain IDs (0x1, 0x89), not names (eth, polygon)\n\nReading Order:\n\nThis SKILL.md (core patterns)\nEndpoint rule file in rules/\nPattern references in references/ (for edge cases only)"
      },
      {
        "title": "API Key (optional)",
        "body": "Never ask the user to paste their API key into the chat. Instead:\n\nCheck if MORALIS_API_KEY is set in the environment (try running [ -n \"$MORALIS_API_KEY\" ] && echo \"API key is set\" || echo \"API key is NOT set\").\nIf not set, offer to create the .env file with an empty placeholder: MORALIS_API_KEY=\nTell the user to open the .env file and paste their key there themselves.\nLet them know: without the key, you won't be able to test or call the Moralis API on their behalf.\n\nIf they don't have a key yet, point them to admin.moralis.com/register (free, no credit card)."
      },
      {
        "title": "Environment Variable Discovery",
        "body": "The .env file location depends on how skills are installed:\n\nCreate the .env file in the project root (same directory the user runs Claude Code from). Make sure .env is in .gitignore."
      },
      {
        "title": "Verify Your Key",
        "body": "curl \"https://api.moralis-streams.com/streams/evm?limit=10\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\""
      },
      {
        "title": "Base URL",
        "body": "https://api.moralis-streams.com\n\nImportant: Different from Data API (deep-index.moralis.io)."
      },
      {
        "title": "Authentication",
        "body": "All requests require: X-API-Key: $MORALIS_API_KEY"
      },
      {
        "title": "HTTP Methods (CRITICAL)",
        "body": "ActionMethodEndpointCreate streamPUT/streams/evmUpdate streamPOST/streams/evm/{id}Delete streamDELETE/streams/evm/{id}Get streamsGET/streams/evmReplace addressesPATCH/streams/evm/{id}/address\n\nCommon mistake: Using POST to create streams. Use PUT instead."
      },
      {
        "title": "Stream Types",
        "body": "TypeDescriptiontxNative transactionslogContract event logserc20transferERC20 token transferserc20approvalERC20 approvalsnfttransferNFT transfersinternalTxInternal transactions"
      },
      {
        "title": "Stream ID Format (ALWAYS UUID)",
        "body": "// WRONG - Hex format\n\"0x1234567890abcdef\"\n\n// CORRECT - UUID format\n\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\""
      },
      {
        "title": "Chain IDs (ALWAYS hex)",
        "body": "\"0x1\"     // Ethereum\n\"0x89\"    // Polygon\n\"0x38\"    // BSC\n\"0xa4b1\"  // Arbitrum\n\"0xa\"     // Optimism\n\"0x2105\"  // Base"
      },
      {
        "title": "Event Signatures (topic0)",
        "body": "\"Transfer(address,address,uint256)\"   // ERC20/NFT Transfer\n\"Approval(address,address,uint256)\"   // ERC20 Approval"
      },
      {
        "title": "Status Values (lowercase only)",
        "body": "\"active\"      // CORRECT - normal operating state\n\"paused\"      // CORRECT - manually paused\n\"error\"       // CORRECT - auto-set when webhook success rate <70%\n\"terminated\"  // CORRECT - unrecoverable, after 24h in error\n\"ACTIVE\"      // WRONG"
      },
      {
        "title": "Common Pitfalls (Top 5)",
        "body": "Using POST to create streams - Use PUT instead\nWrong base URL - Use api.moralis-streams.com, NOT deep-index.moralis.io\nHex stream ID - Must be UUID format, not hex\nString chain names - Use hex (0x1), not names (eth)\nUppercase status - Use lowercase (\"active\", \"paused\")\nNot returning 200 on test webhook - Stream won't start unless your endpoint returns 2xx on the test webhook sent during create/update\n\nSee references/CommonPitfalls.md for complete reference."
      },
      {
        "title": "Triggers (Read-Only Contract Calls)",
        "body": "Enrich webhook data with on-chain reads (e.g., balanceOf). Triggers execute view/pure functions and attach results to webhook events. Supports dynamic selectors ($contract, $from, $to). See references/Triggers.md for complete reference with examples."
      },
      {
        "title": "Native Balances in Webhooks",
        "body": "Configure getNativeBalances to include native token balances (ETH, BNB, etc.) in webhook payloads. Requires Business plan+. See references/UsefulStreamOptions.md for configuration details."
      },
      {
        "title": "Delivery and Error Handling",
        "body": "Two webhooks per event: Unconfirmed (confirmed: false) + Confirmed (confirmed: true). Idempotent handlers required.\nStreams auto-terminate after 24 hours in error state (webhook success rate <70%). This is unrecoverable — you must create a new stream.\nTest webhook: Sent on every create/update. Must return 200 or stream won't start.\n\nSee references/DeliveryGuarantees.md and references/ErrorHandling.md."
      },
      {
        "title": "Webhook Security",
        "body": "Webhooks are signed with your streams secret (different from API key).\n\nHeader: x-signature\nAlgorithm: sha3(JSON.stringify(body) + secret)\n\nconst verifySignature = (req, secret) => {\n  const provided = req.headers[\"x-signature\"];\n  const generated = web3.utils.sha3(JSON.stringify(req.body) + secret);\n  if (generated !== provided) throw new Error(\"Invalid Signature\");\n};\n\nSee references/WebhookSecurity.md for complete examples."
      },
      {
        "title": "Testing Endpoints",
        "body": "WEBHOOK_URL=\"https://your-server.com/webhook\"\n\n# List streams (requires limit)\ncurl \"https://api.moralis-streams.com/streams/evm?limit=100\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\"\n\n# Create stream (PUT, not POST)\ncurl -X PUT \"https://api.moralis-streams.com/streams/evm\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"webhookUrl\": \"'${WEBHOOK_URL}'\",\n    \"description\": \"Test stream\",\n    \"tag\": \"test\",\n    \"topic0\": [\"Transfer(address,address,uint256)\"],\n    \"allAddresses\": false,\n    \"chainIds\": [\"0x1\"]\n  }'\n\n# Pause stream (POST to status)\ncurl -X POST \"https://api.moralis-streams.com/streams/evm/<stream_id>/status\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"status\": \"paused\"}'"
      },
      {
        "title": "Quick Troubleshooting",
        "body": "IssueCauseSolution\"400 Bad Request\"Invalid configCheck webhookUrl, topic0 format, chainIds\"404 Not Found\"Wrong stream IDVerify UUID format\"Method Not Allowed\"Wrong HTTP methodPUT for create, POST for update\"Missing limit\"GET /streams/evmAdd ?limit=100\"No webhooks\"Stream pausedCheck status is \"active\""
      },
      {
        "title": "Endpoint Catalog",
        "body": "Complete list of all 20 Streams API endpoints organized by category."
      },
      {
        "title": "Stream Management",
        "body": "Create, update, delete, and manage streams.\n\nEndpointDescriptionAddAddressToStreamAdd address to streamCreateStreamCreate streamDeleteAddressFromStreamDelete address from streamDeleteStreamDelete streamDuplicateStreamDuplicate streamGetAddressesGet addresses by streamGetHistoryGet historyGetLogsGet logsGetSettingsGet project settingsGetStatsGet project statsGetStatsByStreamIdGet project stats by Stream IDGetStreamGet a specific evm stream.GetStreamBlockDataByNumberGet webhook data returned on the block number with provided stream configGetStreamBlockDataToWebhookByNumberSend webhook based on a specific block number using stream config and addresses.GetStreamsGet streamsReplaceAddressFromStreamReplaces address from streamUpdateStreamUpdate streamUpdateStreamStatusUpdate stream status"
      },
      {
        "title": "Status & Settings",
        "body": "Pause/resume streams and configure settings.\n\nEndpointDescriptionSetSettingsSet project settings"
      },
      {
        "title": "History & Analytics",
        "body": "Stream history, replay, statistics, logs, and block data.\n\nEndpointDescriptionReplayHistoryReplay history"
      },
      {
        "title": "Listen to All Addresses",
        "body": "Set allAddresses: true with a topic0 and abi to monitor an event across every contract on a chain (e.g., all ERC20 transfers network-wide). Requires higher-tier plans. See references/ListenToAllAddresses.md for complete examples, ABI templates, and gotchas."
      },
      {
        "title": "Example: Create ERC20 Transfer Monitor",
        "body": "curl -X PUT \"https://api.moralis-streams.com/streams/evm\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"webhookUrl\": \"https://your-server.com/webhook\",\n    \"description\": \"Monitor ERC20 transfers\",\n    \"tag\": \"erc20-monitor\",\n    \"topic0\": [\"Transfer(address,address,uint256)\"],\n    \"allAddresses\": true,\n    \"chainIds\": [\"0x1\", \"0x89\"],\n    \"advancedOptions\": [{\n      \"topic0\": \"Transfer(address,address,uint256)\",\n      \"includeNativeHash\": true\n    }]\n  }'"
      },
      {
        "title": "Pagination",
        "body": "List endpoints use cursor-based pagination:\n\n# First page\ncurl \"...?limit=100\" -H \"X-API-Key: $KEY\"\n\n# Next page\ncurl \"...?limit=100&cursor=<cursor>\" -H \"X-API-Key: $KEY\""
      },
      {
        "title": "Supported Chains",
        "body": "All major EVM chains: Ethereum (0x1), Polygon (0x89), BSC (0x38), Arbitrum (0xa4b1), Optimism (0xa), Base (0x2105), Avalanche (0xa86a), and more.\n\nSee references/StreamConfiguration.md for complete chain ID list."
      },
      {
        "title": "Reference Documentation",
        "body": "references/CommonPitfalls.md - Complete pitfalls reference\nreferences/DeliveryGuarantees.md - At-least-once delivery, dual webhooks, confirmation blocks, test webhooks\nreferences/ErrorHandling.md - Retry schedule, error/terminated states, rate limits, re-org handling\nreferences/FAQ.md - Streams API frequently asked questions\nreferences/FilterStreams.md - Webhook data filtering to reduce noise\nreferences/ListenToAllAddresses.md - Monitor events across all contracts on a chain\nreferences/MonitorMultipleAddresses.md - Multi-address monitoring patterns\nreferences/ReplayFailedWebhooks.md - Replay failed webhook guide\nreferences/StreamConfiguration.md - Stream config reference\nreferences/Triggers.md - Read-only contract call enrichment (balanceOf, etc.)\nreferences/Tutorials.md - Real-world examples and tutorials\nreferences/UsefulStreamOptions.md - Advanced stream configuration options\nreferences/WebhookResponseBody.md - Webhook payload structure\nreferences/WebhookSecurity.md - Signature verification"
      },
      {
        "title": "See Also",
        "body": "Endpoint rules: rules/*.md files\nData API: @moralis-data-api for querying blockchain state"
      }
    ],
    "body": "CRITICAL: Read Rule Files Before Implementing\n\nThe #1 cause of bugs is using wrong HTTP methods or stream configurations.\n\nFor EVERY endpoint:\n\nRead rules/{EndpointName}.md\nCheck HTTP method (PUT for create, POST for update, DELETE for delete)\nVerify stream ID format (UUID, not hex)\nUse hex chain IDs (0x1, 0x89), not names (eth, polygon)\n\nReading Order:\n\nThis SKILL.md (core patterns)\nEndpoint rule file in rules/\nPattern references in references/ (for edge cases only)\nSetup\nAPI Key (optional)\n\nNever ask the user to paste their API key into the chat. Instead:\n\nCheck if MORALIS_API_KEY is set in the environment (try running [ -n \"$MORALIS_API_KEY\" ] && echo \"API key is set\" || echo \"API key is NOT set\").\nIf not set, offer to create the .env file with an empty placeholder: MORALIS_API_KEY=\nTell the user to open the .env file and paste their key there themselves.\nLet them know: without the key, you won't be able to test or call the Moralis API on their behalf.\n\nIf they don't have a key yet, point them to admin.moralis.com/register (free, no credit card).\n\nEnvironment Variable Discovery\n\nThe .env file location depends on how skills are installed:\n\nCreate the .env file in the project root (same directory the user runs Claude Code from). Make sure .env is in .gitignore.\n\nVerify Your Key\ncurl \"https://api.moralis-streams.com/streams/evm?limit=10\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\"\n\nBase URL\nhttps://api.moralis-streams.com\n\n\nImportant: Different from Data API (deep-index.moralis.io).\n\nAuthentication\n\nAll requests require: X-API-Key: $MORALIS_API_KEY\n\nHTTP Methods (CRITICAL)\nAction\tMethod\tEndpoint\nCreate stream\tPUT\t/streams/evm\nUpdate stream\tPOST\t/streams/evm/{id}\nDelete stream\tDELETE\t/streams/evm/{id}\nGet streams\tGET\t/streams/evm\nReplace addresses\tPATCH\t/streams/evm/{id}/address\n\nCommon mistake: Using POST to create streams. Use PUT instead.\n\nStream Types\nType\tDescription\ntx\tNative transactions\nlog\tContract event logs\nerc20transfer\tERC20 token transfers\nerc20approval\tERC20 approvals\nnfttransfer\tNFT transfers\ninternalTx\tInternal transactions\nQuick Reference: Most Common Patterns\nStream ID Format (ALWAYS UUID)\n// WRONG - Hex format\n\"0x1234567890abcdef\"\n\n// CORRECT - UUID format\n\"a1b2c3d4-e5f6-7890-abcd-ef1234567890\"\n\nChain IDs (ALWAYS hex)\n\"0x1\"     // Ethereum\n\"0x89\"    // Polygon\n\"0x38\"    // BSC\n\"0xa4b1\"  // Arbitrum\n\"0xa\"     // Optimism\n\"0x2105\"  // Base\n\nEvent Signatures (topic0)\n\"Transfer(address,address,uint256)\"   // ERC20/NFT Transfer\n\"Approval(address,address,uint256)\"   // ERC20 Approval\n\nStatus Values (lowercase only)\n\"active\"      // CORRECT - normal operating state\n\"paused\"      // CORRECT - manually paused\n\"error\"       // CORRECT - auto-set when webhook success rate <70%\n\"terminated\"  // CORRECT - unrecoverable, after 24h in error\n\"ACTIVE\"      // WRONG\n\nCommon Pitfalls (Top 5)\nUsing POST to create streams - Use PUT instead\nWrong base URL - Use api.moralis-streams.com, NOT deep-index.moralis.io\nHex stream ID - Must be UUID format, not hex\nString chain names - Use hex (0x1), not names (eth)\nUppercase status - Use lowercase (\"active\", \"paused\")\nNot returning 200 on test webhook - Stream won't start unless your endpoint returns 2xx on the test webhook sent during create/update\n\nSee references/CommonPitfalls.md for complete reference.\n\nTriggers (Read-Only Contract Calls)\n\nEnrich webhook data with on-chain reads (e.g., balanceOf). Triggers execute view/pure functions and attach results to webhook events. Supports dynamic selectors ($contract, $from, $to). See references/Triggers.md for complete reference with examples.\n\nNative Balances in Webhooks\n\nConfigure getNativeBalances to include native token balances (ETH, BNB, etc.) in webhook payloads. Requires Business plan+. See references/UsefulStreamOptions.md for configuration details.\n\nDelivery and Error Handling\nTwo webhooks per event: Unconfirmed (confirmed: false) + Confirmed (confirmed: true). Idempotent handlers required.\nStreams auto-terminate after 24 hours in error state (webhook success rate <70%). This is unrecoverable — you must create a new stream.\nTest webhook: Sent on every create/update. Must return 200 or stream won't start.\n\nSee references/DeliveryGuarantees.md and references/ErrorHandling.md.\n\nWebhook Security\n\nWebhooks are signed with your streams secret (different from API key).\n\nHeader: x-signature\nAlgorithm: sha3(JSON.stringify(body) + secret)\nconst verifySignature = (req, secret) => {\n  const provided = req.headers[\"x-signature\"];\n  const generated = web3.utils.sha3(JSON.stringify(req.body) + secret);\n  if (generated !== provided) throw new Error(\"Invalid Signature\");\n};\n\n\nSee references/WebhookSecurity.md for complete examples.\n\nTesting Endpoints\nWEBHOOK_URL=\"https://your-server.com/webhook\"\n\n# List streams (requires limit)\ncurl \"https://api.moralis-streams.com/streams/evm?limit=100\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\"\n\n# Create stream (PUT, not POST)\ncurl -X PUT \"https://api.moralis-streams.com/streams/evm\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"webhookUrl\": \"'${WEBHOOK_URL}'\",\n    \"description\": \"Test stream\",\n    \"tag\": \"test\",\n    \"topic0\": [\"Transfer(address,address,uint256)\"],\n    \"allAddresses\": false,\n    \"chainIds\": [\"0x1\"]\n  }'\n\n# Pause stream (POST to status)\ncurl -X POST \"https://api.moralis-streams.com/streams/evm/<stream_id>/status\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"status\": \"paused\"}'\n\nQuick Troubleshooting\nIssue\tCause\tSolution\n\"400 Bad Request\"\tInvalid config\tCheck webhookUrl, topic0 format, chainIds\n\"404 Not Found\"\tWrong stream ID\tVerify UUID format\n\"Method Not Allowed\"\tWrong HTTP method\tPUT for create, POST for update\n\"Missing limit\"\tGET /streams/evm\tAdd ?limit=100\n\"No webhooks\"\tStream paused\tCheck status is \"active\"\nEndpoint Catalog\n\nComplete list of all 20 Streams API endpoints organized by category.\n\nStream Management\n\nCreate, update, delete, and manage streams.\n\nEndpoint\tDescription\nAddAddressToStream\tAdd address to stream\nCreateStream\tCreate stream\nDeleteAddressFromStream\tDelete address from stream\nDeleteStream\tDelete stream\nDuplicateStream\tDuplicate stream\nGetAddresses\tGet addresses by stream\nGetHistory\tGet history\nGetLogs\tGet logs\nGetSettings\tGet project settings\nGetStats\tGet project stats\nGetStatsByStreamId\tGet project stats by Stream ID\nGetStream\tGet a specific evm stream.\nGetStreamBlockDataByNumber\tGet webhook data returned on the block number with provided stream config\nGetStreamBlockDataToWebhookByNumber\tSend webhook based on a specific block number using stream config and addresses.\nGetStreams\tGet streams\nReplaceAddressFromStream\tReplaces address from stream\nUpdateStream\tUpdate stream\nUpdateStreamStatus\tUpdate stream status\nStatus & Settings\n\nPause/resume streams and configure settings.\n\nEndpoint\tDescription\nSetSettings\tSet project settings\nHistory & Analytics\n\nStream history, replay, statistics, logs, and block data.\n\nEndpoint\tDescription\nReplayHistory\tReplay history\nListen to All Addresses\n\nSet allAddresses: true with a topic0 and abi to monitor an event across every contract on a chain (e.g., all ERC20 transfers network-wide). Requires higher-tier plans. See references/ListenToAllAddresses.md for complete examples, ABI templates, and gotchas.\n\nExample: Create ERC20 Transfer Monitor\ncurl -X PUT \"https://api.moralis-streams.com/streams/evm\" \\\n  -H \"X-API-Key: $MORALIS_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"webhookUrl\": \"https://your-server.com/webhook\",\n    \"description\": \"Monitor ERC20 transfers\",\n    \"tag\": \"erc20-monitor\",\n    \"topic0\": [\"Transfer(address,address,uint256)\"],\n    \"allAddresses\": true,\n    \"chainIds\": [\"0x1\", \"0x89\"],\n    \"advancedOptions\": [{\n      \"topic0\": \"Transfer(address,address,uint256)\",\n      \"includeNativeHash\": true\n    }]\n  }'\n\nPagination\n\nList endpoints use cursor-based pagination:\n\n# First page\ncurl \"...?limit=100\" -H \"X-API-Key: $KEY\"\n\n# Next page\ncurl \"...?limit=100&cursor=<cursor>\" -H \"X-API-Key: $KEY\"\n\nSupported Chains\n\nAll major EVM chains: Ethereum (0x1), Polygon (0x89), BSC (0x38), Arbitrum (0xa4b1), Optimism (0xa), Base (0x2105), Avalanche (0xa86a), and more.\n\nSee references/StreamConfiguration.md for complete chain ID list.\n\nReference Documentation\nreferences/CommonPitfalls.md - Complete pitfalls reference\nreferences/DeliveryGuarantees.md - At-least-once delivery, dual webhooks, confirmation blocks, test webhooks\nreferences/ErrorHandling.md - Retry schedule, error/terminated states, rate limits, re-org handling\nreferences/FAQ.md - Streams API frequently asked questions\nreferences/FilterStreams.md - Webhook data filtering to reduce noise\nreferences/ListenToAllAddresses.md - Monitor events across all contracts on a chain\nreferences/MonitorMultipleAddresses.md - Multi-address monitoring patterns\nreferences/ReplayFailedWebhooks.md - Replay failed webhook guide\nreferences/StreamConfiguration.md - Stream config reference\nreferences/Triggers.md - Read-only contract call enrichment (balanceOf, etc.)\nreferences/Tutorials.md - Real-world examples and tutorials\nreferences/UsefulStreamOptions.md - Advanced stream configuration options\nreferences/WebhookResponseBody.md - Webhook payload structure\nreferences/WebhookSecurity.md - Signature verification\nSee Also\nEndpoint rules: rules/*.md files\nData API: @moralis-data-api for querying blockchain state"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/novnski/moralis-streams-api",
    "publisherUrl": "https://clawhub.ai/novnski/moralis-streams-api",
    "owner": "novnski",
    "version": "1.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/moralis-streams-api",
    "downloadUrl": "https://openagent3.xyz/downloads/moralis-streams-api",
    "agentUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/moralis-streams-api/agent.md"
  }
}