Install
openclaw skills install @maxko87/ask-human-expertAsk real human experts a question through Instant Expert and get a written or voice answer or a short call. It finds executives, operators and domain specialists by description, or reaches one named person by name and company, LinkedIn URL or email, and sends each a paid ask. The buyer pays only if the person answers or books, and approves every live order first. Use when the agent or user needs first-hand knowledge that search can't give (how practitioners actually do something, an expert opinion, customer discovery or user interviews, feedback from a specific kind of professional), wants to reach a specific person, or wants to check replies to earlier asks. Starts in a free test mode with no account or card.
openclaw skills install @maxko87/ask-human-expertInstant Expert sends a paid ask from the user's account to real professionals: executives, operators and domain experts it finds from a description, or one specific person the user names. Each ask is a question for a written or voice answer, or a 15 to 60 minute call. The person is paid only if they answer or book, and the user is charged only then. Use it for knowledge work (judgment and first-hand experience from specific people), not errands or physical tasks.
Don't use it to find personal contact details, to get confidential or material non-public information, for physical tasks, or to message people the user hasn't approved.
Test mode (next section) is free and simulated. Live mode is real:
Before every live send, show the user the prepare_request_order preview (recipients, message, pricing_summary, total cap, card, payment mode and terms), and call send_requests only after they explicitly approve that exact preview. "Draft it" is not approval. If the draft, card or terms change, send_requests returns order_changed: prepare, show and ask again.
If this session already has the Instant Expert MCP tools (search_people, queue_requests, prepare_request_order and so on), call them directly. A result with "test_mode": true came from test mode; anything else is the user's live account, where "Live mode spends real money" applies.
Otherwise use the bundled helper, which needs only bash and curl. {baseDir} is this skill's folder:
bash {baseDir}/scripts/ie.sh call <tool> '<json arguments>'
The first call starts a free 24-hour test-mode sandbox: no account, no card, nothing to configure. Pass - instead of the JSON to read the arguments from stdin, which avoids quoting problems with apostrophes. ie.sh tools lists the tools.
Test mode has about 300 fictional people at fictional companies, so a niche search comes back with the closest fictional matches. Invitations are recorded instead of sent, the fictional people answer within seconds, and orders use a Stripe test card. Nothing done in test mode reaches a real person or moves real money. Tell the user once that results are simulated, and offer to connect their real account (see "Going live").
Tools that start work (search_people, import_people, queue_requests) return a job_id. Poll get_job, waiting poll_after_seconds between calls, until status is succeeded or failed; a live research search often takes a few minutes. Give every new operation its own idempotency_key, and reuse a key only to retry the same call.
Choose who to ask.
people, for example [{"linkedin_url": "https://www.linkedin.com/in/..."}].import_people with [{"name": "...", "company": "..."}], then get_search. A matched person has a current title. If there's no match, ask the user for a LinkedIn URL or email.search_people once with the whole request, including how many people and any exclusions, for example "Find 3 heads of security at Series A or B software companies. Exclude consultancies." Then read the list with get_search (page_size: 100). Compare total_count with the count asked for, and explain any shortfall using completion.plan_outreach with a description, let the user pick an audience, then run its search_query through search_people.Draft the ask with queue_requests: search_id (plus person_profile_ids to keep a subset) or people, and:
message: the question, in the user's words, up to 500 characters. Leave the price out; the invitation states it.request_type: text_voice_note for a written or voice answer, or call with call_duration_minutes of 15, 30, 45 or 60.offer_cents and max_spend_cents (see Pricing), and an idempotency_key.Poll get_job for the draft_id. If the result lists needs_name, tell the user those invitations will open with a generic greeting.
Preview the order with prepare_request_order and the draft_id. For a call, also pass time_zone, the user's IANA time zone name. Show the user the recipients, message, pricing_summary, total cap, card, payment mode and terms.
Send with send_requests, passing draft_id, confirmation_token, payment_method_reference, payment_mode and terms_version from the preview, the same time_zone if you passed one, confirmed: true and a new idempotency_key. In live mode, send only as "Live mode spends real money" describes. A test-mode send emails no one and charges only a Stripe test card, so you can send it to show the user the whole flow, saying that it's a test.
Collect the answers. get_request_order reports delivery: the sent count in its delivery object is the number of invitations that actually went out. list_requests shows each request's status and recipient, and get_request returns reply_text, reply_transcript or the booked time once the person answers or books. Real people take hours to days, so check back later instead of polling in a loop. In test mode answers arrive within seconds, and simulate_response forces an outcome (books, replies, declines, no_response, bounces, then call_completed or expert_no_show for a booked call).
offer_cents is what each person receives, in whole dollars: 4000 means they get $40. The minimum is $5. Instant Expert's fee is added on top for the buyer, so a $40 offer costs $50. Quote the person's amount to the person and tell the user the fee comes on top; pricing_summary in the preview says it in one sentence.max_spend_cents caps the buyer's total across everyone who accepts, fee included. A draft can invite more people than the cap would cover; it's first come, first served.offer_cents out to offer each person their suggested amount. As a starting point, $50 for 15 minutes, rising to about $100 for very senior people (guide).message_price_mismatch.Live mode needs the user's own account, and nothing carries over from test mode. Everything in "Live mode spends real money" applies from the first live call.
Connect the Instant Expert MCP server at https://instant.expert/mcp (Streamable HTTP, OAuth sign-in, no API key):
claude mcp add --transport http --scope user instant-expert https://instant.expert/mcp, then /mcp, pick instant-expert and choose Authenticate.openclaw mcp set instant-expert '{"url":"https://instant.expert/mcp","transport":"streamable-http","auth":"oauth","oauth":{"scope":"email profile"}}', then openclaw mcp login instant-expert and open the link it prints.references/going-live.md has the details, including what to do when the preview reports blockers.
The user signs in on instant.expert and approves the connection. To let the agent send, they tick Allow paid requests from this assistant on that screen (or later in Settings, Connected assistants) and add a card on instant.expert. Card details never go through chat.
Use the same flow with the live tools. If prepare_request_order returns status: "action_required", give the user its next_step as written: one link on instant.expert fixes a missing card, permission or booking hours. Then prepare the order again.
The user says: "Before we pick a SOC 2 vendor, ask a couple of security leads how long Type II took them. $40 each for a written answer, $100 cap." With no Instant Expert tools in the session, the agent uses the helper in test mode. Here ie.sh stands for bash {baseDir}/scripts/ie.sh:
ie.sh call search_people '{"query":"Find 2 heads of security (CISO, VP or Director of Security) at Series A or B software companies","idempotency_key":"soc2-leads-1"}'
ie.sh call get_job '{"job_id":"<job_id>"}' # result.search_id
ie.sh call get_search '{"search_id":"<search_id>"}' # Ines Xiong (CISO), Caleb Kallio (Director of Security)
ie.sh call queue_requests '{"search_id":"<search_id>","message":"For a 40-person B2B SaaS company starting SOC 2 from scratch, how many months did Type II take you, and what would you do first?","request_type":"text_voice_note","offer_cents":4000,"max_spend_cents":10000,"idempotency_key":"soc2-ask-1"}'
ie.sh call get_job '{"job_id":"<job_id>"}' # result.draft_id
ie.sh call prepare_request_order '{"draft_id":"<draft_id>"}'
The preview's pricing_summary reads: "Each recipient receives $40. The Instant Expert fee of $10 per person is added on top, so you pay $50 per accepted recipient, charged only when that person's reply is completed." The agent shows that, the two recipients and the message, then sends with the preview's values:
ie.sh call send_requests '{"draft_id":"<draft_id>","confirmation_token":"<token>","payment_method_reference":"<ref>","payment_mode":"test","terms_version":"<version>","confirmed":true,"idempotency_key":"soc2-send-1"}'
ie.sh call get_request '{"request_id":"<request_id>"}' # status "completed", reply_text
It reports what came back (fictional people sometimes decline or ask a question, like real ones), says the answers were simulated, and explains how to go live to ask real security leads.
Each person gets an invitation email from Instant Expert that states what they'll receive and links to answer, book or decline. If they don't respond, up to two follow-ups go out after 2 and 4 days, unless you pass followup_days: [] to prepare_request_order. Every email has an unsubscribe link, and Instant Expert stops contacting people who unsubscribe. The agent never sees anyone's email address.
send_requests without the user's explicit approval of that exact preview (see "Live mode spends real money").rate_limited or HTTP 429, wait for the stated delay and retry the same call with the same idempotency_key; don't loop.