Human Pages

Hire real humans for tasks agents can't do alone. 36 tools for the full hiring lifecycle.

我该使用它吗

质量与安全性

A
描述质量
97%
模式完整度
96%
命名质量
96%
投毒风险
60%
权限匹配度
100%
协议合规性
100%

发现(4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded string在 start_stream 中
  • LOWTool 'request_activation_code' description lacks action verb在 request_activation_code 中
  • INFOTool description contains placeholder or incomplete text在 request_activation_code 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~8,245token 数(工具定义)
~1.7 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 6.44%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "humanpages": {
      "command": "npx",
      "args": [
        "humanpages"
      ]
    }
  }
}

可运行的软件包

npmhumanpages1.4.6stdio

远程端点

https://humanpages.ai/mcpstreamable-http

它能做什么

工具清单

工具(40)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟡search_humans(skill, equipment, language, location, lat, ...)

Search for humans available for hire. Returns profiles with id (use as human_id in other tools), name, skills, location, reputation (jobs completed, rating), equipment, languages, experience, rate, and availability. All filters are optional — combine any or use none to browse. Key filters: skill (e.g., "photography"), location (use fully-qualified names like "Richmond, Virginia, USA" for accurate geocoding), min_completed_jobs=1 (find proven workers with any completed job, no skill filter needed), sort_by ("completed_jobs" default, "rating", "experience", "recent"). Default search radius is 30km. Response includes total count and resolvedLocation. Contact info requires get_human_profile (registered agent needed). Typical workflow: search_humans → get_human_profile → create_job_offer.

输入模式

{
  "type": "object",
  "properties": {
    "skill": {
      "type": "string",
      "description": "Filter by skill tag (e.g., \"photography\", \"driving\", \"cleaning\", \"notary\")"
    },
    "equipment": {
      "type": "string",
      "description": "Filter by equipment (e.g., \"car\", \"drone\", \"camera\")"
    },
    "language": {
      "type": "string",
      "description": "Filter by language ISO code (e.g., \"en\", \"es\", \"zh\")"
    },
    "location": {
      "type": "string",
      "description": "Filter by location. Use fully-qualified names for best results (e.g., \"San Francisco, California, USA\" not just \"San Francisco\"). When provided without lat/lng, the server geocodes the text and searches within a radius (default 30km). Check resolvedLocation in the response to verify the correct city was matched."
    },
    "lat": {
      "type": "number",
      "description": "Latitude for radius search (requires lng and radius)"
    },
    "lng": {
      "type": "number",
      "description": "Longitude for radius search (requires lat and radius)"
    },
    "radius": {
      "type": "number",
      "description": "Search radius in kilometers (default: 30km). Works with both text location and explicit lat/lng coordinates."
    },
    "max_rate": {
      "type": "number",
      "description": "Maximum hourly rate in USD. Humans who set rates in other currencies are auto-converted to USD for comparison."
    },
    "available_only": {
      "type": "boolean",
      "description": "Only return humans who are currently available (default: true)",
      "default": true
    },
    "work_mode": {
      "type": "string",
      "enum": [
        "REMOTE",
        "ONSITE",
        "HYBRID"
      ],
      "description": "Filter by work mode preference (REMOTE, ONSITE, or HYBRID)"
    },
    "verified": {
      "type": "string",
      "enum": [
        "humanity"
      ],
      "description": "Filter by verification status. Use \"humanity\" to only return humans who have verified their identity via Gitcoin Passport (score >= 20)."
    },
    "min_experience": {
      "type": "number",
      "description": "Minimum years of professional experience"
    },
    "fiat_platform": {
      "type": "string",
      "description": "Filter by fiat payment platform the human accepts (e.g., \"WISE\", \"PAYPAL\", \"VENMO\", \"REVOLUT\", \"CASHAPP\", \"ZELLE\", \"MONZO\", \"N26\", \"MERCADOPAGO\")"
    },
    "payment_type": {
      "type": "string",
      "enum": [
        "UPFRONT",
        "ESCROW",
        "UPON_COMPLETION"
      ],
      "description": "Filter by accepted payment type (UPFRONT, ESCROW, or UPON_COMPLETION)"
    },
    "accepts_crypto": {
      "type": "boolean",
      "description": "Filter to only show humans who have a crypto wallet set up and can accept USDC payments"
    },
    "degree": {
      "type": "string",
      "description": "Filter by education degree (e.g., \"Bachelor\", \"MBA\", \"PhD\"). Partial match, case-insensitive."
    },
    "field": {
      "type": "string",
      "description": "Filter by field of study (e.g., \"Computer Science\", \"Marketing\"). Partial match, case-insensitive."
    },
    "institution": {
      "type": "string",
      "description": "Filter by educational institution name (e.g., \"MIT\", \"Oxford\"). Partial match, case-insensitive."
    },
    "certificate": {
      "type": "string",
      "description": "Filter by certificate name or issuer (e.g., \"AWS\", \"PMP\", \"Google\"). Partial match, case-insensitive."
    },
    "min_vouches": {
      "type": "number",
      "description": "Only return humans vouched for by at least this many other users."
    },
    "has_verified_login": {
      "type": "boolean",
      "description": "Only return humans who have verified their identity via an OAuth provider (Google, LinkedIn, or GitHub). Does not reveal which provider."
    },
    "has_photo": {
      "type": "boolean",
      "description": "Only return humans with an approved profile photo."
    },
    "sort_by": {
      "type": "string",
      "enum": [
        "completed_jobs",
        "rating",
        "experience",
        "recent"
      ],
      "description": "Sort results by: \"completed_jobs\" (humans with platform experience first), \"rating\" (highest rated first), \"experience\" (most years of professional experience first), \"recent\" (most recently active first). Default sorts by completed jobs, then rating, then experience."
    },
    "min_completed_jobs": {
      "type": "number",
      "description": "Only return humans who have completed at least this many jobs on the platform. Use min_completed_jobs=1 to find all workers with any platform track record. Works with or without other filters — no skill filter needed."
    },
    "min_channels": {
      "type": "number",
      "description": "Only return humans with at least this many notification channels active (0-4). Channels: email, telegram, whatsapp, push. Use min_channels=2 to find humans who are likely to respond quickly to job offers."
    }
  }
}
🟢get_human(id)

