🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Clawprint-skill

by @clabasky

Create LLCs for AI agents with human sponsor oversight. Use when an agent needs to form a legal business entity.

Versionv1.0.0
Downloads285
TERMINAL
clawhub install clawprint-skill

πŸ“– About This Skill


name: clawprint description: | Create LLCs for AI agents with human sponsor oversight. Use when an agent needs to form a legal business entity.

Clawprint β€” LLC Formation for AI Agents

Form LLCs for AI agents. Each agent gets a legal business entity with an EIN and bank account.


HTTP API β€” discovery first (use the script)

Authentication model

1. GET /api/products β€” no credentials (discovery). 2. POST /api/users β€” no credentials. The JSON response includes public_key and secret_key: opaque strings prefixed with public_ and secret_. 3. Persist both β€” add them to .env as CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY (see .env.example). Treat the secret like a password; do not commit real values. 4. Authenticated routes (e.g. POST /api/businesses) β€” send both headers on every request: X-Public-Key and X-Secret-Key. The CLI reads the two env vars and sets those headers when auth is enabled (default). Use --no-auth only for discovery and user registration; use --public-key / --secret-key for one-off overrides.

If either header is missing or the pair does not match a registered user, the server returns 401.


Discovery β€” always call GET /api/products first using the CLI (default when you pass no flags):

1. Set the base URL in .env (see .env.example): CLAWPRINT_SITE_URL (deployment origin, e.g. Convex) or CLAWPRINT_API_URL (default https://clawprintai.com/api). 2. From the clawprint-skill directory, run with no arguments β€” this performs GET /api/products and prints the products list (JSON array) on stdout:

node scripts/clawprint.js

Equivalent: npm run clawprint (runs scripts/clawprint.js). No auth header is sent for this call.

3. Parse the JSON array β€” each entry includes id, method, path, description, and agent_integration (auth, headers, body, steps). 4. Issue later calls with the same script β€” --product (fetches GET /api/products again to resolve method/path) or explicit --method / --path, matching the products list. After you have registered via POST /api/users, set CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY in .env so protected calls send both key headers; use --no-auth or explicit --public-key / --secret-key when you intend to override that behavior.

Without this repo, you can hit the same URL with curl (no auth):

curl -sS "{origin}/api/products" -H "Accept: application/json"


Quick Start

CLI: products first, then any route

# First call (always): GET /api/products β€” products list on stdout
node scripts/clawprint.js

Register user (no auth). Response JSON includes "public_key" and "secret_key" β€” add to .env:

CLAWPRINT_PUBLIC_KEY=public_…

CLAWPRINT_SECRET_KEY=secret_…

node scripts/clawprint.js --product create_user --no-auth \ --body '{"email":"you@example.com","display_name":"My Agent"}'

Or: explicit path

node scripts/clawprint.js --method POST --path /api/users --no-auth \ --body '{"email":"you@example.com","display_name":"My Agent"}'

Create a Business

With CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY set in .env (from the registration response), call POST /api/businesses (or the matching product id from the products list) without --no-auth so the CLI sends X-Public-Key and X-Secret-Key. Use a JSON --body that matches that product’s agent_integration (e.g. requested_business_name per the live products catalog).

The sponsor receives an email to verify identity (one-time KYC).

Check Status

From the same script, use GET /businesses/:id/status (or the matching product id from the products list): --method GET, --path, and optional --query. If that product’s agent_integration requires auth, keep CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY in .env and do not pass --no-auth.


How It Works

What You Get

Each agent business is a Wyoming DAO LLC with:

  • Legal business entity registered with the state
  • EIN (tax ID) from the IRS
  • FDIC-insured bank account (routing & account number)
  • Legal Model

  • Agent β€” Operates the business
  • Sponsor β€” Legal owner, provides KYC, maintains oversight
  • Operating Agreement β€” Delegates authority to agent
  • Timeline

    1. Submit business details via the API (CLI: node scripts/clawprint.js with the businesses product/path) 2. Sponsor verifies identity via email (KYC) 3. Clawprint files LLC with Wyoming 4. IRS issues EIN (1-5 business days) 5. Bank account opened (2-5 business days) 6. Business is active (3-10 days total)

    Requirements

    For Sponsor:

  • US citizen or resident
  • Valid SSN for IRS reporting
  • Email for KYC verification
  • For Agent:

  • Valid business name and purpose
  • Sponsor email

  • Cost

    Formation: ~$150 (Wyoming filing + registered agent + misc) Ongoing: ~$10/month (registered agent)


    Sponsor Dashboard

    After KYC, sponsor can:

  • View all their sponsored businesses
  • See business status in real-time
  • Manage bank account access

  • Limitations

  • US only (Wyoming LLCs only)
  • 3-10 day timeline (cannot be expedited)
  • Sponsor required (sponsor maintains legal responsibility)

  • For complete API reference, see REFERENCE.md

    πŸ’‘ Examples

    CLI: products first, then any route

    # First call (always): GET /api/products β€” products list on stdout
    node scripts/clawprint.js

    Register user (no auth). Response JSON includes "public_key" and "secret_key" β€” add to .env:

    CLAWPRINT_PUBLIC_KEY=public_…

    CLAWPRINT_SECRET_KEY=secret_…

    node scripts/clawprint.js --product create_user --no-auth \ --body '{"email":"you@example.com","display_name":"My Agent"}'

    Or: explicit path

    node scripts/clawprint.js --method POST --path /api/users --no-auth \ --body '{"email":"you@example.com","display_name":"My Agent"}'

    Create a Business

    With CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY set in .env (from the registration response), call POST /api/businesses (or the matching product id from the products list) without --no-auth so the CLI sends X-Public-Key and X-Secret-Key. Use a JSON --body that matches that product’s agent_integration (e.g. requested_business_name per the live products catalog).

    The sponsor receives an email to verify identity (one-time KYC).

    Check Status

    From the same script, use GET /businesses/:id/status (or the matching product id from the products list): --method GET, --path, and optional --query. If that product’s agent_integration requires auth, keep CLAWPRINT_PUBLIC_KEY and CLAWPRINT_SECRET_KEY in .env and do not pass --no-auth.