{
  "schemaVersion": "1.0",
  "item": {
    "slug": "noya-agent",
    "name": "Noya Agent",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/ali-hajeh/noya-agent",
    "canonicalUrl": "https://clawhub.ai/ali-hajeh/noya-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/noya-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=noya-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "noya-message.sh",
      "reference.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/noya-agent"
    },
    "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/noya-agent",
    "agentPageUrl": "https://openagent3.xyz/skills/noya-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/noya-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/noya-agent/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": "Noya Agent",
        "body": "Noya is a multi-agent AI system for crypto trading, prediction markets (Polymarket, Rain), token analysis, and DCA strategies. All transactions are gas-sponsored — users pay no gas fees.\n\nWebsite: agent.noya.ai\nAPI Base URL: https://safenet.one"
      },
      {
        "title": "Trust & Security",
        "body": "All API calls use HTTPS. Only NOYA_API_KEY is read from the environment.\nAll on-chain transactions require explicit user confirmation via an interrupt prompt before execution.\nUse a short-lived API key (30-day) for testing. Revoke it from Settings > API Keys if compromised."
      },
      {
        "title": "Setup",
        "body": "Create an account at agent.noya.ai\nGo to Settings > API Keys and generate a key\nStore the key securely — it is only shown once\nSet the environment variable:\n\nexport NOYA_API_KEY=\"noya_your_key_here\"\n\nConfigure in ~/.openclaw/openclaw.json:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"noya-agent\": {\n        \"enabled\": true,\n        \"apiKey\": \"noya_your_key_here\",\n        \"env\": {\n          \"NOYA_API_KEY\": \"noya_your_key_here\"\n        }\n      }\n    }\n  }\n}"
      },
      {
        "title": "When to Use",
        "body": "Use Noya when users want to:\n\nCheck token prices or portfolio balances\nSwap, bridge, or send tokens (cross-chain supported)\nAnalyze tokens and market trends\nTrade on Polymarket or Rain prediction markets\nSet up or manage DCA (dollar-cost averaging) strategies\nView DeFi positions\n\nDon't use for: Non-crypto tasks, local file operations, or general knowledge questions."
      },
      {
        "title": "Core Workflow",
        "body": "Every interaction uses the Noya REST API via curl. The main endpoint is POST /api/messages/stream which streams responses. A helper script is provided for this."
      },
      {
        "title": "1. Discover Capabilities (first use)",
        "body": "curl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/agents/summarize\" | jq '.data'\n\nReturns all available agent types (token analysis, prediction markets, DCA, etc.) and their tools. Call this once to understand what Noya can do."
      },
      {
        "title": "2. Generate a Thread ID (new conversation)",
        "body": "Generate a UUID v4 for each new conversation topic:\n\npython3 -c \"import uuid; print(uuid.uuid4())\"\n\nOr on macOS/Linux:\n\nuuidgen | tr '[:upper:]' '[:lower:]'\n\nEach conversation needs a unique UUID. Generate one per topic and reuse it for follow-ups."
      },
      {
        "title": "3. Send Messages (streaming)",
        "body": "Use the provided script to send a message and receive the parsed response:\n\nbash {baseDir}/noya-message.sh \"What tokens do I have in my portfolio?\" \"THREAD_ID_HERE\"\n\nThe script handles the streaming response, parses --breakpoint-- delimited JSON chunks, and outputs formatted text including messages, tool results, progress indicators, and interrupt prompts."
      },
      {
        "title": "4. Continue the Conversation",
        "body": "Reuse the same thread ID for follow-ups — Noya maintains context:\n\nbash {baseDir}/noya-message.sh \"Swap 0.1 ETH to USDC\" \"SAME_THREAD_ID\""
      },
      {
        "title": "5. Respond to Interrupts",
        "body": "When the agent needs confirmation (e.g., before executing a swap), the output includes [REQUIRES INPUT] with options. Send the user's answer as a follow-up in the same thread:\n\nbash {baseDir}/noya-message.sh \"Yes\" \"SAME_THREAD_ID\""
      },
      {
        "title": "API Reference (curl commands)",
        "body": "All endpoints require the x-api-key header. Base URL: https://safenet.one"
      },
      {
        "title": "Send Message (streaming) — use the script",
        "body": "bash {baseDir}/noya-message.sh \"<message>\" \"<threadId>\"\n\nIf you need the raw stream for any reason:\n\ncurl -s -X POST \"https://safenet.one/api/messages/stream\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $NOYA_API_KEY\" \\\n  -H \"x-timezone-name: America/New_York\" \\\n  -d '{\"message\": \"What is the price of ETH?\", \"threadId\": \"YOUR_UUID\"}'\n\nThe raw response is --breakpoint--\\n delimited JSON chunks with keep-alive\\n\\n pings. Chunk types: message, tool, interrupt, progress, reasonForExecution, executionSteps, error."
      },
      {
        "title": "List Threads",
        "body": "curl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads\" | jq '.data.threads'"
      },
      {
        "title": "Get Thread Messages",
        "body": "curl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads/THREAD_ID/messages\" | jq '.data.messages'"
      },
      {
        "title": "Delete Thread",
        "body": "curl -s -X DELETE -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads/THREAD_ID\""
      },
      {
        "title": "Get Agent Summary",
        "body": "curl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/agents/summarize\" | jq '.data'"
      },
      {
        "title": "Chat Completion (OpenAI-compatible, no agent tools)",
        "body": "curl -s -X POST \"https://safenet.one/api/chat/completions\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $NOYA_API_KEY\" \\\n  -d '{\"sessionId\": \"SESSION_ID\", \"message\": \"Hello, what can you do?\"}'"
      },
      {
        "title": "Get Session History",
        "body": "curl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/chat/session/SESSION_ID\" | jq '.messages'"
      },
      {
        "title": "Clear Session",
        "body": "curl -s -X DELETE -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/chat/session/SESSION_ID\""
      },
      {
        "title": "Check Portfolio",
        "body": "User: \"What's in my wallet?\"\n\n1. Generate a thread ID: uuidgen | tr '[:upper:]' '[:lower:]'\n2. bash {baseDir}/noya-message.sh \"What tokens do I have in my portfolio?\" \"$THREAD_ID\"\n→ Returns wallet address, token balances, and portfolio data"
      },
      {
        "title": "Token Swap",
        "body": "User: \"Swap 0.5 ETH to USDC\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Swap 0.5 ETH to USDC\" \"$THREAD_ID\"\n→ Noya prepares the swap, asks for confirmation (interrupt), then executes.\n   All gas fees are sponsored. User must confirm before execution.\n3. bash {baseDir}/noya-message.sh \"Yes\" \"$THREAD_ID\"  # after user confirms"
      },
      {
        "title": "Token Analysis",
        "body": "User: \"Analyze SOL for me\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Give me a detailed analysis of SOL\" \"$THREAD_ID\"\n→ Returns price data, market trends, and analysis"
      },
      {
        "title": "DCA Strategy",
        "body": "User: \"Set up a DCA for ETH\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Set up a weekly DCA strategy for ETH with $50\" \"$THREAD_ID\"\n→ Noya configures the DCA strategy and confirms details"
      },
      {
        "title": "Prediction Markets",
        "body": "User: \"What are the top Polymarket events?\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Show me the top trending Polymarket events\" \"$THREAD_ID\"\n→ Returns current events, markets, and trading options"
      },
      {
        "title": "Transaction Confirmation",
        "body": "Noya always asks for user confirmation before executing on-chain transactions (swaps, bridges, transfers, orders). The response will include a [REQUIRES INPUT] section with details and options. Always relay this to the user and send their answer as a follow-up in the same thread. Never auto-confirm transactions."
      },
      {
        "title": "Wallet Delegation (Website Only)",
        "body": "If Noya responds with a delegation request, the user must complete this on the website:\n\n\"To delegate your wallet, visit https://agent.noya.ai and click\n'Delegate Wallet' in the chat. This is a one-time action.\""
      },
      {
        "title": "Safe Deployment (Website Only)",
        "body": "If Noya responds with a Safe deployment request, the user must complete this on the website:\n\n\"To deploy your Polymarket Safe, visit https://agent.noya.ai and click\n'Deploy Safe Now'. This is free, takes ~30 seconds, and only needs to be done once.\""
      },
      {
        "title": "Error Handling",
        "body": "ErrorSolution401 UnauthorizedAPI key is invalid, expired, or revoked. Generate a new one at agent.noya.ai400 Bad RequestMissing message or threadId in request body429 Rate limitWait a few minutes. Limit is 15 requests per 5-minute window"
      },
      {
        "title": "Scripts",
        "body": "This skill includes the following script in its directory:\n\nScriptPurposenoya-message.shSend a message to the Noya agent and parse the streamed response. Usage: bash {baseDir}/noya-message.sh \"<message>\" \"<threadId>\""
      },
      {
        "title": "Additional Resources",
        "body": "For the complete REST API specification, see {baseDir}/reference.md"
      }
    ],
    "body": "Noya Agent\n\nNoya is a multi-agent AI system for crypto trading, prediction markets (Polymarket, Rain), token analysis, and DCA strategies. All transactions are gas-sponsored — users pay no gas fees.\n\nWebsite: agent.noya.ai\nAPI Base URL: https://safenet.one\nTrust & Security\nAll API calls use HTTPS. Only NOYA_API_KEY is read from the environment.\nAll on-chain transactions require explicit user confirmation via an interrupt prompt before execution.\nUse a short-lived API key (30-day) for testing. Revoke it from Settings > API Keys if compromised.\nSetup\nCreate an account at agent.noya.ai\nGo to Settings > API Keys and generate a key\nStore the key securely — it is only shown once\nSet the environment variable:\nexport NOYA_API_KEY=\"noya_your_key_here\"\n\n\nConfigure in ~/.openclaw/openclaw.json:\n\n{\n  \"skills\": {\n    \"entries\": {\n      \"noya-agent\": {\n        \"enabled\": true,\n        \"apiKey\": \"noya_your_key_here\",\n        \"env\": {\n          \"NOYA_API_KEY\": \"noya_your_key_here\"\n        }\n      }\n    }\n  }\n}\n\nWhen to Use\n\nUse Noya when users want to:\n\nCheck token prices or portfolio balances\nSwap, bridge, or send tokens (cross-chain supported)\nAnalyze tokens and market trends\nTrade on Polymarket or Rain prediction markets\nSet up or manage DCA (dollar-cost averaging) strategies\nView DeFi positions\n\nDon't use for: Non-crypto tasks, local file operations, or general knowledge questions.\n\nCore Workflow\n\nEvery interaction uses the Noya REST API via curl. The main endpoint is POST /api/messages/stream which streams responses. A helper script is provided for this.\n\n1. Discover Capabilities (first use)\ncurl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/agents/summarize\" | jq '.data'\n\n\nReturns all available agent types (token analysis, prediction markets, DCA, etc.) and their tools. Call this once to understand what Noya can do.\n\n2. Generate a Thread ID (new conversation)\n\nGenerate a UUID v4 for each new conversation topic:\n\npython3 -c \"import uuid; print(uuid.uuid4())\"\n\n\nOr on macOS/Linux:\n\nuuidgen | tr '[:upper:]' '[:lower:]'\n\n\nEach conversation needs a unique UUID. Generate one per topic and reuse it for follow-ups.\n\n3. Send Messages (streaming)\n\nUse the provided script to send a message and receive the parsed response:\n\nbash {baseDir}/noya-message.sh \"What tokens do I have in my portfolio?\" \"THREAD_ID_HERE\"\n\n\nThe script handles the streaming response, parses --breakpoint-- delimited JSON chunks, and outputs formatted text including messages, tool results, progress indicators, and interrupt prompts.\n\n4. Continue the Conversation\n\nReuse the same thread ID for follow-ups — Noya maintains context:\n\nbash {baseDir}/noya-message.sh \"Swap 0.1 ETH to USDC\" \"SAME_THREAD_ID\"\n\n5. Respond to Interrupts\n\nWhen the agent needs confirmation (e.g., before executing a swap), the output includes [REQUIRES INPUT] with options. Send the user's answer as a follow-up in the same thread:\n\nbash {baseDir}/noya-message.sh \"Yes\" \"SAME_THREAD_ID\"\n\nAPI Reference (curl commands)\n\nAll endpoints require the x-api-key header. Base URL: https://safenet.one\n\nSend Message (streaming) — use the script\nbash {baseDir}/noya-message.sh \"<message>\" \"<threadId>\"\n\n\nIf you need the raw stream for any reason:\n\ncurl -s -X POST \"https://safenet.one/api/messages/stream\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $NOYA_API_KEY\" \\\n  -H \"x-timezone-name: America/New_York\" \\\n  -d '{\"message\": \"What is the price of ETH?\", \"threadId\": \"YOUR_UUID\"}'\n\n\nThe raw response is --breakpoint--\\n delimited JSON chunks with keep-alive\\n\\n pings. Chunk types: message, tool, interrupt, progress, reasonForExecution, executionSteps, error.\n\nList Threads\ncurl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads\" | jq '.data.threads'\n\nGet Thread Messages\ncurl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads/THREAD_ID/messages\" | jq '.data.messages'\n\nDelete Thread\ncurl -s -X DELETE -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/threads/THREAD_ID\"\n\nGet Agent Summary\ncurl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/agents/summarize\" | jq '.data'\n\nChat Completion (OpenAI-compatible, no agent tools)\ncurl -s -X POST \"https://safenet.one/api/chat/completions\" \\\n  -H \"Content-Type: application/json\" \\\n  -H \"x-api-key: $NOYA_API_KEY\" \\\n  -d '{\"sessionId\": \"SESSION_ID\", \"message\": \"Hello, what can you do?\"}'\n\nGet Session History\ncurl -s -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/chat/session/SESSION_ID\" | jq '.messages'\n\nClear Session\ncurl -s -X DELETE -H \"x-api-key: $NOYA_API_KEY\" \\\n  \"https://safenet.one/api/chat/session/SESSION_ID\"\n\nCommon Patterns\nCheck Portfolio\nUser: \"What's in my wallet?\"\n\n1. Generate a thread ID: uuidgen | tr '[:upper:]' '[:lower:]'\n2. bash {baseDir}/noya-message.sh \"What tokens do I have in my portfolio?\" \"$THREAD_ID\"\n→ Returns wallet address, token balances, and portfolio data\n\nToken Swap\nUser: \"Swap 0.5 ETH to USDC\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Swap 0.5 ETH to USDC\" \"$THREAD_ID\"\n→ Noya prepares the swap, asks for confirmation (interrupt), then executes.\n   All gas fees are sponsored. User must confirm before execution.\n3. bash {baseDir}/noya-message.sh \"Yes\" \"$THREAD_ID\"  # after user confirms\n\nToken Analysis\nUser: \"Analyze SOL for me\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Give me a detailed analysis of SOL\" \"$THREAD_ID\"\n→ Returns price data, market trends, and analysis\n\nDCA Strategy\nUser: \"Set up a DCA for ETH\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Set up a weekly DCA strategy for ETH with $50\" \"$THREAD_ID\"\n→ Noya configures the DCA strategy and confirms details\n\nPrediction Markets\nUser: \"What are the top Polymarket events?\"\n\n1. Generate a thread ID\n2. bash {baseDir}/noya-message.sh \"Show me the top trending Polymarket events\" \"$THREAD_ID\"\n→ Returns current events, markets, and trading options\n\nImportant Notes\nTransaction Confirmation\n\nNoya always asks for user confirmation before executing on-chain transactions (swaps, bridges, transfers, orders). The response will include a [REQUIRES INPUT] section with details and options. Always relay this to the user and send their answer as a follow-up in the same thread. Never auto-confirm transactions.\n\nWallet Delegation (Website Only)\n\nIf Noya responds with a delegation request, the user must complete this on the website:\n\n\"To delegate your wallet, visit https://agent.noya.ai and click\n'Delegate Wallet' in the chat. This is a one-time action.\"\n\nSafe Deployment (Website Only)\n\nIf Noya responds with a Safe deployment request, the user must complete this on the website:\n\n\"To deploy your Polymarket Safe, visit https://agent.noya.ai and click\n'Deploy Safe Now'. This is free, takes ~30 seconds, and only needs to be done once.\"\n\nError Handling\nError\tSolution\n401 Unauthorized\tAPI key is invalid, expired, or revoked. Generate a new one at agent.noya.ai\n400 Bad Request\tMissing message or threadId in request body\n429 Rate limit\tWait a few minutes. Limit is 15 requests per 5-minute window\nScripts\n\nThis skill includes the following script in its directory:\n\nScript\tPurpose\nnoya-message.sh\tSend a message to the Noya agent and parse the streamed response. Usage: bash {baseDir}/noya-message.sh \"<message>\" \"<threadId>\"\nAdditional Resources\nFor the complete REST API specification, see {baseDir}/reference.md"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ali-hajeh/noya-agent",
    "publisherUrl": "https://clawhub.ai/ali-hajeh/noya-agent",
    "owner": "ali-hajeh",
    "version": "1.0.13",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/noya-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/noya-agent",
    "agentUrl": "https://openagent3.xyz/skills/noya-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/noya-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/noya-agent/agent.md"
  }
}