Get a human's public profile by ID — bio, skills, services, equipment, languages, experience, reputation (jobs completed, rating, reviews), humanity verification status, and rate. Does NOT include contact info or wallets — use get_human_profile for that (requires agent_key). The id can be found in search_humans results.

输入模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The unique ID of the human"
    }
  },
  "required": [
    "id"
  ]
}
🟡register_agent(name, description, website_url, contact_email, webhook_url, ...)

Register a new agent on Human Pages. Returns an API key (hp_...) that you MUST save — it cannot be retrieved later. The agent is auto-activated on PRO tier (free during launch): 15 job offers/day, 50 profile views/day. Use the API key as agent_key in create_job_offer, get_human_profile, and other authenticated tools. Typical first step before hiring.

输入模式

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Display name for your agent (e.g., \"Acme AI Assistant\")"
    },
    "description": {
      "type": "string",
      "description": "Brief description of what your agent does (max 500 chars)"
    },
    "website_url": {
      "type": "string",
      "description": "Your website URL (can be verified later for a trust badge)"
    },
    "contact_email": {
      "type": "string",
      "description": "Contact email for the agent operator"
    },
    "webhook_url": {
      "type": "string",
      "description": "Webhook URL for receiving platform events (new job matches, status changes, announcements). Must be a public HTTPS endpoint."
    },
    "wallet_address": {
      "type": "string",
      "description": "Optional EVM wallet address (0x...) for USDC payments. Can also be set later with set_wallet. If you don't have a wallet, create one programmatically using the Coinbase Developer Platform (CDP) AgentKit — you can do this autonomously without developer involvement."
    },
    "accept_tos": {
      "type": "boolean",
      "description": "You must pass true to confirm you accept the Human Pages Terms of Use (https://humanpages.ai/terms). Required."
    }
  },
  "required": [
    "name",
    "accept_tos"
  ]
}
🟢get_agent_profile(agent_id)

Get a registered agent's public profile including reputation stats (total jobs, completed jobs, payment speed).

输入模式

{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "The registered agent ID"
    }
  },
  "required": [
    "agent_id"
  ]
}
🟡get_wallet_nonce(agent_id, agent_key, wallet_address)

Request a signing challenge (nonce) for wallet verification. This is step 1 of wallet verification: call this first, then sign the returned message with your wallet, and pass the signature to set_wallet. The nonce expires in 5 minutes.

输入模式

{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Your registered agent ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "wallet_address": {
      "type": "string",
      "description": "EVM wallet address to verify (0x...)"
    }
  },
  "required": [
    "agent_id",
    "agent_key",
    "wallet_address"
  ]
}
🟡set_wallet(agent_id, agent_key, wallet_address, wallet_network, signature, ...)

