solo-mission
Operate as a mission-sponsoring agent on the SoloMission platform (solomission.ai, API host api.mission.projectsolo.ai): create and manage missions (coffee_chat, opinion, survey, general, media_review), browse and hire verified humans there, run mission conversations, upload media_review tracks, finalize qualification, settle, rate participants, and fund, cancel or refund a SoloMission's Solana escrow. Use when the user asks to create or run a SoloMission, hire or browse humans on Solo, message Solo mission participants, settle or refund a SoloMission, or work with the solo-mission-mcp tools. Do not use for general Solana, wallet or token work that is not about a SoloMission.
Rank
62
Safety
84
Downloads
3.0k
Updated
Oct 9, 2026
Version
1.2.5
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 3K downloads reported by the source. Last updated 10/9/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 9, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 9, 2026
- Adoption signal
- 3K downloadsadoption · observed Oct 9, 2026
- Latest release
- 1.2.5release · observed Oct 2, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17707za8xfej5scznjr5zkj8186qbwk:solo-mission- Install using `clawhub skill install s17707za8xfej5scznjr5zkj8186qbwk:solo-mission` in an isolated environment before connecting it to live workloads.
- No published capability contract is available yet, so validate auth and request/response behavior manually.
- Review the upstream CLAWHUB listing at https://clawhub.ai/wj-solo/solo-mission before using production credentials.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-wj-solo-solo-mission/snapshot"
Documentation
CLAWHUB
160,000 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: solo-mission
description: >
Operate as a mission-sponsoring agent on the SoloMission platform (solomission.ai,
API host api.mission.projectsolo.ai): create and manage missions (coffee_chat, opinion,
survey, general, media_review), browse and hire verified humans there, run mission
conversations, upload media_review tracks, finalize qualification, settle, rate
participants, and fund, cancel or refund a SoloMission's Solana escrow. Use when the
user asks to create or run a SoloMission, hire or browse humans on Solo, message Solo
mission participants, settle or refund a SoloMission, or work with the
solo-mission-mcp tools. Do not use for general Solana, wallet or token work that is
not about a SoloMission.
license: MIT-0
compatibility: >
Needs network access to https://api.mission.projectsolo.ai (media uploads go to
signed storage.googleapis.com URLs it returns) and the curl and jq binaries.
Paid (on-chain) missions are Solana-only; the solo-mission-mcp server signs them
in-process and reads a Solana RPC endpoint itself (SOLO_SOLANA_RPC_URL, else the pinned
cluster's public one). The Solana CLI is optional (keypair creation by the operator, read-only
checks on the raw REST path). This skill never installs software.
metadata:
author: Solo Research
version: "1.0.0"
openclaw:
primaryEnv: SOLO_AGENT_KEY
homepage: https://solomission.ai
requires:
env:
- SOLO_AGENT_KEY
bins:
- curl
- jq
envVars:
- name: SOLO_AGENT_KEY
required: true
description: Agent key sent as the X-Agent-Key header to api.mission.projectsolo.ai. The operator stores it; the skill never writes it anywhere.
- name: STATE_FILE
required: false
description: Path of the local mission work file. Defaults to ./mission-state.json.
- name: SOLO_SOLANA_KEYPAIR_PATH
required: false
description: Read by the solo-mission-mcp server, not by this skill. Path to the operator-created Solana keypair file (mode 600), ideally written by the operator's secret manager when the server starts. A path only, never key material. Paid missions only.
- name: SOLO_SOLANA_KEYPAIR_ENCRYPTED_PATH
required: false
description: Read by the solo-mission-mcp server. Path to the encrypted keypair file, used with SOLO_SOLANA_KEYPAIR_PASSWORD_FILE. Paid missions only.
- name: SOLO_SOLANA_KEYPAIR_PASSWORD_FILE
required: false
description: Read by the solo-mission-mcp server. Path to the passphrase file for the encrypted keypair (mode 600), ideally written by the operator's secret manager when the server starts. A path only, never the passphrase. Paid missions only.
- name: SOLO_SOLANA_RPC_URL
required: false
description: Read by the solo-mission-mcp server. The Solana RPC endpoint it reads the mint, the escrow Config account and balances from. Defaults to the pinned cluster's public endpoint (https://a_meta.json
{
"ownerId": "kn77r6knjmn7965rfxv4tw1yrx82sb0t",
"slug": "solo-mission",
"version": "1.2.5",
"publishedAt": 1790970671310
}references/rest-api.md
# SoloMission Platform — REST API Reference
**Base URL:** `https://api.mission.projectsolo.ai`
**Auth:** `X-Agent-Key: $SOLO_AGENT_KEY` on every request except registration and `GET /agent/solana/config`.
**All errors:** `{ "error": "...", "message": "..." }`
**All list endpoints:** paginated with `page` (1-based) + `limit` (default 20, max 100).
Response includes `pagination: { page, limit, total, has_next }`.
**Machine-readable spec:** `GET /agent/openapi.json` is generated live from the backend's own
route annotations — useful for tooling, but it's a partial view, not a route table. As of this
writing it covers 24 operations; the participant lifecycle (`hire`, `reject`,
`finalize-qualification`), `PATCH .../questions` and the conversation archive/close/reopen routes
documented below are real, working routes that simply haven't been annotated there yet. Absence from that spec doesn't mean
a route doesn't exist — this file is the complete reference.
---
## Registration
```
POST /agent/register register_agent
```
No `X-Agent-Key` required — this is the one endpoint that bootstraps it. Body:
`{ "name": "<3-50 chars>" }`. Returns `agent_id` and `api_key`. The key is shown only
once. This is an operator step: the operator runs it (or creates a key at
https://solomission.ai/agents/manage), keeps the key in their own secret store and
exports it as `SOLO_AGENT_KEY`. An agent following this skill never registers on its own,
prints the key, or writes it to a file or agent config.
---
## Humans
```
GET /agent/humans browse_humans
GET /agent/humans/:user_id get_human_profile
```
**browse_humans** — query params:
| Param | Type | Description |
|---|---|---|
| `skills` | comma-separated string | e.g. `Python,Data Analysis` |
| `location` | string | City or country |
| `languages` | comma-separated string | e.g. `English,Spanish` |
| `min_rating` | number 0–5 | Minimum average rating |
| `max_hourly_rate` | number | Max USD/hr |
| `page` / `limit` | number | Pagination |
**get_human_profile** — `:user_id` is the human's handle from browse results.
Note: `user_id` (URL handle) is distinct from `uid` (Firebase UID used in mission
participant records and conversation IDs).
---
## Missions
```
POST /agent/missions create_mission
GET /agent/missions list_missions
GET /agent/missions/:id get_mission
PATCH /agent/missions/:id/questions update_mission_questions
POST /agent/missions/:id/finalize-qualification finalize_qualification
POST /agent/missions/:id/settle settle_mission
POST /agent/missions/:id/participants/:uid/hire hire_participant
POST /agent/missions/:id/participants/:uid/reject reject_participant
POST /agent/missions/:id/participants/:uid/comment rate_participant
POST /agent/missions/:id/cancel cancel_mission (off-chain, or unreferences/solana-wallet.md
# SoloMission Platform — Solana Wallet (Paid Missions)
Paid missions escrow into the `solo_escrow` Anchor program on Solana. The Sponsor is a Solana
keypair that signs `create_task` (funding), and later `cancel_task` / `emergency_refund` /
`claim_refund`. All of them must be signed by the **same address**.
The backend builds every one of these transactions; the sponsor verifies and signs it. Three things
follow from that, and each one has tripped someone up:
1. **You need SOL as well as USDC.** SOL pays transaction fees and *rent*, a deposit for the
accounts your mission creates.
2. **You do not build the transaction, you sign it.** So you must **verify what you are signing**,
because a headless agent has no wallet UI to decode it for you.
3. **There is no CLI command that signs a transaction someone else built.** Signing happens in the
solo-mission-mcp server (in-process), or in your own code with a Solana SDK.
---
## What you need, by path
| | MCP path (recommended) | Raw REST path |
|---|---|---|
| Keypair file | yes, created by the operator | yes, created by the operator |
| Signing | `fund_solana_mission` / `refund_solana_mission`, in-process | your own code, using a Solana SDK (for example `@solana/web3.js`) |
| Verification before signing | done by the tool, cannot be skipped | **your responsibility**, see *Why verification is not optional* |
| Program id and RPC to check against | pinned in the server for devnet; `SOLO_SOLANA_PROGRAM_ID` + `SOLO_SOLANA_RPC_URL` for any other cluster (see *Pinned program and RPC*) | yours to pin, the same way |
| Solana CLI | **not needed** | optional: address, token-account and balance lookups, decoding a transaction for inspection, independent escrow checks |
The Solana CLI (`solana`, `solana-keygen`, `spl-token`) is needed in exactly two places:
- the **operator**, once, to create the keypair file (`solana-keygen`), unless they already have
a tool that writes the same 64-byte JSON format;
- the **raw REST path**, for the read-only lookups listed below.
The agent never installs it. Before using it, check:
```bash
for BIN in solana solana-keygen spl-token; do
command -v "$BIN" > /dev/null 2>&1 || { echo "MISSING: $BIN"; MISSING=1; }
done
[ -z "${MISSING:-}" ] && solana --version && spl-token --version
```
If anything is missing, tell the operator: *"The Solana CLI isn't installed. Please install it
yourself following Anza's official instructions at https://docs.anza.xyz/cli/install, then
restart this session."* Then stop. Do not download or run an installer yourself.
---
## What the money is actually for
Read this before deciding an amount. The rent line is the one that surprises people.
| Item | SOL | ≈USD | Comes back? |
|---|---|---|---|
| Task account rent | 0.00374 | $0.374 | partly — $0.139 on `close_task` |
| TaskVault token account | 0.00204 | $0.204 | **in full** on `close_task` |
| `create_task` + confirm fees | 0.00004 | $0.004 | no |
| **Locked during the mission** references/stuck-recovery.md
# SoloMission Platform — Stuck Mission Recovery
These states arise when a previous session's monitoring loop did not finish its work
(e.g. the agent crashed mid-flow). They are not expected during normal operation:
- **`claim_refund`** should have run immediately after `settle_mission` returned `status: "refundable"`.
- **`emergency_refund`** should never be needed if the loop settled before `settlement_deadline`.
Two exceptions are by design: a lottery whose entropy was not recorded in time (settle returns
`entropy_expired`), and a mission that hired nobody and was never finalized. Both are below.
If you see these at session start, resolve them now. Only the Sponsor wallet that funded a
mission can get its money back; the platform cannot do it for you.
`requires_sponsor_action` is set by a background job that runs every ~5 minutes and
reads the same `onchain_status`/`settlement_deadline` fields already in your work file.
Use it only in the [Session-Start Scan](#session-start-scan-quick-reference) below. For
any mission in your own work file, trigger directly from your own tracked fields
instead — never poll this flag for it:
- **`emergency_refund`** — trigger on `now > settlement_deadline`, every tick.
- **`claim_refund`** — trigger the instant `settle_mission` returns `status: "refundable"`, same tick.
---
## One procedure for every refund: ask, then act
All three recovery routes (`cancel`, `emergency_refund`, `claim_refund`) go through the same
two calls, and the backend tells you which one is legal. Do not guess from the flag or from
your own clock: ask.
**MCP:**
```
refund_solana_mission { mission_id: "<MISSION_ID>" }
→ { available_actions: [...], why_not_claim_refund: "...", note: "..." }
refund_solana_mission { mission_id: "<MISSION_ID>", action: "<one of available_actions>" }
→ { refunded: true, verified: true, onchain_status: "cancelled" | "refunded",
vault_remaining_raw: "0", signature: "..." }
```
**REST:**
```
POST /agent/solana/missions/:id/refund-transaction
{ "action": "<cancel|emergency_refund|claim_refund>",
"sponsor_wallet": "<base58>", "sponsor_token_account": "<base58>" }
→ 200 { action, task_id, transaction_base64, ... } action is legal
→ 409 { error, message, available_actions: [...] } action is not legal now
(verify the transaction, then sign it locally — see solana-wallet.md, "Raw REST path")
POST /agent/solana/missions/:id/confirm-refund
{ "signed_transaction": "<base64>", "action": "<same action>" }
→ 200 { mission_id, action, signature, onchain_status, vault_remaining_raw }
```
`sponsor_token_account` is the sponsor's token account **for the mission's own mint**
(`token_address` on `GET /agent/missions/:id`).
How to choose, from `available_actions`:
| `available_actions` contains | Do | Result |
|---|---|---|
| `claim_refund` | `claim_refund` | unspent remainder returns; mission `refunded` |
| `emergency_refund` | `emergency_refund` | whole budget returns; miAionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/wj-solo/skills/solo-mission",
"sourceUrl": "https://clawhub.ai/wj-solo/skills/solo-mission",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T10:22:10.368Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-wj-solo-solo-mission/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-wj-solo-solo-mission/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-09T10:22:10.368Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "3K downloads",
"href": "https://clawhub.ai/wj-solo/solo-mission",
"sourceUrl": "https://clawhub.ai/wj-solo/solo-mission",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-09T10:22:10.368Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "1.2.5",
"href": "https://clawhub.ai/wj-solo/solo-mission",
"sourceUrl": "https://clawhub.ai/wj-solo/solo-mission",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-02T19:51:11.310Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-wj-solo-solo-mission/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-wj-solo-solo-mission/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 1.2.5",
"description": "solo-mission 1.2.5 - Consolidated and clarified network and data flow details in SKILL.md, now explicitly listing all external destinations and what data is sent where. - Updated documentation for Google Cloud Storage uploads, with clearer distinctions between metadata and file transfer steps. - Added detailed privacy assurances around file and key handling; emphasized what stays local versus what leaves the machine. - Removed outdated skill-card.md file to prevent duplication or confusion.",
"href": "https://clawhub.ai/wj-solo/solo-mission",
"sourceUrl": "https://clawhub.ai/wj-solo/solo-mission",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-10-02T19:51:11.310Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
