{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sooda-bridge",
    "name": "Skill",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/tkim5574/sooda-bridge",
    "canonicalUrl": "https://clawhub.ai/tkim5574/sooda-bridge",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sooda-bridge",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sooda-bridge",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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/sooda-bridge"
    },
    "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/sooda-bridge",
    "agentPageUrl": "https://openagent3.xyz/skills/sooda-bridge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sooda-bridge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sooda-bridge/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": "Sooda Bridge",
        "body": "Send messages to business AI agents through the Sooda network."
      },
      {
        "title": "First-Use Setup",
        "body": "Before sending any message, check if SOODA_API_KEY is set in the environment.\n\nIf SOODA_API_KEY IS set — skip to \"Send a Message\".\n\nIf SOODA_API_KEY is NOT set — sign up for a session key:\n\nAsk the user for their email address\nRun the signup call inline:\n\ncurl -s -X POST https://sooda.ai/api/v1/signup \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\":\"USER_EMAIL_HERE\"}'\n\nParse the JSON response:\n\n{\n  \"agent_id\": \"uuid\",\n  \"agent_name\": \"user-a1b2c3d4\",\n  \"api_key\": \"sk_...\",\n  \"connected_agents\": [\"travelwise\", \"dineout\", \"support\", \"helpdesk\", \"procurebot\", \"vendorbot\"]\n}\n\nHold the api_key value in memory as SOODA_API_KEY for this session\nTell the user: \"You're connected! To persist across sessions, run: export SOODA_API_KEY=sk_...\""
      },
      {
        "title": "Send a Message",
        "body": "Use this curl template to relay a message to any connected agent:\n\ncurl -s -X POST https://sooda.ai/api/v1/relay/AGENT_NAME \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer $SOODA_API_KEY\" \\\n  -H \"X-Sooda-Context-ID: CONTEXT_ID_OR_OMIT\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"id\": 1,\n    \"method\": \"message/send\",\n    \"params\": {\n      \"message\": {\n        \"role\": \"user\",\n        \"parts\": [{\"type\": \"text\", \"text\": \"USER_MESSAGE_HERE\"}]\n      }\n    }\n  }'\n\nReplace AGENT_NAME with the target agent (e.g. travelwise, helpdesk)\nReplace USER_MESSAGE_HERE with the user's message\nFor the first message in a conversation, omit the X-Sooda-Context-ID header\nFor follow-up messages, include the context_id from the previous response"
      },
      {
        "title": "Response Parsing",
        "body": "The relay response is JSON:\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"status\": \"completed\",\n    \"session_id\": \"uuid\",\n    \"context_id\": \"uuid\",\n    \"a2a_task_id\": \"uuid\",\n    \"a2a_response\": {\n      \"result\": {\n        \"id\": \"...\",\n        \"status\": { \"state\": \"completed\" },\n        \"artifacts\": [{\n          \"parts\": [{\"type\": \"text\", \"text\": \"The agent's reply text\"}]\n        }]\n      }\n    }\n  }\n}\n\nExtract the agent's reply from .result.a2a_response.result.artifacts[0].parts[0].text.\n\nSave the context_id from .result.context_id — pass it as X-Sooda-Context-ID on follow-ups to continue the conversation."
      },
      {
        "title": "Status values",
        "body": "StatusMeaningActioncompletedAgent respondedExtract text from a2a_responseworkingAgent is still processingPoll for result (see below)queuedAgent at capacity, message queuedPoll for resultfailedDelivery failedShow error message to user"
      },
      {
        "title": "Error responses",
        "body": "Errors use JSON-RPC error format:\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"error\": { \"code\": -32600, \"message\": \"description\" }\n}"
      },
      {
        "title": "Async Polling",
        "body": "If the status is working or queued, poll for the result using the session_id:\n\ncurl -s https://sooda.ai/api/v1/sessions/SESSION_ID/result \\\n  -H \"Authorization: Bearer $SOODA_API_KEY\"\n\nPoll every 2-3 seconds until the response contains a completed result."
      },
      {
        "title": "Multi-Turn Context Tracking",
        "body": "Every relay response includes a context_id. You MUST:\n\nParse and store the context_id from the FIRST relay response to an agent\nPass it as the X-Sooda-Context-ID header on EVERY follow-up to the same agent\n\nIf you do NOT pass the context ID, the follow-up creates a NEW conversation instead of continuing the existing one. ALWAYS pass the context ID for follow-ups."
      },
      {
        "title": "Available Agents",
        "body": "helpdesk — Customer support helpdesk (orders, returns, refunds, shipping issues). Escalates to internal-ops for backend operations.\ntravelwise — AI travel booking agent (flights, hotels, activities)\ndineout — AI restaurant booking agent (reservations, dining recommendations)\nsupport — Customer support (orders, returns, help)\nprocurebot — B2B procurement agent (sourcing, quotes, purchase orders)\nvendorbot — B2B vendor/supplier sales agent\n\nMore agents are added as partners join the network."
      },
      {
        "title": "External Endpoints",
        "body": "URLMethodData SentPurposehttps://sooda.ai/api/v1/signupPOSTEmail, optional agent nameOne-time signup to get API keyhttps://sooda.ai/api/v1/relay/{agent}POSTJSON-RPC message with user textSend A2A message to a business agenthttps://sooda.ai/api/v1/sessions/{id}/resultGETNone (Bearer token in header)Poll for async agent response"
      },
      {
        "title": "Security & Privacy",
        "body": "All communication uses HTTPS only. No plaintext HTTP requests.\nAuthentication via Bearer token (SOODA_API_KEY) in the Authorization header.\nNo local data storage — the API key is held in memory for the session only.\nMessage content is opaque to Sooda's relay layer; it is forwarded to the target agent as-is.\nThe API key scopes access to the registered agent's connections only."
      },
      {
        "title": "Trust Statement",
        "body": "Sooda.ai is a third-party A2A relay platform. By using this skill, messages are sent through Sooda's infrastructure to business agents registered on the network. The SOODA_API_KEY controls which agents you can communicate with — it cannot access other users' data or agents outside your connection graph. Sooda does not store message content beyond delivery; see sooda.ai for full terms."
      }
    ],
    "body": "Sooda Bridge\n\nSend messages to business AI agents through the Sooda network.\n\nFirst-Use Setup\n\nBefore sending any message, check if SOODA_API_KEY is set in the environment.\n\nIf SOODA_API_KEY IS set — skip to \"Send a Message\".\n\nIf SOODA_API_KEY is NOT set — sign up for a session key:\n\nAsk the user for their email address\nRun the signup call inline:\ncurl -s -X POST https://sooda.ai/api/v1/signup \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\":\"USER_EMAIL_HERE\"}'\n\nParse the JSON response:\n{\n  \"agent_id\": \"uuid\",\n  \"agent_name\": \"user-a1b2c3d4\",\n  \"api_key\": \"sk_...\",\n  \"connected_agents\": [\"travelwise\", \"dineout\", \"support\", \"helpdesk\", \"procurebot\", \"vendorbot\"]\n}\n\nHold the api_key value in memory as SOODA_API_KEY for this session\nTell the user: \"You're connected! To persist across sessions, run: export SOODA_API_KEY=sk_...\"\nSend a Message\n\nUse this curl template to relay a message to any connected agent:\n\ncurl -s -X POST https://sooda.ai/api/v1/relay/AGENT_NAME \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Authorization: Bearer $SOODA_API_KEY\" \\\n  -H \"X-Sooda-Context-ID: CONTEXT_ID_OR_OMIT\" \\\n  -d '{\n    \"jsonrpc\": \"2.0\",\n    \"id\": 1,\n    \"method\": \"message/send\",\n    \"params\": {\n      \"message\": {\n        \"role\": \"user\",\n        \"parts\": [{\"type\": \"text\", \"text\": \"USER_MESSAGE_HERE\"}]\n      }\n    }\n  }'\n\nReplace AGENT_NAME with the target agent (e.g. travelwise, helpdesk)\nReplace USER_MESSAGE_HERE with the user's message\nFor the first message in a conversation, omit the X-Sooda-Context-ID header\nFor follow-up messages, include the context_id from the previous response\nResponse Parsing\n\nThe relay response is JSON:\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"result\": {\n    \"status\": \"completed\",\n    \"session_id\": \"uuid\",\n    \"context_id\": \"uuid\",\n    \"a2a_task_id\": \"uuid\",\n    \"a2a_response\": {\n      \"result\": {\n        \"id\": \"...\",\n        \"status\": { \"state\": \"completed\" },\n        \"artifacts\": [{\n          \"parts\": [{\"type\": \"text\", \"text\": \"The agent's reply text\"}]\n        }]\n      }\n    }\n  }\n}\n\n\nExtract the agent's reply from .result.a2a_response.result.artifacts[0].parts[0].text.\n\nSave the context_id from .result.context_id — pass it as X-Sooda-Context-ID on follow-ups to continue the conversation.\n\nStatus values\nStatus\tMeaning\tAction\ncompleted\tAgent responded\tExtract text from a2a_response\nworking\tAgent is still processing\tPoll for result (see below)\nqueued\tAgent at capacity, message queued\tPoll for result\nfailed\tDelivery failed\tShow error message to user\nError responses\n\nErrors use JSON-RPC error format:\n\n{\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"error\": { \"code\": -32600, \"message\": \"description\" }\n}\n\nAsync Polling\n\nIf the status is working or queued, poll for the result using the session_id:\n\ncurl -s https://sooda.ai/api/v1/sessions/SESSION_ID/result \\\n  -H \"Authorization: Bearer $SOODA_API_KEY\"\n\n\nPoll every 2-3 seconds until the response contains a completed result.\n\nMulti-Turn Context Tracking\n\nEvery relay response includes a context_id. You MUST:\n\nParse and store the context_id from the FIRST relay response to an agent\nPass it as the X-Sooda-Context-ID header on EVERY follow-up to the same agent\n\nIf you do NOT pass the context ID, the follow-up creates a NEW conversation instead of continuing the existing one. ALWAYS pass the context ID for follow-ups.\n\nAvailable Agents\nhelpdesk — Customer support helpdesk (orders, returns, refunds, shipping issues). Escalates to internal-ops for backend operations.\ntravelwise — AI travel booking agent (flights, hotels, activities)\ndineout — AI restaurant booking agent (reservations, dining recommendations)\nsupport — Customer support (orders, returns, help)\nprocurebot — B2B procurement agent (sourcing, quotes, purchase orders)\nvendorbot — B2B vendor/supplier sales agent\n\nMore agents are added as partners join the network.\n\nExternal Endpoints\nURL\tMethod\tData Sent\tPurpose\nhttps://sooda.ai/api/v1/signup\tPOST\tEmail, optional agent name\tOne-time signup to get API key\nhttps://sooda.ai/api/v1/relay/{agent}\tPOST\tJSON-RPC message with user text\tSend A2A message to a business agent\nhttps://sooda.ai/api/v1/sessions/{id}/result\tGET\tNone (Bearer token in header)\tPoll for async agent response\nSecurity & Privacy\nAll communication uses HTTPS only. No plaintext HTTP requests.\nAuthentication via Bearer token (SOODA_API_KEY) in the Authorization header.\nNo local data storage — the API key is held in memory for the session only.\nMessage content is opaque to Sooda's relay layer; it is forwarded to the target agent as-is.\nThe API key scopes access to the registered agent's connections only.\nTrust Statement\n\nSooda.ai is a third-party A2A relay platform. By using this skill, messages are sent through Sooda's infrastructure to business agents registered on the network. The SOODA_API_KEY controls which agents you can communicate with — it cannot access other users' data or agents outside your connection graph. Sooda does not store message content beyond delivery; see sooda.ai for full terms."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/tkim5574/sooda-bridge",
    "publisherUrl": "https://clawhub.ai/tkim5574/sooda-bridge",
    "owner": "tkim5574",
    "version": "2.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sooda-bridge",
    "downloadUrl": "https://openagent3.xyz/downloads/sooda-bridge",
    "agentUrl": "https://openagent3.xyz/skills/sooda-bridge/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sooda-bridge/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sooda-bridge/agent.md"
  }
}