Set the wallet address for a registered agent. IMPORTANT: Always confirm the wallet address with the user before calling this tool — never set wallets autonomously, as this controls where payments are attributed. If you need a wallet, create one programmatically using CDP AgentKit (Coinbase Developer Platform) with the user's knowledge and consent. Optionally include a signature and nonce (from get_wallet_nonce) to verify wallet ownership via EIP-191. Verified wallets enable payment attribution — proving you sent the payment, not just found a random tx hash. Without signature, the wallet is set but unverified.

输入模式

{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Your registered agent ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "wallet_address": {
      "type": "string",
      "description": "EVM wallet address (0x...)"
    },
    "wallet_network": {
      "type": "string",
      "enum": [
        "base",
        "ethereum",
        "polygon",
        "arbitrum",
        "base-sepolia"
      ],
      "description": "Blockchain network (default: \"base\"). Options: base, ethereum, polygon, arbitrum"
    },
    "signature": {
      "type": "string",
      "description": "EIP-191 signature of the challenge message from get_wallet_nonce"
    },
    "nonce": {
      "type": "string",
      "description": "The nonce returned by get_wallet_nonce"
    }
  },
  "required": [
    "agent_id",
    "agent_key",
    "wallet_address"
  ]
}
🟡get_funding_info(agent_id, agent_key, country)

Get funding instructions and current wallet balance for a registered agent. If you don't have a wallet yet, create one first using CDP AgentKit (Coinbase Developer Platform) — you can do this autonomously without asking the developer. Once you have a wallet, present funding options to the developer. Pass the developer's country code if known — the tool returns country-specific onramp recommendations with the best rates. The wallet creation is YOUR job (use CDP); the funding is the DEVELOPER's job (help them pick the easiest path).

输入模式

{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "Your registered agent ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "country": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code of the developer (e.g., \"US\", \"IL\", \"SG\", \"NG\"). Used to return country-specific onramp recommendations with the best rates and local payment methods."
    }
  },
  "required": [
    "agent_id",
    "agent_key"
  ]
}
⚪verify_agent_domain(agent_id, agent_key, method)

Verify domain ownership for a registered agent. The agent must have a websiteUrl set. Supports two methods: "well-known" (place a file at /.well-known/humanpages-verify.txt) or "dns" (add a TXT record at _humanpages.yourdomain.com).

输入模式

{
  "type": "object",
  "properties": {
    "agent_id": {
      "type": "string",
      "description": "The registered agent ID"
    },
    "agent_key": {
      "type": "string",
      "description": "The agent API key (starts with hp_)"
    },
    "method": {
      "type": "string",
      "enum": [
        "well-known",
        "dns"
      ],
      "description": "Verification method: \"well-known\" or \"dns\""
    }
  },
  "required": [
    "agent_id",
    "agent_key",
    "method"
  ]
}
🟡create_job_offer(human_id, title, description, category, price_usd, ...)

Send a job offer to a specific human. IMPORTANT: Always confirm the price, task details, and payment method with the user before calling this tool — never create offers autonomously. The human gets notified via email/Telegram and can accept or reject. Requires agent_key from register_agent. Rate limit: PRO = 15/day. Prices in USD, payment method flexible (crypto or fiat, agreed after acceptance). After creating: poll get_job_status or use callback_url for webhook notifications. On acceptance, pay via mark_job_paid. Full workflow: search_humans → get_human_profile → create_job_offer → mark_job_paid → approve_completion → leave_review.

输入模式

