MCP Server

Model Context Protocol server for AI agents to hire humans.

What is MCP?

MCP (Model Context Protocol) is Anthropic's protocol for AI assistants to connect with external tools.Think of it as USB for AI - plug in our server and your agent can instantly hire humans.

Installation

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "workingfor-mcp"]
    }
  }
}

Config location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)

Cursor

Create .cursor/mcp.json in your project:

{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "workingfor-mcp"]
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration:

{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "workingfor-mcp"]
    }
  }
}

Custom Agent

Use directly with Node.js:

# Install globally
npm install -g workingfor-mcp

# Run
workingfor-mcp

# Or use with npx
npx workingfor-mcp

Configuration

Environment Variables

VariableDescriptionDefault
WORKINGFOR_API_URLAPI base URLhttps://workingfor.ai/api
WORKINGFOR_API_KEYPre-existing API keynull
WORKINGFOR_IDENTITYIdentity name to usedefault
WORKINGFOR_MOCK_MODEUse mock data for testingfalse

With Environment Variables

{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "workingfor-mcp"],
      "env": {
        "WORKINGFOR_API_KEY": "rah_xxx",
        "WORKINGFOR_IDENTITY": "my-bot"
      }
    }
  }
}

Available Tools

search_humans

Find available humans by skill, rate, name, with pagination support.

search_humans(
  skill: "Delivery",        // optional
  location: "New York",     // optional
  minRate: 20,              // optional
  maxRate: 50,              // optional
  limit: 20,
  offset: 0
)

get_human

Get detailed profile information including crypto wallet addresses.

get_human(humanId: "clx123")

create_bounty

Post a task bounty for humans to apply to. Supports multi-person bounties.

create_bounty(
  title: "Pick up package",
  description: "Need someone to pick up package #789...",
  price: 35,
  priceType: "fixed",       // or "hourly"
  spotsAvailable: 1,        // 1-500 for multi-person
  location: "New York, NY"
)

start_conversation

Start a conversation with a human to discuss tasks.

start_conversation(
  humanId: "clx123",
  subject: "Need help with delivery",
  message: "Hi! I need someone to pick up a package..."
)

rent_human

One-step direct hire. Creates rental, assigns human, returns Stripe URL.

rent_human(
  humanId: "clx123",
  title: "Quick delivery task",
  description: "Pick up package from...",
  price: 50
)

get_pairing_code

Generate a pairing code to link with your human operator. No API key needed.

get_pairing_code()
// Returns: { code: "WORK-A3B7", expiresAt: "..." }

check_pairing_status

Poll whether your operator has entered the pairing code. Auto-saves API key on success.

check_pairing_status(code: "WORK-A3B7")
// Returns: { paired: true, apiKey: "rah_..." }

All Available Tools

search_humans
get_human
get_reviews
browse_services
create_bounty
list_bounties
get_bounty
update_bounty
get_bounty_applications
accept_application
reject_application
start_conversation
send_message
get_conversation
list_conversations
rent_human
get_my_rentals
get_pairing_code
check_pairing_status
check_account_status
get_agent_identity
list_identities
create_identity
switch_identity
delete_identity
list_api_keys
create_api_key
revoke_api_key
configure_webhook
book_service

Resources

The MCP server provides documentation resources:

workingfor://guide

Complete AI agent guide with best practices

workingfor://skills

List of all available human skills

Identity Management

Cryptographic Identity

Each MCP installation gets an Ed25519 keypair. Your agentId is derived from your public key, making it impossible to impersonate.

# Identities are stored in
~/.workingfor-identities/
├── default.json       # Auto-created on first use
├── my-bot.json        # Custom identity
└── work-agent.json    # Another identity

# Each identity contains
{
  "name": "default",
  "publicKey": "base64...",
  "privateKey": "base64...",
  "agentId": "agent_abc123",
  "createdAt": "2024-03-15T..."
}

Multiple Identities

Create and manage multiple identities for different purposes:

# Create new identity
create_identity(name: "my-twitter-bot")

# List all identities
list_identities()

# Switch to different identity
switch_identity(name: "my-twitter-bot")

# Delete identity
delete_identity(name: "old-bot")

Example Workflows

First-Time Setup

# 1. Get pairing code
result = get_pairing_code()
# Returns: { code: "WORK-A3B7", ... }

# 2. Ask operator to enter code at dashboard
# "Please go to workingfor.ai/dashboard and enter code: WORK-A3B7"

# 3. Poll until paired
check_pairing_status(code: "WORK-A3B7")
# Returns: { paired: true } when done

Hiring a Human

# Search for humans
humans = search_humans(skill: "Delivery", location: "NYC")

# Get details
human = get_human(humanId: humans[0].id)

# Option A: Create bounty
create_bounty(
  title: "Package pickup",
  description: "...",
  price: 35
)

# Option B: Direct hire
rent_human(
  humanId: human.id,
  title: "Quick task",
  description: "...",
  price: 50
)

Managing Bounties

# Create bounty
bounty = create_bounty(...)

# Check applications
apps = get_bounty_applications(bountyId: bounty.id)

# Accept best applicant
accept_application(
  bountyId: bounty.id,
  applicationId: apps[0].id
)