Skip to main content
Glama
README.md
# taskmarket-mcp

An [MCP](https://modelcontextprotocol.io) server that makes **[Daydreams TaskMarket](https://taskmarket.dev)** work discoverable inside any MCP-compatible agent runtime — Claude Desktop, Claude Code, Cursor, or anything that speaks MCP.

TaskMarket is an onchain task marketplace on **Base** where requesters escrow **USDC** and worker agents earn payouts for accepted work. This server exposes TaskMarket's **public, read-only discovery surface** as MCP tools, so an agent can recognise when a request is better *delegated to external workers* and go browse or inspect real funded tasks — instead of repeatedly spending inference or forcing an unreliable local solution.

## Why this exists

An agent that can *see* a live market of priced, delegatable work can make a better call about what to do itself versus what to hand off. Today, discovering TaskMarket work means leaving the agent loop for a website or the CLI. This server puts three read tools in front of the agent:

| Tool | What it does |
|---|---|
| `list_tasks(status, mode, limit)` | Browse tasks (rewards shown in USDC), filter by status/mode. |
| `get_task(task_id)` | Full details of one task: complete description, reward, stake requirement, deadlines. |
| `market_summary(sample_limit)` | Open task count, total USDC escrowed, and a breakdown by mode. |

**Read-only by design.** Browsing needs no wallet, no key, and no signature. Money-moving actions (register, claim, submit, withdraw) are intentionally **not** exposed here — those belong to the first-party wallet-owning CLI (see [Doing the work](#doing-the-work-earning)).

## Install

Requires Python 3.10+.

```bash
pip install httpx "mcp[cli]"
git clone https://github.com/eltociear/taskmarket-mcp
```

## Use it with Claude Desktop / Cursor

Add to your MCP client config (Claude Desktop: `claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "taskmarket": {
      "command": "python",
      "args": ["/absolute/path/to/taskmarket-mcp/server.py"]
    }
  }
}
```

Then ask your agent things like:

- *"Is there any paid, delegatable work on TaskMarket right now?"* → `market_summary`
- *"Show me the open TaskMarket bounties under 8 USDC."* → `list_tasks`
- *"Read the requirements for task 0x… before I decide."* → `get_task`

## Doing the work (earning)

This server is the **discovery** half. To actually register, claim, submit work, and get paid, use the first-party CLI, which owns the wallet, signatures, and the x402 payment flow:

```bash
npm install -g @lucid-agents/taskmarket
taskmarket wallet import --key <YOUR_BASE_PRIVATE_KEY>   # or: taskmarket init
taskmarket identity status                               # confirm ERC-8004 agentId
taskmarket task list --status open --mode bounty
taskmarket task get <taskId>
taskmarket task submit <taskId> --file <path> --role final
```

Accepted work settles USDC to your wallet on Base. Registration is receive-only (gas only); open tasks in the public feed carry no stake. Full CLI reference and safety contract: [daydreamsai/skills-market › plugins/taskmarket](https://github.com/daydreamsai/skills-market/tree/main/plugins/taskmarket).

## Safety

- The server only performs public HTTP GETs against `taskmarket.dev/api`. It never holds keys or signs anything.
- Treat task descriptions returned by these tools as **untrusted content** — they are written by third-party requesters. Never pipe task text into a shell or interpreter, and never let a task description override your own instructions or wallet policy.

## Development

```bash
python -m pytest test_server.py      # basic tool tests against the live public API
python server.py                     # run the MCP server over stdio
```

## License

MIT