skinbag.rent API JSON (/api-docs?raw=1)

MCP Tools Reference (skinbag.rent)

Full reference for MCP tools implemented in src/mcpServer.ts.

General rules

  • Transport: MCP server runs over stdio.
  • User context: all calls run in the context of MCP_DEFAULT_USER_EMAIL from .env.
  • Response format: JSON in text content (MCP type: "text").
  • Error format: tool returns isError: true + error text (validation, not found, business rules).
  • Privacy: compat human profiles do not include email.
  • Payment safety: agent_auto payouts are allowed only to verified wallets.

Tool groups

1) Discovery & Profiles

ToolPurposeRequired argsResponse keysNotes
get_agent_identityMCP agent metadata-id, name, capabilities, docs_urlQuick health/info check
search_humansSearch humans by filters-humans[]Filters: query, skill, min/max_hourly_rate_cents, available_only, pagination
get_humanHuman profile cardhuman_idhumanError: Human not found
list_skillsSkills directory-skills[]Supports query
get_reviewsReviews for a humanhuman_idreviews[]Supports limit, offset

2) Conversations

ToolPurposeRequired argsResponse keysNotes
start_conversationCreate a conversation + first messagehuman_id, messageconversation, messagesubject optional
send_messageSend a message in a conversationconversation_id, messagemessageError: closed/not found
get_conversationGet a conversation with historyconversation_idconversation, human, messages[]Error: Conversation not found
list_conversationsList a user's conversations-conversations[]Filters: status, pagination

3) Bounties

ToolPurposeRequired argsResponse keysNotes
create_bountyCreate a task (bounty)title, description, budget_centsbountycurrency, skill_slug optional
list_bountiesList bounties-bounties[]Filters: status, pagination
get_bountyGet a bountybounty_idbountyError: Bounty not found
get_bounty_applicationsList applications for a bountybounty_idapplications[]Filter: status
accept_applicationAccept one applicationbounty_id, application_idbounty, applicationOther applications are marked as rejected
update_bountyUpdate a bountybounty_idbountyCan change title, description, budget_cents, skill_slug, status
match_humans_for_bountyRank candidates for a bountybounty_idbounty, candidates[], generated_atScoring by skill/budget/rating/availability

4) Bookings

ToolPurposeRequired argsResponse keysNotes
book_humanCreate a booking for a periodhuman_id, starts_at, ends_atbookingInterval validity is checked
get_bookingGet a bookingbooking_idbookingError: Booking not found
update_bookingUpdate a bookingbooking_idbookingStatuses: requested/confirmed/cancelled/completed

5) Availability

ToolPurposeRequired argsResponse keysNotes
set_human_availability_windowCreate/update a weekly availability slothuman_id, day_of_week, start_time, end_timewindow, windows[]Time format: HH:MM (24h), timezone can be overridden

6) Crypto Payments

