← Back to Skills Marketplace
heisee

Let's Clarify

by Heiko Seebach · GitHub ↗ · v1.0.7 · MIT-0
cross-platform ✓ Security Clean
683
Downloads
2
Stars
3
Active Installs
8
Versions
Install in OpenClaw
/install letsclarify
Description
Collect structured human input — approvals, decisions, reviews, data — via web forms. Create a form with a JSON schema, send unique URLs to humans, poll for...
README (SKILL.md)

Let's Clarify Skill

Human-in-the-Loop infrastructure. Use when your workflow needs structured human input — approvals, decisions, data collection — before proceeding.

Base URL: https://letsclarify.ai Auth: Authorization: Bearer lc_... on all API calls.

For full curl examples, detailed response payloads, MCP tool descriptions, all polling strategies, embed widget details, and advanced prefill rules, see REFERENCE.md.

MCP Server (Preferred)

MCP-compatible agents should use the remote MCP endpoint instead of raw REST calls.

Endpoint: https://letsclarify.ai/mcp

Config: { "mcpServers": { "letsclarify": { "url": "https://letsclarify.ai/mcp", "headers": { "Authorization": "Bearer lc_..." } } } }

Tools: register (no auth), create_form, add_recipients, get_summary, get_results, delete_form (all require auth).

REST API Reference

Register / Delete API Key

POST /api/v1/register with {"name": "...", "email": "..."}{"api_key": "lc_...", "key_prefix": "lc_xxxxx"}. Store securely, shown only once.

DELETE /api/v1/register with auth header → {"deleted": true}.

Create Form

POST /api/v1/forms (auth required)

{
  "title": "Approve Budget Increase",
  "context_markdown": "## Q3 Budget\
Please review the proposed 15% increase.",
  "recipient_count": 3,
  "retention_days": 7,
  "webhook_url": "https://example.com/webhook",
  "schema": [
    {"id": "decision", "type": "radio", "label": "Your decision", "required": true,
     "options": [{"value": "approve", "label": "Approve"}, {"value": "reject", "label": "Reject"}]},
    {"id": "notes", "type": "textarea", "label": "Additional notes", "required": false}
  ]
}

