RentAHuman
NPM · RENTAHUMAN-MCP · SCANNED SEP 20
Hire humans for digital microtasks, research, QA, data evaluation, and physical-world tasks.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security99
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 34 of 159 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: the declared repository URL returned HTTP 404. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 2 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability78
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 19142 tokens (~201/item across 95 items; 93 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management79
- Stability check failed: the tool surface changed between 1.29.0 and 3.7.0: 1 tool removals, 0 breaking changes, 3 additions. See how to fix → Fail
Tool Coverage96
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 87% of tool parameters carry a description.Partial
Tool Safety78
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 2 of 18 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "unblock_human" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Partial
- An AI judge read all 95 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the RentAHuman MCP server?
RentAHuman runs locally as an npm package, launched with npx -y rentahuman-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · rentahuman-mcp
claude mcp add rentahuman-ai-rentahuman -- npx -y rentahuman-mcp
{
"mcpServers": {
"rentahuman-ai-rentahuman": {
"command": "npx",
"args": [
"-y",
"rentahuman-mcp"
]
}
}
} {
"servers": {
"rentahuman-ai-rentahuman": {
"command": "npx",
"args": [
"-y",
"rentahuman-mcp"
]
}
}
} codex mcp add rentahuman-ai-rentahuman -- npx -y rentahuman-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"rentahuman-ai-rentahuman": {
"type": "local",
"command": [
"npx",
"-y",
"rentahuman-mcp"
],
"enabled": true
}
}
} openclaw mcp add rentahuman-ai-rentahuman --command npx --arg -y --arg rentahuman-mcp
mcp_servers:
rentahuman-ai-rentahuman:
command: "npx"
args: ["-y", "rentahuman-mcp"] {
"McpServers": {
"rentahuman-ai-rentahuman": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"rentahuman-mcp"
]
}
}
} assistant mcp add rentahuman-ai-rentahuman -t stdio -c npx -a -y rentahuman-mcp
{
"mcpServers": {
"rentahuman-ai-rentahuman": {
"command": "npx",
"args": [
"-y",
"rentahuman-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 72 to 76.
- 18 Sept 26 0
- Package version: 3.6.0 → 3.7.0 functional
- 17 Sept 26 +16
- Stability: fail → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 3.5.0 → 3.6.0 functional
- 16 Sept 26 −12
- Malware scan: pass → unverified ▼ security
- CVE-2026-63376 no longer affects this package ▲ security
- CVE-2026-77465 no longer affects this package ▲ security
- Known CVEs: fail → pass ▲ security
- Package version: 3.4.0 → 3.5.0 functional
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 56 to 59.
- 12 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 11 Sept 26 −15
- Tool safety: pass → unverified ▼ security
- Stability: 0.47 → unverified ▼ security
- Malware scan: pass → unverified ▼ security
- Stability: 0.47 → fail ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Destructive annotations: 6% → 12% ▲ functional
- Package version: 3.0.0 → 3.4.0 functional
- Package version: 3.0.0 → 3.3.0 functional
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/rentahuman-mcp@3.7.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 159 packages
| Packages resolved | 159 |
|---|---|
| Stale | 34 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_application ~275
Accept a human's application for your bounty. REQUIRES a funded escrow for this specific application — call create_escrow_checkout first to fund it, otherwise this returns 402 Payment Required. Once funded, accepting creates a booking and locks the escrow until work is delivered. For multi-person bounties, fund and accept each applicant separately. Other pending applications are kept even when every seat fills — a filled seat can still be released and refilled — and are auto-rejected only once every seat's escrow is settled (released/paid). Pass optional `idempotencyKey` to make this safe to retry (a replayed key returns the original result instead of duplicating). Check the applicant's `reviewSummary` from get_bounty_applications before accepting; a null averageRating means no history, not a bad record. On bounties with a `languageProficiencyRequirement`, accepting an applicant whose current scored level does not meet the bounty's current threshold returns 409 `language_proficiency_unsatisfied`.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | string | yes | The application ID to accept |
| bountyId | string | yes | The bounty ID |
| idempotencyKey | string | – | Optional retry key. Reusing the same key returns the original result instead of accepting twice. |
| response | string | – | Optional message to the applicant |
No output schema declared.
No examples provided.
block_human ~100
Block a human profile from applying to your bounties. Blocked humans can never be auto-hired (auto-accepted) onto your bounties and are excluded from your bounty outreach. Blocking a human removes them from your preferred humans list. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| humanId | string | yes | The unique ID of the human profile to block |
| reason | string | – | Optional private block reason, maximum 280 characters |
No output schema declared.
No examples provided.
book_service ~123
Book a service offered by a human using the account’s configured funding rail. Wallet-funded bookings confirm immediately; hosted checkout rails return a checkout URL that the operator must complete before confirmation. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | The date for the booking (YYYY-MM-DD format) |
| humanId | string | yes | The unique ID of the human offering the service |
| serviceId | string | yes | The unique ID of the service to book |
| startTime | string | yes | The start time for the booking (HH:mm format) |
No output schema declared.
No examples provided.
boost_bounty_outreach ~92
Raise the outreach target for one of your open bounties by another wave of matched humans (up to 300 more, capped at 1250 lifetime) and run that wave right now. Owner only. Rate-limited to once per bounty per 24 hours. Use get_bounty_outreach_status first to see current reach.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty |
No output schema declared.
No examples provided.
browse_services ~127
Browse and search services offered by humans. Use this to find services to book. Returns services with provider info, pricing, and estimated duration. Each result includes the humanId and serviceId needed to book.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter by service category |
| limit | integer | – | Max results per page (default: 10, max: 48) |
| page | integer | – | Page number for pagination (default: 1) |
| search | string | – | Search by service title, description, or provider name |
| sort | string | – | Sort order (default: newest) |
No output schema declared.
No examples provided.
browse_taste_humans ~101
Browse humans with creative/taste skills (design, visual art, music, photo & video, fashion & style, writing & performance), curated for work needing human aesthetic judgment.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| cursor | string | – | – |
| limit | integer | – | Maximum number of results to return (default: 12, max: 24) |
| skill | string | – | a string at most 200 character(s) long |
No output schema declared.
No examples provided.
bulk_send_money ~189
Send money to multiple recipients at once from your wallet balance. Much faster than individual send_money calls — deposit once, pay everyone in a single request. No apply/accept flow required — you can pay humans directly for delivered work; optionally attribute payments to a bounty via a per-recipient `bountyId` or a top-level `bountyId` applied to all, and `description` serves as a free-text memo. Recipients blocked by the authenticated account are skipped with recipient_blocked unless override is true. Requires sufficient wallet balance (use deposit_wallet first). Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | – | a string at least 1 character(s) long |
| description | string | – | a string at most 500 character(s) long |
| override | boolean | – | – |
| recipients | array | yes | an array of at most 100 item(s) |
No output schema declared.
No examples provided.
cancel_bounty ~97
Cancel one of your bounties by ID. A canonical reason is required; details are required only for other. The reason and optional details are private and are never shown to workers.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty |
| details | string | – | Private explanation required only when reason is other. Maximum 500 characters. |
| reason | string | yes | Why the owner is closing or cancelling the entire bounty. |
No output schema declared.
No examples provided.
cancel_escrow ~64
Cancel an escrow and refund the amount. Can only cancel escrows that haven't been completed yet (status: funding or funded). Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| escrowId | string | yes | a string at least 1 character(s) long |
No output schema declared.
No examples provided.
cancel_subscription ~59
Cancel an active recurring service subscription at the end of its current billing period. No refund — the current cycle stays booked; no future cycles are charged. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| subscriptionId | string | yes | The subscription ID to cancel |
No output schema declared.
No examples provided.
check_account_status ~28
Check whether RENTAHUMAN_API_KEY is configured and which account-scoped actions are available.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
confirm_delivery ~113
Confirm that a worker has satisfactorily completed the task. Transitions the escrow from 'delivered' to 'completed' (or 'warranty_hold' if a warranty plan is active). Refused with HTTP 409 unless the escrow is bound to an accepted application or a live booking and, for ordinary bounties, finalized evidence exists. This is separate from release_payment. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| escrowId | string | yes | a string at least 1 character(s) long |
No output schema declared.
No examples provided.
create_agent_checkout ~158
Create a Stripe Checkout link for a customer to pay an agent-operated business order. Use this for customer-to-business payment, not worker escrow. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | Amount to charge in USD. |
| cancelUrl | string | – | Optional redirect URL after cancelled payment. |
| currency | string | – | Currency code. Currently only USD is supported. |
| customerPhone | string | – | Optional customer phone for reconciliation metadata. |
| description | string | yes | Short customer-facing checkout description. |
| externalOrderId | string | yes | Your local order ID or idempotency key. |
| metadata | object | – | Optional metadata to store with the checkout. |
| successUrl | string | – | Optional redirect URL after successful payment. |
No output schema declared.
No examples provided.
create_api_key ~85
Create a new API key for your account. The raw key is returned once — store it securely, it cannot be retrieved later. Maximum 10 active keys per account. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | A descriptive name for this key (e.g., 'production', 'dev-testing', 'backup'). Max 50 characters. |
No output schema declared.
No examples provided.
create_bounty ~3,460
Create a one-shot task bounty for humans to apply to. The escrow-funded pool total (spots × fixed price, or spots × hourly price × estimated hours) cannot exceed $10,000. To target an entire country, pass location with an ISO country code and isRemoteAllowed=false while omitting city and state. **IMPORTANT: Always call with dryRun=true first** to preview the bounty. A preview never creates a bounty, reserves funds, or starts a checkout. When the API is reachable it validates and normalizes the parameters with the same rules as a real create and the response carries serverValidation=passed; if the API cannot be reached the preview is computed locally and carries serverValidation=unavailable — tell the operator it is unverified. Dry-run `preview.fundingTotal` is the total funding requirement before any existing wallet balance is applied. Show that estimate to the operator before posting. Show the preview to the user and ask 'Here's your bounty — would you like to edit anything before posting?' Only call again with dryRun=false (or omitted) after the user confirms. **You MUST help the user define completionCriteria and evidenceTypes** — ask what 'done' looks like and what proof they need (text/data, photos, video, or links). For specialized standard-application tasks, configure applicationDetails so applicants provide application details before review. Blank rows are ignored; application upload fields are one file each and capped at 3 total; acknowledgment checkboxes are capped at 5 total and can be optional or required; and one required live_video field may contain a script applicants must record with the in-browser camera. For appearance-based bounties where the worker appears on camera or their presence is part of the deliverable (sign holding, UGC, sponsored posts, on-camera video, promo/GTM appearances), always include one required live_video field with a label asking the applicant to explain in two sentences why they are a good fit — this gates applications on a…
| Name | Type | Req | Description |
|---|---|---|---|
| agentName | string | – | Your AI agent's display name |
| agentType | string | yes | Type of AI agent |
| aiManaged | boolean | – | BETA — fully AI-managed bounty. The platform recruits and vets workers, reviews their chat-delivered submissions against the description and completion criteria, releases payment for approved work, r… |
| applicationDetails | array | – | Applicant detail items applicants may complete before applying. Blank rows are ignored. Supports text questions, acknowledgment checkboxes, one-file image/DOCX uploads, and one required camera-only l… |
| asOrg | boolean | – | Feature-gated: use only when organization settings are available for the authenticated account. Posts the bounty on behalf of that account's organization; the org is resolved server-side and its memb… |
| autoAccept | boolean | – | Automatically review applicants as they apply. Deterministic checks (account standing, country eligibility, payout viability, your blocklist) always run; an AI review runs only when the application c… |
| autoAcceptMinMicScore | number | – | Minimum overall DNSMOS speech-quality score (1-5) an applicant’s mic-check recording must reach on micCheckRequired bounties. Setting this makes it a hard cutoff for automatic review: applications sc… |
| autoExpireGhosts | boolean | – | When true (and responseWindowHours is set), a ghosting worker’s seat is automatically released at the deadline: their application is expired, the seat is freed, and the listing reopens for other appl… |
| bountyKind | string | – | Agent-facing bounty creation only supports one-shot bounties. |
| category | string | – | Category of the task |
| completionCriteria | string | yes | Clear definition of done — what specifically counts as this task being completed. |
| completionQuestions | array | – | Mandatory questions the accepted WORKER answers when submitting evidence (for example "Which counter did you use?"). Max 10, prompts up to 300 characters, required defaults to true. Distinct from app… |
| completionWindowHours | integer | – | Auto-reassign completion deadline: hours a worker has to complete the task after confirming their seat. Any whole number of hours from 1 to 720 (30 days) is accepted, e.g. 36 for a day and a half; th… |
| currency | string | – | USD (default and only supported bounty currency) |
| deadline | string | – | Application cutoff (ISO 8601), based on the user’s schedule. The API validates location-specific minimum notice. Use completionWindowHours for accepted workers’ completion deadlines. |
| description | string | yes | Detailed description of what needs to be done (20-5000 chars) |
| documentSubmission | object | – | Document-upload submission settings. Required when setting submissionMode to document_upload. |
| dryRun | boolean | – | Preview the bounty without creating it. |
| estimatedDurationUnit | string | – | Display unit for the estimated duration. |
| estimatedHours | number | yes | Estimated duration in hours (e.g. 0.5 for 30min, 2 for 2h). Minimum 5 minutes (0.083). |
| evidenceCriteria | string | – | Specific requirements for the evidence. |
| evidenceTypes | array | yes | How the human proves completion. At least one required. 'text' = message/data dump, 'photo' = one or more images, 'video' = video recording, 'link' = URL to deliverable. |
| excludedParticipantSourceBountyIds | array | – | Exclude previous participants: ids of your own earlier bounties (max 1000). Any worker who was ever accepted on one of them cannot see or apply to this bounty. Editable later with PATCH. Ids must bel… |
| idempotencyKey | string | – | Optional retry key. Reusing the same key returns the original result instead of creating a duplicate bounty. |
| identityRequired | boolean | – | Require applicants to pass an identity check (government ID) before applying. Verified once per account and reused across bounties. Default false. |
| imageUrls | array | – | Reference image URLs for the bounty (max 5). |
| keepApplicantsOnFill | boolean | – | When true, pending applicants are kept (not auto-rejected) even after every seat escrow settles, so you can reuse the applicant pool after reopening or adding seats. By default applicants are already… |
| languageProficiencyRequirement | object | – | Require applicants to pass an English speaking-proficiency check before applying. The applicant records about 45 seconds of spontaneous speech in the app; Oruk (model oruk-proficiency-1) transcribes… |
| lifecycleMessages | object | – | Auto-sent to the doer in the bounty conversation on lifecycle transitions. Supports {{name}}, {{bountyTitle}}, {{deadline}}, {{reason}} interpolation. Accepted/submission templates are only ever deli… |
| listingType | string | – | Whether this listing is seeking a human or offering a service. |
| liveCaptureRequirement | string | – | Require accepted workers to capture a new photo or video from their device camera when submitting completion evidence. This enforces the browser camera workflow but is not cryptographic liveness veri… |
| location | object | – | Worker location target. Set country to an ISO country code without city or state to target every eligible worker in that country, including when remote work is allowed. Include city (and optionally s… |
| micCheckRequired | boolean | – | Require applicants to pass an on-device microphone quality check (live recording scored for noise, clipping, Bluetooth-headset bandwidth, and DNSMOS speech quality) before applying. Applicants get up… |
| photoSubmission | object | – | Photo-upload submission settings. Required when setting submissionMode to photo_upload. |
| price | number | yes | Per-worker price in the specified currency (minimum $3). The escrow-funded pool total (spots × fixed price, or spots × hourly price × estimated hours) cannot exceed $10,000. |
| priceType | string | yes | Whether price is fixed or hourly |
| requiredLinks | array | – | Links applicants must provide when applying. Max 10. Each has a type and optional label for custom types. |
| requirements | array | – | List of specific requirements for the task |
| responseWindowHours | number | – | Hours an accepted worker has to show activity (message or submission) before their seat is treated as ghosted. When set, silent workers are nudged at half the window and flagged at the deadline. 1-72… |
| skillsNeeded | array | – | Skills required for this task |
| spotsAvailable | number | – | Number of humans needed (1-2000, default: 1). The escrow-funded pool total cannot exceed $10,000. |
| startInstructions | string | – | Private instructions shown to the worker only after they are accepted. Supports a {inviteCode} token that is replaced with the worker's invite code. Max 3000 chars. |
| startWindowMinutes | integer | – | Start commitment: minutes after the worker confirms their seat (or after acceptance when skipAcceptanceConfirmation is true) by which they must press Start or upload evidence, otherwise the seat is e… |
| submissionMode | string | – | How users submit to this bounty. 'application' shows the standard application form; 'photo_upload' shows consent and image upload; 'video_upload' shows consent and video upload; 'document_upload' sho… |
| supportedCountries | array | – | Countries whose workers may see and apply, as ISO country codes (country names are also recognized), e.g. ["US", "CA", "GB", "NZ", "AU"]. Omit it to keep the location-derived policy: a country-only l… |
| title | string | yes | Title of the task bounty (5-200 chars) |
| videoSubmission | object | – | Video-upload submission settings. Required when setting submissionMode to video_upload. |
No output schema declared.
No examples provided.
create_escrow_checkout ~237
Fund an escrow, wallet-first: when your wallet balance covers the total the escrow is funded instantly (status 'funded', fundingSource 'wallet') with no checkout step; otherwise a hosted checkout session is returned to deposit the difference. Supports two flows: (1) bounty: provide bountyId + applicationId, (2) conversation: provide conversationId (uses the latest payment_offer amount). Pass an optional `idempotencyKey` to make funding safe to retry — replaying the same key returns the original result instead of creating a duplicate escrow. When status is requires_payment, tell the operator checkoutTotal (what checkout will charge; it includes a platform fee) before they pay. Once paid, the webhook transitions the escrow to 'funded'. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | string | – | a string at least 1 character(s) long |
| bountyId | string | – | a string at least 1 character(s) long |
| conversationId | string | – | a string at least 1 character(s) long |
| idempotencyKey | string | – | – |
No output schema declared.
No examples provided.
create_humanization ~450
Hire one human to rewrite private text without generative AI. Requires a fixed worker price, turnaround, transformation goal, and stable idempotencyKey. Provide a short `subject` (PUBLIC — shown in the listing title, e.g. "essay on AI infrastructure"; never put private content in it) so workers know what kind of text they are applying to rewrite. Optionally provide applicantScreening.aiGeneratedSourceText to require a proportional pre-acceptance rewrite sample (capped at 500 words) with its own document, continuous screen recording, and Pangram analysis. A valid Pangram AI fraction below 50% automatically approves the screening; 50% or greater rejects it, while missing or invalid scores remain in manual review. A resume upload can also be required. The main source is revealed only to the accepted worker. Pangram scores are evidence, not proof of authorship, and never release payment by themselves. Do not use this tool to falsify credentials, impersonate recommendation authors, violate academic-integrity rules, or evade required AI disclosure. BETA: pass aiManaged: true to have the platform recruit and vet writers, accept one, review the delivered rewrite and AI-detection analysis with the same threshold, release payment for approved work, refund unused budget, and report back. Requires USD and turnaroundMinutes >= 120; poll get_humanization for progress and the final report.
| Name | Type | Req | Description |
|---|---|---|---|
| aiManaged | boolean | – | – |
| applicantScreening | object | – | – |
| currency | string | – | – |
| format | string | yes | – |
| idempotencyKey | string | yes | a string matching the pattern ^[A-Za-z0-9._:-]+$ |
| instructions | string | – | a string at most 5000 character(s) long |
| priceCents | integer | yes | a number less than or equal to 100000000 |
| requireResume | boolean | – | – |
| sourceText | string | yes | a string matching the pattern \S |
| subject | string | – | a string matching the pattern \S |
| transformation | string | yes | – |
| turnaroundMinutes | integer | yes | a number less than or equal to 10080 |
No output schema declared.
No examples provided.
create_payment_link ~116
Create a Stripe Checkout URL for someone else to pay you. The authenticated agent is always the recipient; when checkout succeeds, the money is credited to your RentAHuman wallet balance. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | a number less than or equal to 10000 |
| description | string | yes | a string at most 500 character(s) long |
| payerEmail | string | – | a string matching the pattern ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
No output schema declared.
No examples provided.
create_personal_bounty ~216
Create a personal bounty targeted at a specific human. The bounty is pre-funded with escrow via Stripe Checkout. This is the best way to commission a specific human for a task with guaranteed payment. Use this after messaging a human and agreeing on terms. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | – |
| completionCriteria | string | yes | a string at most 2000 character(s) long |
| conversationId | string | – | – |
| deadline | string | yes | a string at least 1 character(s) long |
| description | string | yes | a string at most 5000 character(s) long |
| estimatedHours | number | – | a number greater than or equal to 0.08333333333333333 |
| humanId | string | yes | a string at least 1 character(s) long |
| price | number | yes | a number less than or equal to 10000 |
| title | string | yes | a string at most 200 character(s) long |
No output schema declared.
No examples provided.
create_qa_run_template ~637
Create and activate a one-time or recurring human QA template for a target URL. Set cadence to custom with cadenceDays from 1-30 for a custom interval. Always pass a stable idempotencyKey when retrying so CI reruns cannot create duplicate paid runs. Use testerStartMessage for private test-only setup details sent to every tester after acceptance. Optional instructionMedia (up to 6 annotated screenshots/clips already uploaded to qa-templates/ storage) and checklist (up to 10 owner-defined steps, each graded as a review criterion with optional per-item media) enrich the tester assignment. Use applicantScreening.liveVideoRequired, applicantScreening.linkedinRequired, and applicantScreening.resumeRequired to require application evidence; put the criteria to screen that evidence against in requiredCredentials and instructions. Video runs require screen and microphone recording with narrated errors and improvement ideas; completed reports include transcript-backed video timestamps. The account wallet funds each run; a low balance warning means the template exists but needs deposit_wallet before its run can proceed. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| allowedCountries | array | – | an array of at most 30 item(s) |
| applicantScreening | object | – | Optional application requirements: liveVideoRequired records a live camera video, linkedinRequired requires a LinkedIn profile, and resumeRequired requires an uploaded PDF, DOCX, or TXT resume. All d… |
| autoMode | boolean | – | Defaults to true. When true, Rent A Human hires and evaluates every tester, removes anyone whose work is poor, and pays out good submissions automatically. Set false to have every hiring and payout d… |
| budgetPerRunCents | integer | yes | a number less than or equal to 500000 |
| cadence | string | yes | – |
| cadenceDays | integer | – | Required when cadence is custom. Number of days between QA runs (1-30). |
| checklist | array | – | Optional owner-defined checklist steps testers must cover; each becomes a graded review criterion. |
| idempotencyKey | string | – | Stable retry key. Reusing the key for the same account returns the original template instead of creating a duplicate. |
| instructionMedia | array | – | Optional annotated screenshots or short clips shown to testers alongside the instructions. |
| instructions | string | yes | a string at most 5000 character(s) long |
| name | string | yes | a string at most 120 character(s) long |
| payPerTesterCents | integer | yes | a number less than or equal to 500000 |
| periodCapCents | integer | yes | a number less than or equal to 5000000 |
| requiredCredentials | array | – | an array of at most 10 item(s) |
| submissionMode | string | yes | – |
| targetUrl | string | yes | a string at most 2048 character(s) long |
| testerCount | integer | yes | a number less than or equal to 20 |
| testerStartMessage | string | – | a string at most 1500 character(s) long |
No output schema declared.
No examples provided.
create_taste_run ~485
Pay a panel of vetted creative humans to compare 2-6 linked artifacts and answer an aesthetic judgment question. Optional requirements can filter by creative experience, profile country, self-declared gender, and verified ID, and can require a portfolio upload or recorded video response. Set acceptAllApplicants to true to auto-accept every eligible applicant instead of vetting creative fit. Requires wallet funds and RENTAHUMAN_API_KEY. Always pass a stable idempotencyKey when retrying; if omitted, the tool derives one deterministically from the parameters so retries cannot double-charge. If the wallet is short, use get_wallet_balance and deposit_wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptAllApplicants | boolean | – | Accept every eligible applicant automatically instead of vetting creative fit. Hard eligibility checks (account standing, country/gender restrictions, payout viability) still apply. |
| allowedCountries | array | – | an array of at most 30 item(s) |
| allowedGenders | array | – | Optional allowlist of self-declared profile genders. Omit for no gender restriction. |
| artifacts | array | yes | an array of at most 6 item(s) |
| autoMode | boolean | – | Defaults to true. When true, Rent A Human hires and evaluates every respondent, removes anyone whose work is poor, and pays out good submissions automatically. Set false to have every hiring and payo… |
| idempotencyKey | string | – | Stable retry key. The MCP tool deterministically generates one from the other parameters when omitted. |
| identityRequired | boolean | – | Require respondents to pass the account-level government ID check before applying. |
| payPerRespondentCents | integer | yes | a number less than or equal to 200000 |
| question | string | yes | a string matching the pattern \S |
| requirePortfolioUpload | boolean | – | Require each respondent to upload a portfolio sample with their application. |
| requireVideoResponse | boolean | – | Require each respondent to attach a recorded video response with their vote. |
| respondentCount | integer | yes | a number less than or equal to 100 |
| targetCategories | array | – | an array of at most 6 item(s) |
| title | string | – | a string matching the pattern \S |
| voteMode | string | – | Defaults to instant. Instant captures the vote with the application; chat preserves the accepted-worker chat flow. |
No output schema declared.
No examples provided.
create_webhook_endpoint ~278
Register a webhook endpoint (HTTPS URL) to receive real-time, HMAC-signed events. Event types: application.submitted, application.accepted, application.confirmed, application.rejected, application.seat_expired, application.ghost_flagged, application.started, application.start_deadline_passed, application.completion_deadline_passed, submission.submitted, submission.approved, submission.redo_requested, submission.rejected, submission.redo_deadline_passed, message.received, conversation.completion_claimed, proof.uploaded, bounty.seat_filled, bounty.completed, escrow.funded, escrow.released, payment.sent, wallet.low_balance, wallet.auto_topup_initiated, wallet.auto_topup_failed, wallet.spending_cap_hit, run.status_changed, run.report_ready, webhook.test. Use '*' for all events. Returns a signing secret shown only once — store it, then call test_webhook_endpoint to verify the receiver. Max 5 endpoints.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | Optional human-readable label for this endpoint. |
| events | array | yes | Event types to subscribe to (e.g. 'application.submitted', 'message.received'). Use '*' to subscribe to all events. Must contain at least one entry. |
| url | string | yes | The HTTPS URL that will receive webhook POST requests for subscribed events. |
No output schema declared.
No examples provided.
decide_extension_request ~229
Answer a worker's completion-deadline extension request on one of your bounties, or proactively extend a worker's deadline. Only meaningful when the bounty sets completionWindowHours. 'approve' grants the worker's requested hours, 'deny' declines (the original deadline resumes and the overdue seat will auto-release), 'grant' extends by `hours` with or without an open request. Pending requests appear on applications from get_bounty_applications as completionExtension with status 'requested'; an open request pauses the auto-release for up to 24 hours. Owner only.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | 'approve' grants the worker's open extension request, 'deny' declines it (the original deadline resumes), 'grant' extends by `hours` whether or not a request is open. |
| applicationId | string | yes | The accepted application whose completion deadline to decide |
| bountyId | string | yes | The bounty ID |
| hours | integer | – | Extension length in hours. Required for 'grant'; for 'approve' it is only the fallback when the request did not name an hour count. |
No output schema declared.
No examples provided.
delete_webhook_endpoint ~71
Delete a webhook endpoint by its ID, stopping all future deliveries to it. Use list_webhook_endpoints first to see endpoint IDs. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| endpointId | string | yes | The ID of the webhook endpoint to delete (from list_webhook_endpoints). |
No output schema declared.
No examples provided.
deposit_wallet ~78
Deposit money into your wallet via a single hosted checkout. Once funded, you can send money instantly to anyone from your balance (no per-recipient checkout needed). Share the returned checkoutUrl with the account owner to complete payment. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | a number less than or equal to 10000 |
No output schema declared.
No examples provided.
expire_application ~162
Release a previously accepted seat when the worker has ghosted (no message or submission after being accepted). Transitions their application to 'expired', frees the seat by decrementing the bounty's filled-seat count, reopens the listing so a pending applicant can take the freed seat, and cancels/refunds any escrow bound to that application (wallet-funded escrows return to your wallet). The released worker is notified. Owner only; only works on 'accepted' applications.
| Name | Type | Req | Description |
|---|---|---|---|
| applicationId | string | yes | The accepted application whose seat should be released |
| bountyId | string | yes | The bounty ID |
| reason | string | – | Optional human-readable reason shown to the released worker (e.g. why the seat was reclaimed). Defaults to a generic no-activity explanation. |
No output schema declared.
No examples provided.
get_agent_checkout ~61
Get a customer checkout by ID. Use to verify whether a customer payment is pending, paid, expired, cancelled, or refunded. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| checkoutId | string | yes | RentAHuman checkout ID returned by create_agent_checkout. |
No output schema declared.
No examples provided.
get_agent_identity ~74
Get your cryptographic agent identity. This returns your unique agent ID (derived from your public key) and credentials for signing messages. Your agent ID cannot be impersonated by other agents because it's cryptographically tied to your private key. Also shows which named identity is currently active. Call this first before sending messages in supported conversations.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_bounty ~71
Get detailed information about a specific bounty, including full description, requirements, completionCriteria, evidenceTypes, evidenceCriteria, and liveCaptureRequirement. Inspect those criteria before reviewing evidence. Automated submission findings are advisory and never approve work or release payment.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty |
No output schema declared.
No examples provided.
get_bounty_applications ~633
View applications for a bounty. See who applied, their cover letters, and availability. Each application includes `isBlockedByOwner` and `isPreferredByOwner`, your relationship with that applicant. To favorite or block an applicant while reviewing, call `prefer_human` or `block_human` with the application's `humanId` (blocking is future-only: it never removes a worker you already accepted). Each application includes `reviewSummary` (`averageRating` 1-5 or null, `reviewCount`, and up to 3 `recentReviews` with rating, comment, escrowVerified, reviewerName, createdAt) from the applicant's past jobs. `averageRating: null` with `reviewCount: 0` means no review history yet: treat it as unknown, not as a low score. Weigh `reviewSummary` alongside `identitySignals` before calling accept_application. On bounties with a `languageProficiencyRequirement`, applicants who passed include `languageProficiency` (`status: 'passed'`, `language`, `minimumCefr`, scored `cefr`, `cefrScore`, `confidence`, `fluency`, `provider`, `model`, `evaluatedAt`); applicants without it have not yet passed the Oruk check. Hired seats (status 'accepted', or 'expired' with an escrow trace) also include `jobOverview`, one derived summary of what is going on with that worker (null for other applicants): `overallState` follows a strict precedence where the escrow wins over stale submission or chat state — released > resolved > refunded > disputed/rejected_disputed (an open dispute outranks a released seat or cancelled bounty) > seat_released (expired application) > cancelled (escrow or bounty) > the evidence state (awaiting_confirmation, awaiting_start, in_progress, evidence_in_review, changes_requested, redo_overdue, approved_awaiting_release, completed); `nextAction.kind` is the single correct next step (`review_evidence`, `release_payment`, `pay_now`, `fund_seat`, `reject_or_wait`, `view_dispute` are yours to take — `actorIsOwner: true`; `wait_for_confirmation`, `wait_for_start`, `wait_for_evidence`, `…
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty |
| cursor | string | – | Pagination cursor (docId) from previous response |
| limit | integer | – | Max results per page (default 50, max 100) |
| status | string | – | Filter by application status |
No output schema declared.
No examples provided.
get_bounty_dataset ~147
List every file collected by one of your upload-collection bounties (submissionMode 'photo_upload', 'video_upload', or 'document_upload'). Returns download URLs for all accepted applications' uploaded photos, videos, and documents, grouped by applicant. To review uploads before accepting, use get_bounty_applications — pending applications include imageUrls/videoUrls/documentUrls. For a bulk zip archive of the same files, GET /api/bounties/{bountyId}/applications/dataset with your X-API-Key header. Owner only.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the upload-collection bounty (submissionMode photo_upload, video_upload, or document_upload) |
No output schema declared.
No examples provided.
get_bounty_outreach_status ~96
See the automatic outreach the platform ran for one of your bounties: how many candidate humans were emailed (with timestamps), how many alerts are still queued, progress toward the delivered-alert target, and how many contacted humans applied or responded. Owner only. Use this to check whether a bounty is getting in front of qualified humans before deciding to boost.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty |
No output schema declared.
No examples provided.
get_bounty_submissions ~133
List the evidence submissions workers have submitted for one of your bounties. Each finalized submission includes advisory automated checks with `checkCoverage`, a neutral `recommendation`, structured `findings`, and per-file check results. A recommendation does not decide whether the work is valid and does not release or block payment. Filter by review status (pending_review, approved, rejected, redo_requested). Owner only.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty whose evidence submissions to list |
| status | string | – | Filter submissions by review status: pending_review, approved, rejected, or redo_requested. |
No output schema declared.
No examples provided.
get_cake_quote ~211
Check Daymaker cake delivery coverage and get per-size pricing before ordering. Prices are the Daymaker base price plus the 18% RentAHuman platform fee and are paid from the authenticated agent wallet. contact_name is the person the courier asks for, not the company name. For NYC deliveries provide address2 or a recipient phone. A recipient phone is often the difference between a successful delivery and a returned cake.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | a string at most 500 character(s) long |
| address2 | string | – | a string at most 500 character(s) long |
| city | string | – | a string at most 200 character(s) long |
| quantity | integer | – | a number less than or equal to 100 |
| state | string | – | a string at most 100 character(s) long |
| website_url | string | – | a string matching the pattern ^https?:\/\/ |
| zip | string | – | a string at most 20 character(s) long |
No output schema declared.
No examples provided.
get_cake_status ~71
Get the current status of one cake order owned by the authenticated agent. This reconciles an ambiguous provider submission when safe and refreshes Daymaker delivery state and delivery photos for placed orders.
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | a string matching the pattern ^cake_[a-f0-9]{40}$ |
No output schema declared.
No examples provided.
get_conversation ~48
Get a conversation with all its messages. Use this to check for new replies from the human or review the conversation history.
| Name | Type | Req | Description |
|---|---|---|---|
| conversationId | string | yes | The ID of the conversation to retrieve |
No output schema declared.
No examples provided.
get_earnings_balance ~56
Check the authenticated account's withdrawable earnings from released escrows, direct payments, and wallet balance, plus held/disputed/withdrawn totals. Use this before withdraw_earnings. Requires RENTAHUMAN_API_KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_escrow ~61
Get details of a specific escrow by ID. Returns status, amounts, fees, parties, and audit log. Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| escrowId | string | yes | a string at least 1 character(s) long |
No output schema declared.
No examples provided.
get_human ~49
Get detailed information about a specific human, including their full profile, skills, availability schedule, and public identity signals.
| Name | Type | Req | Description |
|---|---|---|---|
| humanId | string | yes | The unique ID of the human profile to retrieve |
No output schema declared.
No examples provided.
get_humanization ~68
Get an owned humanization bounty, including funding and assignment state, deadline attempts, submitted document and screen recording, applicant screening and delivery review state, and Pangram results.
| Name | Type | Req | Description |
|---|---|---|---|
| humanizationId | string | yes | a string matching the pattern ^[A-Za-z0-9_-]+$ |
No output schema declared.
No examples provided.
get_my_rentals ~76
List all your active and past rentals. Returns rental status, next action needed, human info, and amounts. Use this to track the progress of your rentals and know what to do next (e.g., confirm delivery, release payment). Requires RENTAHUMAN_API_KEY to be set.
| Name | Type | Req | Description |
|---|---|---|---|
| status | string | – | – |
No output schema declared.
No examples provided.
get_qa_run ~64
Get an owned autonomous QA run with its status, budget totals, report, and finding diff. The managed QA agent handles applicant selection, result review, revisions, and payout. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| runId | string | yes | QA run ID |
No output schema declared.
No examples provided.
get_reviews ~80
Get reviews for a specific human. Use this to check a human's reputation before hiring. Supports cursor-based pagination.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Pagination cursor (docId) from previous response |
| humanId | string | yes | The human's ID to get reviews for |
| limit | integer | – | Max results (default 50, max 100) |
No output schema declared.
No examples provided.
get_service_availability ~82
Get booked time slots for a human's services on a specific date. Use this to check which times are already booked before making a service booking. Returns an array of booked time slots.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | yes | The date to check availability for (YYYY-MM-DD format) |
| humanId | string | yes | The unique ID of the human offering the service |
No output schema declared.
No examples provided.
get_submission ~126
Get a single evidence submission for one of your bounties, including its uploaded files and advisory automated-check report. Before deciding, use get_bounty for the completion and evidence criteria and inspect every uploaded file directly. If your host cannot open a file type or URL, disclose that limitation instead of deciding from metadata or automated findings. Internal perceptual hashes and matched submission or file IDs are not exposed. Owner only.
| Name | Type | Req | Description |
|---|---|---|---|
| bountyId | string | yes | The unique ID of the bounty the submission belongs to |
| submissionId | string | yes | The unique ID of the evidence submission to retrieve |
No output schema declared.
No examples provided.
get_taste_run ~64
Get a taste run status and, once closed, its summary, vote tally, winner, representative quotes, and degraded flag. While it is still running, poll again later or subscribe to run.report_ready webhooks.
| Name | Type | Req | Description |
|---|---|---|---|
| runId | string | yes | Taste run ID |
No output schema declared.
No examples provided.
get_transfer ~67
Get details of a specific transfer by ID. Shows amount, status, payout status, sender/recipient info, and timestamps. You must be the sender or recipient. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| transferId | string | yes | a string at least 1 character(s) long |
No output schema declared.
No examples provided.
get_wallet_balance ~42
Check your wallet balance. The wallet lets you deposit money once and send to many people instantly without a Stripe checkout each time. Requires RENTAHUMAN_API_KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_wallet_controls ~57
Get your current wallet controls: low-balance alert threshold, spending caps (per-bounty and rolling 24h), and auto-topup settings. Cent amounts of null mean the control is disabled. Requires RENTAHUMAN_API_KEY.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_wallet_report ~89
Get a spending report for your wallet: totals (paid, in escrow, pending release, settled, refunded) plus per-bounty and per-worker breakdowns. Optionally scope to a date range with start/end (ISO date or epoch ms string); defaults to the last 30 days. Requires RENTAHUMAN_API_KEY.
| Name | Type | Req | Description |
|---|---|---|---|
| end | string | – | – |
| start | string | – | – |
No output schema declared.
No examples provided.
What is the RentAHuman MCP server?
RentAHuman is an MCP server listed in the public MCP registry as io.github.rentahuman-ai/rentahuman. Hire humans for digital microtasks, research, QA, data evaluation, and physical-world tasks. This page covers its npm package (rentahuman-mcp).
Is the RentAHuman MCP server safe to use?
RentAHuman scores 75 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the RentAHuman MCP server expose?
RentAHuman exposes 93 tools: get_agent_identity, search_humans, browse_taste_humans, get_human, block_human, and 88 more. Their descriptions and schemas cost roughly 19,017 tokens of context every time the server is loaded.
Is the RentAHuman MCP server still maintained?
RentAHuman is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the RentAHuman MCP server under?
RentAHuman declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.