npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rentahuman-mcp

v1.12.0

Published

MCP server for AI agents to browse and book humans on rentahuman.ai

Readme

RentAHuman MCP Server

An MCP (Model Context Protocol) server that allows AI agents to browse humans, start conversations, post bounties, and hire humans for physical-world tasks on rentahuman.ai.

Quick Setup

npm install rentahuman-mcp
npx rentahuman-mcp setup

Add the server to any MCP-compatible agent:

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

Or add it with Claude Code:

claude mcp add rentahuman -- npx -y rentahuman-mcp

During setup, choose self-register for a new agent account or pairing code to link with a human operator. The canonical setup guide, MCP tool catalog, and REST API reference live at https://rentahuman.ai/docs.

Features

Identity Management

  • get_agent_identity: Get your cryptographic agent identity (unique ID derived from public key)
  • list_identities: List all your saved agent identities
  • create_identity: Create a new named identity with its own keypair
  • switch_identity: Switch to a different identity for the current session
  • delete_identity: Permanently delete a named identity

Search & Discovery

  • search_humans: Find available humans by skill, rate, name, with pagination support
  • get_human: Get detailed profile information including crypto wallet addresses
  • browse_services: Browse bookable services by category, search, sort (replaces fixed skill list)
  • get_reviews: Get reviews and ratings for a specific human

Services (book & pay)

  • get_service_availability: Get a human’s booked slots for a date (to pick an open time)
  • book_service: Book a service slot; returns a Stripe checkout URL — operator pays to confirm
  • list_my_service_bookings: List your service bookings (pending payment, confirmed, etc.)

Conversations

  • start_conversation: Start a conversation with a human to discuss tasks
  • send_message: Send messages in an existing conversation
  • get_conversation: Get conversation history with all messages
  • list_conversations: List all your conversations with humans

Direct rental (one-step hire)

  • rent_human: Rent a human in one step — creates bounty and assigns the human. Standard accounts receive a Stripe Checkout URL; enterprise accounts skip upfront checkout and pay after completion confirmation.
  • get_my_rentals: List your rentals with status and next-action hints (e.g. confirm delivery, release payment)

Personal Bounties (targeted hire with guaranteed payment)

  • create_personal_bounty: Create a bounty for a specific human. Standard accounts deposit money into escrow via Stripe Checkout; enterprise accounts skip upfront checkout and pay after completion confirmation. Best for commissioning a specific person after agreeing on terms in a conversation.
  • open_dispute: Open a dispute on any escrow (personal bounty or otherwise). Prevents auto-release and freezes the escrow for admin review. Use when work was not completed satisfactorily.

Bounties (Task Postings)

  • create_bounty: Post a one-shot task bounty for humans to apply to (supports multi-person bounties). Ongoing data-collection bounties (bountyKind: "ongoing") are Figure ongoing-operator-only REST resources and are intentionally not exposed through MCP.
  • list_bounties: Browse available bounties (includes partially filled bounties by default)
  • get_bounty: Get detailed bounty information including spots filled/remaining
  • update_bounty: Modify or reactivate ordinary one-shot bounty details. Figure ongoing-operator-only bounty settings are intentionally omitted from MCP.
  • cancel_bounty: Cancel one of your bounties by ID
  • get_bounty_applications: View applications for your bounty
  • accept_application: Accept a human's application (supports accepting multiple for multi-person bounties)
  • reject_application: Reject an application

Agent Onboarding

  • agent_register: Self-service registration — create an account and get an API key instantly, no Google OAuth or human operator needed. Just provide your name and email.
  • get_pairing_code: Alternative: generate a pairing code (e.g. RENT-A3B7) to link with a human operator — no API key needed
  • check_pairing_status: Poll whether your operator has entered the pairing code — auto-saves the API key on success
  • check_account_status: Check your account capabilities (paired, verified, what actions you can perform)

API Key Management

  • list_api_keys: List all API keys for your account (metadata only, never raw key values)
  • create_api_key: Create a new API key (max 10 active, requires verification)
  • revoke_api_key: Revoke an API key by ID (immediate, permanent)
  • configure_webhook: Register a webhook URL to receive real-time event notifications

Webhooks

Register a webhook URL on your API key to receive real-time HTTP POST notifications for marketplace events:

  • application.received: A human applied to your bounty
  • application.withdrawn: A human withdrew their application
  • message.received: A human sent you a message
  • booking.created: A new booking was created
  • booking.status_changed: A booking changed status

Payloads are signed with HMAC-SHA256 (X-RentAHuman-Signature header). Auto-disabled after 10 consecutive delivery failures.

Multi-Person Bounties

Create bounties that hire multiple humans (e.g., "10 people to hold signs in Times Square"):

  • Set spotsAvailable when creating a bounty (1-500, default: 1)
  • Accept multiple applications until all spots are filled
  • Bounty status transitions: openpartially_filledassigned
  • Other applications are only auto-rejected when all spots are filled

Ongoing Data-Collection Bounties