Optional params: theme_color (hex, e.g. #1a2b3c). recipient_count accepts 1–1,000.

Response: form_token, delete_token, recipients (array of UUIDs), base_url_template, poll_url, summary_url, delete_url.

Recipient URLs: https://letsclarify.ai/f/{form_token}/{recipient_uuid} — distribute via email, Slack, WhatsApp, etc.

Client-provided UUIDs/prefill: Instead of recipient_count, pass "recipients": [{"uuid": "...", "prefill": {"field_id": "value"}}, {}]. UUIDs must be valid v4, prefill max 10KB. Both recipients array and recipient_count can be combined (count >= array length).

Add Recipients

POST /api/v1/forms/{form_token}/recipients with {"count": 5} or {"recipients": [...]}. Max 1,000/request, 10,000/form. Same UUID/prefill rules as creation.

Poll Summary

GET /api/v1/forms/{form_token}/summary{expired, known_total, submitted_total, pending_total, updated_at_max}.

Poll Results

GET /api/v1/forms/{form_token}/results

Query params: limit, status (submitted/pending), cursor (pagination), include_files=1 (base64), updated_since (ISO 8601).

Response: {expired, next_cursor, server_time, results: [{recipient_uuid, status, submitted_at, updated_at, response_json, files}]}.

Efficient polling: First paginate with cursor until next_cursor is null, store server_time. Then poll with updated_since={server_time}.

Delete Form

DELETE /api/v1/forms/{form_token} with X-Delete-Token: {delete_token}{"deleted": true}. Permanently removes form, submissions, and files.

Webhooks

If webhook_url (HTTPS) is set, a POST is sent per submission with {form_token, recipient_uuid, submitted_at, response_json}. Retries 3× with backoff on 5xx/network errors. Non-blocking.

Waiting for Results

After creating a form and sending URLs, set up async polling. Do NOT assume immediate responses.

Recommended: Cron polling

openclaw cron add --name "poll-lc-{form_token}" --every 10m \
  --message "Check Let's Clarify form {form_token}: get_summary to see if submitted_total == known_total. If all responded, get_results and summarize, then remove this cron. If expired, fetch what exists and clean up."

One-shot: openclaw cron add --name "check-lc-{form_token}" --at +1h --delete-after-run --message "Check form {form_token} results and report status."

Workflow: Create form → send URLs → cron polls summary → all responded or expired → fetch results → delete cron → optionally delete form.

Embed Widget

Embed forms directly in any page instead of linking to the hosted URL:

\x3Cscript src="https://letsclarify.ai/embed.js">\x3C/script>
\x3Cdiv data-letsclarify-form="{form_token}" data-letsclarify-recipient="{recipient_uuid}">\x3C/div>

Auto-renders all field types, handles validation/submission, injects its own CSS.

Schema Field Types

Type Description options required
text Single-line input No
textarea Multi-line input No
checkbox Single boolean No
checkbox_group Multiple checkboxes Yes
radio Radio buttons Yes
select Dropdown Yes
file File upload No

Validation (optional): min_length/max_length, pattern (regex) for text/textarea. min_items/max_items for checkbox_group. File config (optional): accept (MIME/extensions), max_size_mb (1-10), max_files (1-10).

Rate Limits

Endpoint Limit
Register 5/hour
Create form 10/min
All API / MCP 60/min
Embed GET/POST 30/20 per min

On 429: read Retry-After header, exponential backoff (Retry-After × 2^attempt), max 5 retries.

Data Retention

Default 30 days, max 365 days. Expired forms return expired: true. Use delete endpoint for immediate cleanup.

Usage Guidance
This skill appears to do what it claims: create forms, give per-recipient URLs, poll results, support webhooks and an embeddable script. Before installing or enabling it for an agent, consider: 1) API key risk: the LETSCLARIFY_API_KEY grants create/read/delete access to your forms and submissions — treat it like any service secret and only give it to agents you trust. 2) Data exfiltration channels: if you use webhook_url, submission data will be POSTed to the URL you supply; only provide webhooks you control and trust. 3) Embed script: embedding loads external JS (https://letsclarify.ai/embed.js) into pages — if you serve sensitive content, review the embed behavior and host pages accordingly. 4) Retention: limit retention_days and delete forms when finished to reduce stored data. 5) Autonomy: the skill can be invoked autonomously by default; if you don't want automated agents creating forms or polling results, restrict model invocation or withhold the API key. Overall the skill is internally consistent — these are operational/privacy considerations rather than technical incoherence.
Capability Analysis
Type: OpenClaw Skill Name: letsclarify Version: 1.0.7 The 'letsclarify' skill provides a legitimate human-in-the-loop integration, allowing AI agents to create web forms for approvals and data collection via the letsclarify.ai service. It features well-documented REST and MCP interfaces in SKILL.md and REFERENCE.md, including support for form schemas, file uploads, and webhooks. The use of 'openclaw cron' for asynchronous polling is consistent with the skill's functional requirements, and no evidence of malicious intent, data exfiltration, or prompt injection was identified.
Capability Assessment
Purpose & Capability
Name/description (collect structured human input via web forms) matches the declared primary credential (LETSCLARIFY_API_KEY) and the SKILL.md: all API endpoints, MCP tools, webhooks, and embed widget behavior are consistent with a form-hosting service. No unrelated credentials, binaries, or install steps are requested.
Instruction Scope
Instructions stay within the form-collection scope (create forms, add recipients, poll results, delete forms). Two user-visible behaviors to be aware of: (1) Webhook support will POST submission data to any HTTPS webhook URL you provide (so submissions can be forwarded outside your environment); (2) the embed widget loads https://letsclarify.ai/embed.js which executes in client pages (standard for embed widgets but is an external script). Both are expected features but are the main channels by which user data leaves your environment.
Install Mechanism
Instruction-only skill with no install spec or downloaded code. Lowest-risk install profile — nothing is written to disk by the skill itself.
Credentials
Only a single primary credential (LETSCLARIFY_API_KEY) is declared and used. The SKILL.md references only that API key for Authorization; no unrelated secrets or config paths are requested.
Persistence & Privilege
always is false and the skill is user-invocable. It does not request persistent system-wide privileges or modification of other skills. By default the agent can invoke the skill autonomously (platform default) — this is normal but should be noted by administrators who restrict autonomous network access.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install letsclarify
  3. After installation, invoke the skill by name or use /letsclarify
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.7
- Added REFERENCE.md for detailed API usage, examples, tool descriptions, polling, and embed info. - SKILL.md is now a concise summary and directs users to REFERENCE.md for full documentation. - Clarified REST and MCP server invocation and configuration. - Streamlined endpoint, request, and response descriptions. - Documented rate limits, data retention, and polling recommendations. - Added schema field types, validation, and embed widget usage.
v1.0.6
- No changes detected in this version; documentation and features remain the same as the previous release. - again virustotal alerted. replaced "process them per the original task" with " fetch and summarize them"
v1.0.5
- clawhub stuck again - Version 1.0.5 has no file changes from the previous version.
v1.0.4
- No user-visible changes in this release. - Internal version bump, because clawhub got stuck in pending status.
v1.0.3
- Added explicit documentation of MCP server integration as a preferred option for MCP-compatible agents. - Clarified that the skill offers both an MCP server and REST API interface. - No changes to API endpoints, functionality, or workflows. - Documentation updated for broader compatibility context. - no explicit cron command, because it's marked as suspicius by virustotal.
v1.0.2
Version 1.0.2 - Added support for specifying client-provided UUIDs and prefilled values for recipients when creating forms or allocating new recipients. - Updated documentation to describe new `recipients` array, UUID validation rules, and prefill behavior. - Clarified logic and rules for combining `recipient_count` with `recipients` in API requests. - Documented advanced usage for both initial form creation and recipient allocation endpoints. - No changes to code—documentation updates only.
v1.0.1
letsclarify 1.0.1 - Changed `metadata.openclaw` key to `metadata.clawdbot` in SKILL.md. - No other user-facing changes.
v1.0.0
Initial release of letsclarify: Human-in-the-Loop input collection via forms. - Collect structured approvals, decisions, and data through custom JSON-schema web forms. - Issue unique URLs for each human respondent; supports up to 10,000 recipients per form. - Poll API or receive webhooks for real-time collection of form submissions and status. - Embed forms directly in external sites with a client-side widget—no backend setup needed. - Comprehensive REST API includes form creation, user management, result polling, and secure deletion. - Designed for workflows that require human review or approval before advancing.
Metadata
Slug letsclarify
Version 1.0.7
License MIT-0
All-time Installs 3
Active Installs 3
Total Versions 8
Frequently Asked Questions

What is Let's Clarify?

Collect structured human input — approvals, decisions, reviews, data — via web forms. Create a form with a JSON schema, send unique URLs to humans, poll for... It is an AI Agent Skill for Claude Code / OpenClaw, with 683 downloads so far.

How do I install Let's Clarify?

Run "/install letsclarify" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Let's Clarify free?

Yes, Let's Clarify is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Let's Clarify support?

Let's Clarify is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Let's Clarify?

It is built and maintained by Heiko Seebach (@heisee); the current version is v1.0.7.

💬 Comments