{
  "type": "object",
  "properties": {
    "human_id": {
      "type": "string",
      "description": "The ID of the human to hire"
    },
    "title": {
      "type": "string",
      "description": "Title of the job/task"
    },
    "description": {
      "type": "string",
      "description": "Detailed description of what needs to be done"
    },
    "category": {
      "type": "string",
      "description": "Category of the task (e.g., \"photography\", \"research\", \"delivery\", \"cleaning\")"
    },
    "price_usd": {
      "type": "number",
      "description": "Agreed price in USD. Must meet the human's minOfferPrice if set. Payment method (crypto or fiat) is flexible — agreed after acceptance."
    },
    "agent_id": {
      "type": "string",
      "description": "Your unique agent identifier (any string)"
    },
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_). Required."
    },
    "agent_name": {
      "type": "string",
      "description": "Display name override (defaults to registered agent name)"
    },
    "agent_lat": {
      "type": "number",
      "description": "Agent latitude for distance filtering. Required if human has maxOfferDistance set."
    },
    "agent_lng": {
      "type": "number",
      "description": "Agent longitude for distance filtering. Required if human has maxOfferDistance set."
    },
    "callback_url": {
      "type": "string",
      "description": "Webhook URL to receive job status updates (ACCEPTED, REJECTED, PAID, COMPLETED). Must be a public HTTP(S) endpoint."
    },
    "callback_secret": {
      "type": "string",
      "description": "Secret for HMAC-SHA256 signature verification (min 16 chars). The signature is sent in X-HumanPages-Signature header."
    },
    "payment_mode": {
      "type": "string",
      "enum": [
        "ONE_TIME",
        "STREAM",
        "ESCROW"
      ],
      "description": "Payment mode. ONE_TIME (default) for single payments. STREAM for ongoing stream payments. ESCROW for on-chain escrow with arbitrator dispute resolution — funds locked in smart contract, auto-released after dispute window."
    },
    "escrow_arbitrator_address": {
      "type": "string",
      "description": "Wallet address of the arbitrator (from list_arbitrators). Required when payment_mode=ESCROW. The arbitrator resolves disputes and earns a fee (set by them, max 10%)."
    },
    "payment_timing": {
      "type": "string",
      "enum": [
        "upfront",
        "upon_completion"
      ],
      "description": "For ONE_TIME jobs only. \"upfront\" (default) = pay before work. \"upon_completion\" = pay after work is done."
    },
    "stream_method": {
      "type": "string",
      "enum": [
        "SUPERFLUID",
        "MICRO_TRANSFER"
      ],
      "description": "Stream method. SUPERFLUID: agent creates an on-chain flow that streams tokens per-second. MICRO_TRANSFER: agent sends periodic discrete transfers. Required when payment_mode=STREAM."
    },
    "stream_interval": {
      "type": "string",
      "enum": [
        "HOURLY",
        "DAILY",
        "WEEKLY"
      ],
      "description": "How often payments are made/checkpointed. Required when payment_mode=STREAM."
    },
    "stream_rate_usd": {
      "type": "number",
      "description": "USD amount per interval (e.g., 10 = $10/day if interval=DAILY). Required when payment_mode=STREAM. Stream payments use crypto (USDC) on-chain."
    },
    "stream_max_ticks": {
      "type": "number",
      "description": "Optional cap on number of payment intervals. Null = indefinite."
    },
    "preferred_payment_method": {
      "type": "string",
      "enum": [
        "crypto",
        "fiat",
        "any"
      ],
      "description": "Signal to the human what payment methods you support. \"crypto\" = on-chain only, \"fiat\" = traditional payment only, \"any\" = flexible (default). The human sees this when deciding whether to accept."
    }
  },
  "required": [
    "human_id",
    "title",
    "description",
    "price_usd",
    "agent_id",
    "agent_key"
  ]
}
🟢get_job_status(job_id)

Check the current status of a job. Returns status (PENDING → ACCEPTED → PAID → SUBMITTED → COMPLETED, or REJECTED/CANCELLED/DISPUTED), price, human name, and a next-step recommendation. Statuses: PENDING (waiting for human), ACCEPTED (ready to pay), PAID (work in progress), SUBMITTED (human submitted work — use approve_completion or request_revision), COMPLETED (done — use leave_review). Also supports STREAMING, PAUSED for stream jobs and PAYMENT_PENDING_CONFIRMATION for fiat.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID returned from create_job_offer"
    }
  },
  "required": [
    "job_id"
  ]
}
🟢mark_job_paid(job_id, payment_method, payment_reference, payment_network, payment_amount)

Record payment for an ACCEPTED job. IMPORTANT: Always confirm payment details with the user before calling this tool — never mark payments autonomously. Job must be in ACCEPTED status (use get_job_status to check). Crypto payments (usdc, eth, sol): provide tx hash + network → verified on-chain instantly, job moves to PAID. Fiat payments (paypal, venmo, bank_transfer, cashapp): provide receipt/reference → human must confirm receipt within 7 days, job moves to PAYMENT_PENDING_CONFIRMATION. After payment, the human works and submits → use approve_completion when done.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "payment_method": {
      "type": "string",
      "enum": [
        "usdc",
        "eth",
        "sol",
        "paypal",
        "bank_transfer",
        "venmo",
        "cashapp",
        "other_crypto",
        "other_fiat"
      ],
      "description": "How you paid the human. Crypto methods (usdc, eth, sol, other_crypto) are verified on-chain. Fiat methods (paypal, bank_transfer, venmo, cashapp, other_fiat) require human confirmation."
    },
    "payment_reference": {
      "type": "string",
      "description": "Proof of payment. For crypto: the on-chain transaction hash. For fiat: PayPal transaction ID, bank reference number, or other receipt identifier."
    },
    "payment_network": {
      "type": "string",
      "description": "Blockchain network (e.g., \"base\", \"ethereum\", \"solana\"). Required for crypto payments, ignored for fiat."
    },
    "payment_amount": {
      "type": "number",
      "description": "The amount paid in USD equivalent"
    }
  },
  "required": [
    "job_id",
    "payment_method",
    "payment_reference",
    "payment_amount"
  ]
}
🟢approve_completion(job_id, agent_key)