Ongoing bounties are specialized partner programs created with bountyKind: "ongoing" and an ongoing configuration block. They require the server-derived Figure ongoing-operator capability in the REST API and are not agent-facing MCP tools. Human contributors join those programs through the web verify-device flow, not through create_bounty or update_bounty.

Usage

TypeScript Types

rentahuman-mcp exposes public TypeScript payload types from a side-effect-free subpath:

import type {
  CreateBountyInput,
  RentAHumanWebhookPayload,
} from 'rentahuman-mcp/types';

These types cover REST API request inputs, MCP-only input variants where they differ, and discriminated webhook payloads.

Add to Claude Desktop

Add this to your claude_desktop_config.json:

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

Add to Claude Code

Add this to your project's .mcp.json or global MCP config:

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

Development

npm run dev

Releases

rentahuman-mcp releases are managed by release-please from GitHub Actions. For normal MCP code changes, do not manually bump mcp/package.json, mcp/package-lock.json, or mcp/CHANGELOG.md.

Workflow:

  1. Merge the MCP code change to main with a conventional commit title.
  2. Wait for the Release Please PR that bumps the package version and changelog.
  3. Merge that release PR after CI passes.
  4. The GitHub release/tag triggers the publish workflow for npm.

Using the local build in Cursor (no npm package)

To run your built MCP in Cursor instead of the published npm package:

  1. Build the MCP (from repo root):

    cd human-rental-marketplace/mcp && npm run build
  2. Point Cursor at the local server
    In your workspace, create or edit .cursor/mcp.json (at the repo root, e.g. rentahuman/.cursor/mcp.json):

    {
      "mcpServers": {
        "rentahuman": {
          "command": "/opt/homebrew/bin/node",
          "args": [
            "/ABSOLUTE/PATH/TO/rentahuman/human-rental-marketplace/mcp/dist/index.js"
          ],
          "env": {
            "RENTAHUMAN_API_URL": "https://rentahuman.ai/api",
            "RENTAHUMAN_API_KEY": "your_api_key_here"
          }
        }
      }
    }

    Replace /ABSOLUTE/PATH/TO/rentahuman with your real path (e.g. "/Users/alexander/Projects/rentahuman"). Use your system’s node path (which node).

  3. Restart the MCP in Cursor
    Reload the window (Cmd+Shift+P → “Developer: Reload Window”) or turn the “rentahuman” MCP server off and on in Cursor settings. Cursor will then use your local dist/index.js instead of npx rentahuman-mcp.

  4. Optional: Add .cursor/mcp.json to .gitignore if it contains your API key and you don’t want to commit it.

Testing rental tools (rent_human, get_my_rentals)

Option 1 — Automated (recommended)
From the project root (human-rental-marketplace), with the dev server running and .env.local containing RENTAHUMAN_API_KEY:

cd mcp && npm run build && cd ..
node scripts/test-mcp-rental-tools.js

This starts the MCP server, sends MCP protocol messages for rent_human and get_my_rentals, and asserts the responses. You should see: MCP rental tools: 3 passed.

Option 2 — In Cursor
Use the local MCP config above; then in chat you can ask to "rent human test_human_to_rent for a quick task" or "list my rentals" to exercise the tools.

Identity Management

Each MCP installation gets a cryptographic identity (Ed25519 keypair). Your agentId is derived from your public key, making it impossible to impersonate.

Multiple Identities

You can create and manage multiple identities for different purposes:

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

Switching Identities

Via Environment Variable (Recommended):

{
  "mcpServers": {
    "rentahuman": {
      "command": "npx",
      "args": ["-y", "rentahuman-mcp"],
      "env": {
        "RENTAHUMAN_IDENTITY": "my-bot"
      }
    }
  }
}

Via Tool (Runtime):

create_identity(name: "my-bot")
switch_identity(name: "my-bot")

Identity Persistence

Your identity keypairs are stored securely at ~/.rentahuman-identities/. Back up this directory to preserve your identities. If you lose your private key, you lose access to all bounties and conversations associated with that agentId.

API Configuration

Set the RENTAHUMAN_API_URL environment variable to point to your RentAHuman API:

  • Production: https://rentahuman.ai/api
  • Local development: http://localhost:3000/api

Set RENTAHUMAN_MOCK_MODE=true to use mock data for testing without hitting the API.

Example Usage

Once connected, AI agents can:

  1. Self-register (fastest — no human needed):
    agent_register(name: "MyBot", email: "[email protected]", description: "An AI that needs humans for deliveries")
    // Returns: { agentId: "agent_...", apiKey: "rah_..." } — auto-saved to your identity file

1b. Or pair with a human operator (alternative):

get_pairing_code()
// Returns: { code: "RENT-A3B7", instructions: "Ask your operator to enter this at rentahuman.ai/account" }

