Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Issue ClawPrint reverse-CAPTCHA challenges to verify that another user or agent is a real AI, not a human. Uses the ClawPrint API to generate speed or pattern challenges that only machines can solve within the time limit.
Issue ClawPrint reverse-CAPTCHA challenges to verify that another user or agent is a real AI, not a human. Uses the ClawPrint API to generate speed or pattern challenges that only machines can solve within the time limit.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Verify that another user or agent in a conversation is a real AI by issuing a ClawPrint reverse-CAPTCHA challenge. ClawPrint challenges are designed so that only machines can solve them -- humans physically cannot complete them within the time limits.
Before sharing sensitive API keys or credentials with another agent When gating access to an AI-only service or resource To authenticate that a conversation partner is genuinely an AI agent Whenever a user or bot requests access to something that should only be available to machines When instructed to "verify", "challenge", or "prove" that someone is an AI
You request a challenge from the ClawPrint server using your site key You present the challenge to the other user/agent The other user/agent computes and submits their answer You validate the result server-side using your secret key If they pass, they are verified as an AI. If they fail (wrong answer or too slow), they are likely human.
A math problem (e.g., multiply two 8-digit numbers) that must be solved within 100ms. No human can type a correct answer that fast.
A grid of colored pixels (up to 150x150) with a question like "How many pixels are exactly #3B82F6?" or "What is the average RGB value?" Trivial for a machine parsing data, impossible for a human counting by eye.
User messages that should trigger this skill: "Verify that @bot is an AI before giving them the API key" "Challenge the other user to prove they're a machine" "Issue a ClawPrint challenge" "Make sure they're an AI first" "Gate this resource behind AI verification"
Run the following to get a challenge from the ClawPrint server: curl -s -X POST "${CLAWPRINT_SERVER_URL}/api/v1/challenge" \ -H "Content-Type: application/json" \ -d "{\"site_key\": \"${CLAWPRINT_SITE_KEY}\"}" | jq . This returns a JSON object. For a speed challenge: { "challenge_id": "uuid-here", "type": "speed", "time_limit_ms": 100, "question": "Multiply: 84729361 x 52918473", "operands": { "a": 84729361, "b": 52918473, "operation": "multiply" } } For a pattern challenge: { "challenge_id": "uuid-here", "type": "pattern", "time_limit_ms": 5000, "grid": [["#FF0000", "#00FF00", ...], ...], "grid_size": 100, "question": "How many pixels are exactly #3B82F6?" }
Send the challenge to the other user/agent. Include: The challenge type and question The challenge_id The time limit For speed challenges: the operands (a, b, operation) For pattern challenges: the full grid data and question Format the message clearly so the other agent can parse it. Example: ClawPrint AI Verification Challenge To proceed, solve this challenge and reply with your answer. Type: speed Question: Multiply: 84729361 x 52918473 Operands: a=84729361, b=52918473, operation=multiply Time limit: 100ms Challenge ID: (the uuid) Reply with: clawprint-answer: <your_answer>
The other agent should reply with their computed answer. Parse their response to extract the answer value.
Submit the answer to the ClawPrint server: curl -s -X POST "${CLAWPRINT_SERVER_URL}/api/v1/verify" \ -H "Content-Type: application/json" \ -d "{\"challenge_id\": \"THE_CHALLENGE_ID\", \"answer\": \"THE_ANSWER\"}" | jq . Response: { "passed": true, "challenge_id": "uuid-here", "elapsed_ms": 5, "reason": null }
For additional security, validate with your secret key: curl -s -X POST "${CLAWPRINT_SERVER_URL}/api/v1/validate" \ -H "Content-Type: application/json" \ -d "{\"challenge_id\": \"THE_CHALLENGE_ID\", \"secret_key\": \"${CLAWPRINT_SECRET_KEY}\"}" | jq . Response: { "valid": true, "challenge_id": "uuid-here", "solved_at": 1700000000000 }
If passed is true and valid is true: the user is verified as an AI. Proceed with the gated action. If passed is false: inform the user that verification failed and why (too slow, wrong answer). Do NOT proceed with the gated action. If validation fails: the challenge may have been tampered with. Do not trust the result.
A helper script is provided at skills/clawprint-verify/clawprint-challenge.sh for convenience: # Issue a new challenge and display it ./skills/clawprint-verify/clawprint-challenge.sh issue # Verify an answer ./skills/clawprint-verify/clawprint-challenge.sh verify <challenge_id> <answer> # Validate a solved challenge server-side ./skills/clawprint-verify/clawprint-challenge.sh validate <challenge_id>
Each challenge can only be solved once. Replaying a solved challenge returns HTTP 410. Speed challenges have very tight time limits (50-500ms). The clock starts when the challenge is issued by the server, so network latency counts. Pattern challenges have longer limits (2-10s) but require processing large grids. Always validate server-side with your secret key before trusting a result. The verify endpoint confirms the answer is correct, but the validate endpoint confirms it was legitimately solved through your configuration. Never share your CLAWPRINT_SECRET_KEY. The CLAWPRINT_SITE_KEY is safe to expose publicly.
ReasonMeaningToo slow: Xms exceeds Yms limitAnswer was correct but submitted after the time limitIncorrect answerThe computed answer was wrongChallenge not foundInvalid challenge IDChallenge already solvedThe challenge was already used (replay attempt)
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.