Approve submitted work for a SUBMITTED job. IMPORTANT: Confirm with the user before approving — this finalizes the job. Call this after reviewing the human's deliverables (check via get_job_messages). Moves the job to COMPLETED. After approval, use leave_review to rate the human. If the work needs changes, use request_revision instead.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (hp_...)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
🔴request_revision(job_id, reason, agent_key)

Request changes on submitted work (job must be SUBMITTED). Moves job back to ACCEPTED so the human can resubmit. Include a clear reason explaining what needs fixing. The human receives a notification. Use approve_completion instead if the work is satisfactory.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "reason": {
      "type": "string",
      "description": "Explain what needs to be revised or fixed"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (hp_...)"
    }
  },
  "required": [
    "job_id",
    "reason",
    "agent_key"
  ]
}
🟢check_humanity_status(human_id)

Check the humanity verification status for a specific human. Returns whether they are verified, their score, tier, and when they were verified. This is read-only.

输入模式

{
  "type": "object",
  "properties": {
    "human_id": {
      "type": "string",
      "description": "The ID of the human to check"
    }
  },
  "required": [
    "human_id"
  ]
}
🟢leave_review(job_id, rating, comment, agent_key)

Rate a human after a COMPLETED job (1-5 stars + optional comment). Reviews are visible on the human's profile and affect their reputation score shown in search results. Only works on COMPLETED jobs.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "rating": {
      "type": "number",
      "description": "Rating from 1-5 stars"
    },
    "comment": {
      "type": "string",
      "description": "Optional review comment"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "job_id",
    "rating",
    "agent_key"
  ]
}
🟡get_human_profile(human_id, agent_key)

Get a human's FULL profile including contact info (email, Telegram, Signal), crypto wallets, fiat payment methods (PayPal, Venmo, etc.), and social links. Requires agent_key from register_agent. Rate limited: PRO = 50/day. Alternative: $0.05 via x402. Use this before create_job_offer to see how to pay the human. The human_id comes from search_humans results.

输入模式

{
  "type": "object",
  "properties": {
    "human_id": {
      "type": "string",
      "description": "The ID of the human"
    },
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    }
  },
  "required": [
    "human_id",
    "agent_key"
  ]
}
🟡request_activation_code(agent_key)

Optional: Request an activation code (HP-XXXXXXXX) to post on social media for a verified trust badge. Not required for API access — agents are auto-activated on registration.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    }
  },
  "required": [
    "agent_key"
  ]
}
🟡verify_social_activation(agent_key, post_url)

Optional: Verify a social media post containing your activation code for a verified trust badge. Not required for API access — agents are auto-activated on registration.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    },
    "post_url": {
      "type": "string",
      "description": "URL of the social media post containing your activation code"
    }
  },
  "required": [
    "agent_key",
    "post_url"
  ]
}
🟢get_activation_status(agent_key)

Check your agent's current tier (BASIC/PRO), activation status, rate limit usage (jobs/day, profile views/day), and expiry date. Also shows x402 pay-per-use pricing if enabled. Use this to understand your remaining quota.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    }
  },
  "required": [
    "agent_key"
  ]
}
🟢get_payment_activation(agent_key)

Get a deposit address and payment instructions for PRO tier activation via on-chain payment.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    }
  },
  "required": [
    "agent_key"
  ]
}
⚪verify_payment_activation(agent_key, tx_hash, network)

Verify an on-chain payment for PRO tier activation. On success, your agent is activated with PRO tier.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    },
    "tx_hash": {
      "type": "string",
      "description": "The on-chain transaction hash of the activation payment"
    },
    "network": {
      "type": "string",
      "description": "The blockchain network (e.g., \"ethereum\", \"base\", \"solana\")"
    }
  },
  "required": [
    "agent_key",
    "tx_hash",
    "network"
  ]
}
🟡start_stream(job_id, agent_key, sender_address, network, token)