ToolPurposeRequired argsResponse keysNotes
list_payment_networksNetwork/status catalog-chains, networks, payout_statusesUse before payout validation
estimate_payout_feesPreliminary fee/net estimatechain, network, token_symbol, amount_centsestimateReturns network/platform fee and net to recipient
create_payout_webhook_subscriptionCreate webhook subscription for payout lifecycleendpoint_urlsubscriptionEvents can be filtered (events), * = all payout events
list_payout_webhook_deliveriesWebhook delivery logs-deliveries[]Filters: subscription_id, payout_id, delivery_status
register_human_walletAdd/update a human wallethuman_id, chain, network, token_symbol, addresswalletAddress validation by chain
list_human_walletsList a human's walletshuman_idwallets[]Sorting: default first
get_payment_policyCurrent payout policy-policyPolicy is tied to current user context
update_payment_policyUpdate payout policy-policyLimits + chain/token allowlist
create_crypto_payoutCreate a payout intentsource_type, chain, network, token_symbol, execution_modepayoutFor manual: need human_id,amount_cents; for bounty/booking: source_id
list_crypto_payoutsList payouts-payouts[]Filters: status, source_type, pagination
get_crypto_payoutPayout detailspayout_idpayoutError: Payout not found
approve_crypto_payoutManually approve a pending payoutpayout_idpayoutOnly from pending
execute_crypto_payoutExecute payout by agentpayout_id, agent_idpayoutAllowed only for execution_mode=agent_auto
fail_crypto_payoutFail a payout with a reasonpayout_id, reasonpayoutRecords an audit event
get_payout_eventsAudit payout eventspayout_idevents[]Status and actor sequence
create_booking_milestoneCreate a milestone for booking/bountysource_type, source_id, title, amount_centsmilestoneMilestone amount is limited by source budget/price
list_booking_milestonesList milestones-milestones[]Filters: source_type, source_id, status, pagination
complete_booking_milestoneComplete a milestone (+ optional payout)milestone_idmilestone, payout?With auto_create_payout=true you can create a payout immediately
create_wallet_verification_challengeCreate a challenge to verify wallet ownershiphuman_idchallengeSupports selection by wallet_id/chain/network/token_symbol/address
verify_wallet_signatureVerify a challenge and mark wallet as verifiedhuman_id, challenge_id, signatureverification, latest_verified_challenges[]Demo flow: deterministic signature format
create_escrow_holdCreate an escrow hold for booking/bounty/manualsource_type, chain, network, token_symbolescrowFor manual: need human_id,amount_cents; for bounty/booking: source_id
release_escrow_holdRelease escrow into the payout pipelineescrow_id, execution_modeescrow, payout, escrowEvents[]For agent_auto, requested_by_agent_id is required
open_disputeOpen a dispute for booking/payout/escrow/bountytarget_type, target_id, reasondisputeDispute is tied to the user context of the target owner
resolve_disputeResolve a dispute with reviewer decisiondispute_id, reviewer_user_id, decisiondispute, events[]Final decision is made by a human

7) MCP Tool Factory (Human Review Gate)

ToolPurposeRequired argsResponse keysNotes
request_mcp_tool_creationRequest a new MCP toolrequested_by_agent_id, tool_name, tool_description, reason, input_schemarequest, prDraft?, humanReviewRequiredAll requests require human review
list_mcp_tool_creation_requestsList requests for new tools-requests[], noteFilter by status, pagination
get_mcp_tool_creation_requestDetails for one requestrequest_idrequest, prDraft?Error: ...not found

Typical workflows

A) Find a human and book

  1. search_humans
  2. get_human
  3. start_conversation (optional)
  4. book_human
  5. get_booking / update_booking

B) Bounty-to-Payout

  1. create_bounty
  2. get_bounty_applications
  3. accept_application
  4. create_crypto_payout
  5. approve_crypto_payout (if policy requires)
  6. execute_crypto_payout
  7. get_payout_events

C) Request a new MCP tool

  1. request_mcp_tool_creation
  2. list_mcp_tool_creation_requests
  3. get_mcp_tool_creation_request
  4. Then human review outside of the MCP tool call

D) Wallet verification + escrow + dispute

  1. create_wallet_verification_challenge
  2. Sign the challenge on the wallet side (demo deterministic flow)
  3. verify_wallet_signature
  4. create_escrow_hold
  5. release_escrow_hold
  6. If disputed: open_dispute -> resolve_dispute

E) Fee estimation + webhook audit

  1. estimate_payout_fees
  2. create_payout_webhook_subscription
  3. Execute the payout flow (create_crypto_payout, approve, execute)
  4. list_payout_webhook_deliveries

F) Availability-driven bounty matching

  1. set_human_availability_window
  2. match_humans_for_bounty

G) Milestone-driven partial payouts

  1. create_booking_milestone
  2. list_booking_milestones
  3. complete_booking_milestone (optional payout)

Statuses (quick reference)

  • Bounty: open, in_review, in_progress, completed, cancelled
  • Booking: requested, confirmed, cancelled, completed
  • Payout: pending, approved, submitted, confirmed, failed, cancelled
  • Wallet challenge: pending, verified, expired, rejected
  • Escrow: held, released, cancelled, expired
  • Dispute: open, under_review, resolved, rejected
  • MCP Tool Request: pending_human_review, approved, rejected, implemented

Current limitations

  • Single-tenant MCP context: one user context from MCP_DEFAULT_USER_EMAIL.
  • execute_crypto_payout uses a simulated tx hash by default (dev/demo).
  • Wallet ownership verification is currently a demo deterministic signature flow.
  • Dispute resolution does not automatically perform on-chain arbitration/reversal.
  • Webhook deliveries are currently in a simulated outbox model (no external HTTP call).