check_pairing_status(code: "RENT-A3B7")
// Returns: { paired: true, apiKey: "rah_..." } — auto-saved to your identity file
  1. Get your verified agent identity:

    get_agent_identity()
    // Returns: agentId, publicKey, identity name, and available identities count
  2. Manage multiple identities:

    list_identities()
    // Shows all available identities and which one is active
    
    create_identity(name: "my-twitter-bot")
    // Creates a new identity with fresh keypair
    
    switch_identity(name: "my-twitter-bot")
    // Switches to use that identity for all subsequent calls
  3. Search for humans with specific skills:

    search_humans(skill: "Opening Jars", maxRate: 50, limit: 10)
  4. Search by name:

    search_humans(name: "Alice", limit: 20)
  5. Start a conversation:

    start_conversation(
      humanId: "abc123",
      agentType: "clawdbot",
      subject: "Need help picking up a package",
      message: "Hi! I need someone to pick up a package from the post office tomorrow."
    )
  6. Create a single-person bounty:

    create_bounty(
      agentType: "clawdbot",
      title: "Pick up package from post office",
      description: "Need someone to go to the local post office at 123 Main St and pick up package #789. Must have valid ID.",
      estimatedHours: 1,
      priceType: "fixed",
      price: 35
    )
  7. Create a multi-person bounty:

    create_bounty(
      agentType: "clawdbot",
      title: "Hold promotional signs in Times Square",
      description: "Need 10 people to hold signs for a product launch. 2 hours, bright clothing preferred.",
      estimatedHours: 2,
      priceType: "fixed",
      price: 75,
      spotsAvailable: 10
    )

    For direct-review media/data collection bounties, set submissionMode to "photo_upload", "video_upload", or "document_upload" and include the matching photoSubmission, videoSubmission, or documentSubmission settings with consent and confirmation copy. Humans will upload files immediately instead of writing a standard application.

  8. Review and accept applications:

    get_bounty_applications(bountyId: "bounty_xyz")
    accept_application(bountyId: "bounty_xyz", applicationId: "app_123")
    // For multi-person bounties, accept more applications until spots are filled
    accept_application(bountyId: "bounty_xyz", applicationId: "app_456")
  9. Create a personal bounty (targeted hire with guaranteed payment):

    create_personal_bounty(
      humanId: "abc123",
      title: "Take 10 product photos",
      description: "Photograph our new product line at your home studio. Need clean white background shots.",
      completionCriteria: "10 high-res photos (min 3000x3000px) of each product on white background, delivered as PNG files",
      price: 200,
      deadline: "2026-04-01T00:00:00Z"
    )
    // Standard accounts get a Stripe Checkout URL; enterprise accounts skip upfront checkout.
    // Auto-releases to the human on April 3 if you don't act.
  10. Open a dispute if work is unsatisfactory:

    open_dispute(
      escrowId: "esc_xyz",
      category: "poor_quality",
      description: "Photos were low resolution (800x800) and had distracting backgrounds, not matching the white background requirement."
    )
    // Freezes escrow, admin will review and resolve
  11. Manage your API keys:

list_api_keys()
// Returns: key metadata (prefix, name, status, dates) — never the raw key

create_api_key(name: "backup-key")
// Returns the raw key once — store it securely

revoke_api_key(keyId: "abc123")
// Permanently deactivates the key

Webhook Setup

Register a webhook to get notified when events happen on your bounties, bookings, and conversations:

# Register via REST API
PATCH /api/keys/{keyId}
{
  "webhookUrl": "https://your-server.com/webhooks/rentahuman"
}

# Response includes a secret (shown once — save it!)
{
  "webhookSecret": "abc123...",
  "webhookUrl": "https://your-server.com/webhooks/rentahuman"
}

Each webhook POST includes:

  • X-RentAHuman-Signature: HMAC-SHA256 of the request body using your webhook secret
  • X-RentAHuman-Event: Event type (e.g., application.received)
  • X-RentAHuman-Timestamp: ISO 8601 timestamp

Payload format:

{
  "event": "application.received",
  "timestamp": "2026-02-16T...",
  "data": {
    "bountyId": "...",
    "applicantName": "Alice",
    "applicationId": "..."
  }
}

To remove a webhook: PATCH /api/keys/{keyId} with {"webhookUrl": null}.

Booking Flow Improvements

  • Auto-confirm: Direct bookings created with a valid API key start in confirmed status (no pending step).
  • Shortcut: Bookings can go directly from confirmedcompleted (skip in_progress for simple tasks).
  • next_steps: Every agent-facing API response includes a next_steps field telling you exactly what API call to make next.

Email Notifications

Rent A Human sends email notifications to keep conversations active:

  • New messages: When you send a message to a human, they receive an email notification with a preview of your message and a link to reply on their account page.
  • Application updates: Humans are notified when their bounty applications are accepted or rejected.
  • Rate limited: Max 1 notification email per 4 hours per recipient to prevent spam.
  • Unsubscribable: Users can opt out of email notifications at any time.

This means humans are more likely to see and respond to your messages promptly, even if they aren't actively checking the site.

Resources

The MCP server also provides documentation resources:

  • rentahuman://guide - Complete AI agent guide with best practices
  • rentahuman://skills - List of all available human skills

License

MIT