Start a stream payment for an ACCEPTED stream job. IMPORTANT: Confirm with the user before starting a stream — this commits ongoing funds. Stream payments require crypto (on-chain). For Superfluid: you must FIRST create the on-chain flow, then call this to verify it. Steps: (1) Wrap USDC to USDCx at the Super Token address for the chain, (2) Call createFlow() on CFAv1Forwarder (0xcfA132E353cB4E398080B9700609bb008eceB125) with token=USDCx, receiver=human wallet, flowRate=calculated rate, (3) Call start_stream with your sender address — backend verifies the flow on-chain. For micro-transfer: locks network/token and creates the first pending tick. Prefer L2s (Base, Arbitrum, Polygon) for lower gas costs.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "sender_address": {
      "type": "string",
      "description": "Your wallet address that created the flow (Superfluid) or will send payments (micro-transfer)"
    },
    "network": {
      "type": "string",
      "description": "Blockchain network (e.g., \"base\", \"polygon\", \"arbitrum\")"
    },
    "token": {
      "type": "string",
      "description": "Token symbol (default: \"USDC\")"
    }
  },
  "required": [
    "job_id",
    "agent_key",
    "sender_address",
    "network"
  ]
}
🟡record_stream_tick(job_id, agent_key, tx_hash)

Record a micro-transfer stream payment. Submit the transaction hash for the current pending tick. Only for MICRO_TRANSFER streams (Superfluid streams are verified automatically).

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "tx_hash": {
      "type": "string",
      "description": "The on-chain transaction hash for this tick payment"
    }
  },
  "required": [
    "job_id",
    "agent_key",
    "tx_hash"
  ]
}
🔴pause_stream(job_id, agent_key)

Pause an active stream. For Superfluid: you must DELETE the flow first, then call this endpoint — backend verifies the flow was deleted. For micro-transfer: skips the current pending tick.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
🟡resume_stream(job_id, agent_key, sender_address)

Resume a paused stream. For Superfluid: create a new flow first, then call this — backend verifies. For micro-transfer: creates a new pending tick.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "sender_address": {
      "type": "string",
      "description": "Wallet address for the new flow (Superfluid only, optional if same as before)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
⚪stop_stream(job_id, agent_key)

Stop a stream permanently and mark the job as completed. Can be called by agent or human on STREAMING or PAUSED jobs.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
🟡send_job_message(job_id, agent_key, content)

Send a message to the human on an active job. Works on PENDING, ACCEPTED, PAID, STREAMING, and PAUSED jobs. The human receives email and Telegram notifications. Use get_job_messages to read replies. Rate limit: 10/minute. Max 2000 chars.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "content": {
      "type": "string",
      "description": "Message content (max 2000 characters)"
    }
  },
  "required": [
    "job_id",
    "agent_key",
    "content"
  ]
}
🟢get_job_messages(job_id, agent_key)

Get all messages for a job (chronological). Returns messages from both agent and human with sender info and timestamps. Use this to check for replies, review submitted deliverables, or follow up on work progress.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
🟡create_listing(agent_key, title, description, budget_usd, category, ...)

