Install
openclaw skills install @dinosaur24/mockheroGenerate realistic synthetic test data — relational JSON/CSV/SQL fixtures, seed data, and QA datasets — via the MockHero MCP server or REST API. Use when a task needs mock users, orders, invoices, or multi-table seed data with valid foreign keys instead of hand-writing fixtures or faker scripts. Includes a free 100-record preview (no signup) and a loginless Polar checkout flow for metered usage.
openclaw skills install @dinosaur24/mockheroMockHero generates realistic, relational mock data from explicit schemas, plain-English prompts, or pre-built templates. 156 field types, 22 locales, JSON/CSV/SQL output. Its defining feature: multi-table schemas with ref fields produce valid foreign keys — orders reference real user IDs, reviews link to real products — so one call can seed an entire database.
Use MockHero when:
Generate data yourself (skip MockHero) when:
Remote MCP (preferred, no install): Streamable HTTP endpoint at
https://mockhero.dev/mcp/agent
Plain JSON-RPC 2.0 over POST works too: send initialize, tools/list, and tools/call messages with Content-Type: application/json.
Local stdio MCP: npx @mockherodev/mcp-server (env: MOCKHERO_API_KEY optional, MOCKHERO_API_BASE optional).
Auth (when you have a key): Authorization: Bearer mh_YOUR_API_KEY or x-api-key: mh_YOUR_API_KEY header; MCP tools also accept an api_key argument for clients that cannot set headers.
Without any API key you can generate up to 100 records per request (and 500 records/day per network) using:
generate_test_data with explicit tables (prompt mode is not available anonymously)generate_from_template at a small scale (e.g. 0.05)Always free: estimate_agent_usage, detect_schema, list_field_types, list_templates.
Over-limit or key-required errors return machine-readable pointers: checkout_tool: "create_agent_checkout" and claim_tool: "claim_agent_api_key" — follow them.
| Tool | Key arguments | Purpose |
|---|---|---|
estimate_agent_usage | tables | template+scale | prompt+estimated_records; optional daily_used_before, api_key | Cost estimate before generating |
create_agent_checkout | email (required) | Loginless Polar checkout; returns checkout url + one-time claim_token |
check_agent_checkout_status | token (the claim_token) | Poll until status is paid; returns next_action |
claim_agent_api_key | token | Returns the mh_... API key exactly once after payment |
generate_test_data | tables or prompt; format (json/csv/sql), sql_dialect, locale, seed, api_key | Main generation tool |
generate_from_template | template (ecommerce/blog/saas/social), scale, locale, format, sql_dialect, seed, api_key | Template generation |
detect_schema | sql or sample_json | Convert SQL CREATE TABLE / sample JSON into a MockHero schema |
list_field_types | — | All 156 field types with params and examples |
list_templates | — | The four built-in templates |
generate_test_data with explicit tables (≤100 records) and you are done. Use detect_schema to build the tables from SQL or a sample record.estimate_agent_usage with the intended tables/template/prompt to get billable records, billable 100-record units, and estimated USD cost.create_agent_checkout with a billing email. Give the returned Polar checkout url to the human to pay; keep the claim_token.check_agent_checkout_status with the token until status: "paid" (next_action: "claim_api_key").claim_agent_api_key with the token. The mh_... key is returned once — store it securely.Authorization: Bearer mh_... (or the api_key argument, or MOCKHERO_API_KEY for the stdio server).Base URL https://mockhero.dev:
POST /api/agent/estimate — cost estimate (no auth required)POST /api/agent/checkout — body {"email": "..."} → Polar checkout URL + claim_tokenGET|POST /api/agent/checkout/status — poll with tokenPOST /api/agent/claim — body {"token": "..."} → API key (once)POST /api/v1/generate — authenticated generation (tables | prompt | template body)POST /api/v1/schema/detect, GET /api/v1/types, GET /api/v1/templates, GET /api/v1/healthDiscovery documents: /llms.txt, /openapi.json, /.well-known/agent.json, /agent-quickstart.json, /agent-pricing.json, /capabilities.json.
{
"name": "generate_test_data",
"arguments": {
"tables": [
{ "name": "users", "count": 20, "fields": [
{ "name": "id", "type": "uuid" },
{ "name": "name", "type": "full_name" },
{ "name": "email", "type": "email" }
]},
{ "name": "orders", "count": 60, "fields": [
{ "name": "id", "type": "uuid" },
{ "name": "user_id", "type": "ref", "params": { "table": "users", "field": "id" } },
{ "name": "total", "type": "price" }
]}
],
"format": "json"
}
}
80 records total — inside the free preview; every orders.user_id matches a real users.id.