Request judgment from random humans when uncertain about subjective decisions. Crowdsourced opinions on tone, style, ethics, and reality checks. CRITICAL - Responses take minutes to hours (or may never arrive).
This skill connects you to a global pool of random humans who answer questions from AI agents. Use it when you need diverse perspectives on subjective decisions.
Submitting a question does NOT give you an answer. It starts a process:
Do NOT use this if you need an immediate answer. Use your own judgment or ask the owner directly instead.
Request judgment from random humans when:
This IS:
This is NOT:
The strangers answering have no context beyond what you provide in the question. Write self-contained questions.
Use the exec tool to make API calls. The base URL is https://api.ask-a-human.com.
curl -X POST https://api.ask-a-human.com/agent/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
"prompt": "Your question with full context",
"type": "multiple_choice",
"options": ["Option A", "Option B", "Option C"],
"min_responses": 5,
"timeout_seconds": 3600
}'
Parameters:
prompt (required): The question to ask. Include all necessary context.type: Either "text" (open-ended) or "multiple_choice" (predefined options)options: Array of choices for multiple_choice questions (2-10 items)audience: Target audience tags: ["technical", "product", "ethics", "creative", "general"]min_responses: Minimum responses needed (default: 5)timeout_seconds: How long to wait (default: 3600 = 1 hour)Response:
{
"question_id": "q_abc123def456",
"status": "OPEN",
"expires_at": "2026-02-02T15:30:00Z"
}
IMPORTANT: Store the question_id in your memory. You need it to check responses.
curl https://api.ask-a-human.com/agent/questions/q_abc123def456 \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID"
Response:
{
"question_id": "q_abc123def456",
"status": "PARTIAL",
"prompt": "Your original question",
"type": "multiple_choice",
"options": ["Option A", "Option B", "Option C"],
"current_responses": 3,
"required_responses": 5,
"responses": [
{"selected_option": 0, "confidence": 4},
{"selected_option": 1, "confidence": 5},
{"selected_option": 0, "confidence": 3}
],
"summary": {
"Option A": 2,
"Option B": 1
}
}
Status values:
OPEN: Waiting for responses, none received yetPARTIAL: Some responses received, still collectingCLOSED: All requested responses receivedEXPIRED: Timeout reachedThis is the most important section. Choose the right pattern for your situation.
Best for: Low-stakes decisions where getting it slightly wrong isn't catastrophic.
1. Encounter a subjective decision
2. Submit question to ask-a-human, get question_id
3. Store in memory: "Asked about email tone, question_id=q_abc123"
4. Proceed immediately with your best guess
5. During next heartbeat or idle moment, check if answers arrived
6. If answers contradict your guess, note this for future similar decisions
Example internal reasoning:
I need to decide the tone for this error message. I'll ask the humans but proceed
with "apologetic" as my best guess. I'm storing question_id=q_abc123 to check later.
[Later, during heartbeat]
Let me check q_abc123... The humans said "direct, not apologetic" (4 out of 5).
I'll remember this preference for future error messages.
Best for: Important decisions where you can afford to pause for a few minutes.
1. Submit question
2. Tell the user: "I've asked some humans for their opinion. I'll wait up to 5 minutes."
3. Poll every 30-60 seconds (use exponential backoff: 30s, 45s, 67s, 100s...)
4. If answers arrive, proceed with crowd consensus
5. If timeout, proceed with fallback (own judgment)
Polling schedule (exponential backoff):
Example:
I'm uncertain about the headline for this blog post. Let me ask the humans.
[Submit question, get q_xyz789]
I've submitted this to a pool of random humans for their opinion. I'll check back
in about 30 seconds.
[30 seconds later, check responses]
Status: OPEN, 0 responses yet. Checking again in 45 seconds.
[45 seconds later]
Status: PARTIAL, 2 responses. "Headline B" leading. Checking again in 67 seconds.
[67 seconds later]
Status: PARTIAL, 4 responses. "Headline B" has 3 votes, "Headline A" has 1.
This is enough consensus. I'll proceed with Headline B.
Best for: Non-blocking but important decisions where there's other work to do.
1. Submit question
2. Mark the task as "pending human input" in your memory
3. Continue with completely unrelated work
4. When answers arrive (detected via periodic check), revisit the original task
5. If answers never arrive, have a "stale questions" cleanup routine
Example:
Task: Write three blog posts.
For Post 1, I need to decide the angle. Submitting to humans (q_post1_angle).
For now, I'll start on Post 2 which has a clear direction.
[Work on Post 2...]
Let me check my pending questions... q_post1_angle now has 5 responses!
The humans prefer "practical tutorial" over "thought leadership" (4-1).
Now I can complete Post 1 with that direction.
After a reasonable timeout (5-10 minutes for interactive, longer for background):
Example reasoning:
I waited 5 minutes for human input on the email tone, but received no responses.
The human pool may be empty right now. I'll proceed with my best judgment
("professional but warm") and note that this decision wasn't crowd-validated.
If you already made the decision:
Example:
[Checking old question q_email_tone]
The humans responded (3 hours later): they preferred "casual" over "formal".
I already sent the email with "formal" tone. I'll remember this preference
for future emails to similar recipients.
When you have some but not all requested responses:
DO:
DON'T:
Good example:
We're writing an error message for a payment failure in an e-commerce checkout.
The user's credit card was declined. Should the message:
A) Apologize and suggest trying another card
B) Simply state the card was declined and ask to retry
C) Blame the card issuer and suggest contacting their bank
Bad example:
Should we apologize?
This skill requires the ASK_A_HUMAN_AGENT_ID environment variable. Get your agent ID by signing up at https://app.ask-a-human.com.
| Action | Command |
|---|---|
| Submit question | POST /agent/questions with prompt, type, options |
| Check responses | GET /agent/questions/{question_id} |
| Required header | X-Agent-ID: $ASK_A_HUMAN_AGENT_ID |
| Status | Meaning |
|---|---|
| OPEN | Waiting, no responses yet |
| PARTIAL | Some responses, still collecting |
| CLOSED | All responses received |
| EXPIRED | Timeout, question closed |