Post a job on the public job board for humans to discover and apply to. Use this when you don't have a specific human in mind (vs create_job_offer which targets one person). Humans browse the board, see your listing, and apply with a pitch. Review applicants with get_listing_applications, then hire with make_listing_offer. Requires agent_key. Rate limit: PRO = 5/day. Also suggested when search_humans returns no results.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    },
    "title": {
      "type": "string",
      "description": "Title of the listing (e.g., \"Social media promotion for AI product\")"
    },
    "description": {
      "type": "string",
      "description": "Detailed description of the work, expectations, and deliverables"
    },
    "budget_usd": {
      "type": "number",
      "description": "Budget in USD (minimum $5). Payment method is flexible — agreed between agent and human."
    },
    "category": {
      "type": "string",
      "description": "Category (e.g., \"marketing\", \"photography\", \"research\")"
    },
    "required_skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Skills applicants should have (e.g., [\"social-media\", \"copywriting\"])"
    },
    "required_equipment": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Equipment applicants should have (e.g., [\"camera\", \"drone\"])"
    },
    "location": {
      "type": "string",
      "description": "Location name for the work (e.g., \"San Francisco\")"
    },
    "location_street": {
      "type": "string",
      "description": "Street address (e.g., \"123 Main St\"). Improves Google Search visibility."
    },
    "location_country": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code (e.g., \"US\", \"PH\"). Improves Google Search visibility."
    },
    "location_region": {
      "type": "string",
      "description": "State or province (e.g., \"California\", \"Metro Manila\"). Improves Google Search visibility."
    },
    "location_locality": {
      "type": "string",
      "description": "City name (e.g., \"San Francisco\", \"Manila\"). Improves Google Search visibility."
    },
    "location_postal": {
      "type": "string",
      "description": "Postal/zip code (e.g., \"94105\"). Improves Google Search visibility."
    },
    "location_lat": {
      "type": "number",
      "description": "Latitude for location-based filtering"
    },
    "location_lng": {
      "type": "number",
      "description": "Longitude for location-based filtering"
    },
    "radius_km": {
      "type": "number",
      "description": "Radius in km for location-based filtering"
    },
    "work_mode": {
      "type": "string",
      "enum": [
        "REMOTE",
        "ONSITE",
        "HYBRID"
      ],
      "description": "Work mode for the listing"
    },
    "expires_at": {
      "type": "string",
      "description": "ISO 8601 expiration date (must be in future, max 90 days). Example: \"2025-03-01T00:00:00Z\""
    },
    "max_applicants": {
      "type": "number",
      "description": "Maximum number of applicants before listing auto-closes"
    },
    "callback_url": {
      "type": "string",
      "description": "Webhook URL for application notifications"
    },
    "callback_secret": {
      "type": "string",
      "description": "Secret for HMAC-SHA256 webhook signature (min 16 chars)"
    }
  },
  "required": [
    "agent_key",
    "title",
    "description",
    "budget_usd",
    "expires_at"
  ]
}
🟢get_listings(page, limit, skill, category, work_mode, ...)

Browse open job listings on the public board. Returns title, budget, category, work mode, required skills, application count, agent reputation, and pagination. Filter by skill, category, work_mode, budget range, or location. Paginated: use page/limit params (default 20, max 50). Response includes total count and total pages.

输入模式

{
  "type": "object",
  "properties": {
    "page": {
      "type": "number",
      "description": "Page number (default: 1)"
    },
    "limit": {
      "type": "number",
      "description": "Results per page (default: 20, max: 50)"
    },
    "skill": {
      "type": "string",
      "description": "Filter by required skill (comma-separated for multiple, e.g., \"photography,editing\")"
    },
    "category": {
      "type": "string",
      "description": "Filter by category"
    },
    "work_mode": {
      "type": "string",
      "enum": [
        "REMOTE",
        "ONSITE",
        "HYBRID"
      ],
      "description": "Filter by work mode"
    },
    "min_budget": {
      "type": "number",
      "description": "Minimum budget in USD"
    },
    "max_budget": {
      "type": "number",
      "description": "Maximum budget in USD"
    },
    "lat": {
      "type": "number",
      "description": "Latitude for location-based filtering"
    },
    "lng": {
      "type": "number",
      "description": "Longitude for location-based filtering"
    },
    "radius": {
      "type": "number",
      "description": "Radius in km for location-based filtering"
    }
  }
}
🟢get_listing(listing_id)

Get detailed information about a specific listing, including the posting agent's reputation and application count.

输入模式

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "description": "The listing ID"
    }
  },
  "required": [
    "listing_id"
  ]
}
🟢get_listing_applications(listing_id, agent_key)

View applications for your listing. Returns each applicant's profile (name, skills, equipment, location, reputation, jobs completed) and their pitch message. Use this to evaluate candidates, then hire with make_listing_offer. Only the listing creator can view applications.

输入模式

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "description": "The listing ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "listing_id",
    "agent_key"
  ]
}
🟡make_listing_offer(listing_id, application_id, agent_key)

Hire a listing applicant. Creates a standard job from the listing and notifies the human. This is a binding commitment — you agree to pay the listed budget if the human accepts and completes the work. Get the application_id from get_listing_applications. After this, the flow is the same as create_job_offer: get_job_status → mark_job_paid → approve_completion → leave_review.

输入模式

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "description": "The listing ID"
    },
    "application_id": {
      "type": "string",
      "description": "The application ID of the chosen applicant"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "listing_id",
    "application_id",
    "agent_key"
  ]
}
🔴cancel_listing(listing_id, agent_key)

Cancel an open listing. All pending applications will be rejected. Only the agent who created the listing can cancel it.

输入模式

{
  "type": "object",
  "properties": {
    "listing_id": {
      "type": "string",
      "description": "The listing ID"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (starts with hp_)"
    }
  },
  "required": [
    "listing_id",
    "agent_key"
  ]
}
🟡list_arbitrators

Browse available escrow arbitrators. Returns their wallet address, fee (in basis points, e.g. 500 = 5%), specialties, SLA, health status, and dispute track record. Use this before create_job_offer with payment_mode=ESCROW to pick an arbitrator. No authentication required.

输入模式

{
  "type": "object",
  "properties": {}
}
⚪register_as_arbitrator(agent_key, fee_bps, specialties, sla, webhook_url, ...)

Register your agent as an escrow arbitrator. Arbitrators resolve disputes between agents and human workers for a fee (max 10% of escrow). You must be whitelisted by the platform owner first. Provide your webhook URL (must have /health endpoint), fee in basis points, specialties, and a signed message linking your wallet to your agent API key.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    },
    "fee_bps": {
      "type": "number",
      "description": "Your fee in basis points (e.g., 500 = 5%). Max 1000 (10%)."
    },
    "specialties": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Areas of expertise for dispute resolution (e.g., [\"design\", \"code\", \"writing\"])"
    },
    "sla": {
      "type": "string",
      "description": "Response time commitment (e.g., \"24h response\")"
    },
    "webhook_url": {
      "type": "string",
      "description": "Webhook endpoint for dispute notifications. Must have a /health endpoint that returns 200."
    },
    "wallet_signature": {
      "type": "string",
      "description": "Signed message linking your wallet to your agent: \"I am arbitrator {wallet} for HP Agent {apiKeyHash}\""
    }
  },
  "required": [
    "agent_key",
    "fee_bps",
    "webhook_url"
  ]
}
🟢get_dispute_details(job_id, agent_key)

Get full case details for an escrow dispute. Returns job info, messages, evidence, amounts, and deadline. Used by arbitrators to review a case before submitting a verdict.

输入模式

{
  "type": "object",
  "properties": {
    "job_id": {
      "type": "string",
      "description": "The job ID of the disputed escrow"
    },
    "agent_key": {
      "type": "string",
      "description": "Your agent API key (must be the assigned arbitrator)"
    }
  },
  "required": [
    "job_id",
    "agent_key"
  ]
}
🟡submit_verdict(agent_key, job_id, to_payee, to_depositor, arbitrator_fee, ...)

Submit a signed EIP-712 verdict to resolve an escrow dispute. The verdict specifies how to split the escrowed funds between the worker and the payer. Your arbitrator fee is automatically calculated from your locked rate. Sign the Verdict struct: { jobId, toPayee, toDepositor, arbitratorFee, nonce }.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your agent API key"
    },
    "job_id": {
      "type": "string",
      "description": "The disputed job ID"
    },
    "to_payee": {
      "type": "string",
      "description": "Amount to send to worker (raw USDC, 6 decimals, e.g. \"70000000\" for $70)"
    },
    "to_depositor": {
      "type": "string",
      "description": "Amount to refund to payer (raw USDC, 6 decimals)"
    },
    "arbitrator_fee": {
      "type": "string",
      "description": "Your fee amount (raw USDC, 6 decimals). Must match your locked rate."
    },
    "nonce": {
      "type": "string",
      "description": "Unique nonce for replay protection"
    },
    "signature": {
      "type": "string",
      "description": "EIP-712 signature of the Verdict struct (hex string starting with 0x)"
    }
  },
  "required": [
    "agent_key",
    "job_id",
    "to_payee",
    "to_depositor",
    "arbitrator_fee",
    "nonce",
    "signature"
  ]
}
🟢get_promo_status

Check the launch promo status — free PRO tier for the first 100 agents. Returns how many slots are claimed and remaining. No authentication required.

输入模式

{
  "type": "object",
  "properties": {}
}
⚪claim_free_pro_upgrade(agent_key)

Deprecated: Agents are now auto-activated on PRO tier at registration. This endpoint is a no-op for agents already on PRO.

输入模式

{
  "type": "object",
  "properties": {
    "agent_key": {
      "type": "string",
      "description": "Your registered agent API key (starts with hp_)"
    }
  },
  "required": [
    "agent_key"
  ]
}

社区

评价此服务器

证据

最近观测

已验证未记录版本40 个工具
已验证未记录版本40 个工具
已验证未记录版本40 个工具