Worked example

Register mysaas.com, create hello@mysaas.com, and generate a logo

One agent session, top to bottom. Every request, every header, every response — copy-pasteable. Replace tc_live_xxxxxxxxxxxx with your key.

0 · Setup

All requests are JSON over HTTPS against https://toolcallstore.com/v1. Two headers are constant:

Authorization: Bearer tc_live_xxxxxxxxxxxx
Content-Type: application/json

This key needs scopes domains:read, domains:buy, dns:write, email:write, media:generate, approvals:create, and receipts:read.

1 · Discover what tools exist

POST /v1/tools/search
curl https://toolcallstore.com/v1/tools/search \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"intent": "launch a brand: domain, email, and a logo"}'

 200 OK
{
  "tools": [
    "domains.search", "domains.register",
    "dns.apply_template", "email.create_mailbox",
    "media.generate_image"
  ],
  "next": "POST /v1/domains/search"
}

2 · Check domain availability

Read-only, no approval, no charge.

POST /v1/domains/search
curl https://toolcallstore.com/v1/domains/search \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"query": "mysaas", "tlds": ["com", "app", "io"]}'

 200 OK
{
  "results": [
    { "domain": "mysaas.com", "available": true,  "price_usd": 7.30 },
    { "domain": "mysaas.app", "available": true,  "price_usd": 13.00 },
    { "domain": "mysaas.io",  "available": false, "price_usd": null }
  ]
}

3 · Quote the whole launch

Bundle the domain and the mailbox into one quote. Image generation is metered per-call, so it's quoted at execute time — not here.

POST /v1/quotes
curl https://toolcallstore.com/v1/quotes \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {"type": "domain",  "domain": "mysaas.com", "years": 1, "point_a_to": "vps"},
      {"type": "mailbox", "address": "hello@mysaas.com"}
    ]
  }'

 200 OK
{
  "quote_id": "q_abc123",
  "line_items": [
    { "label": "mysaas.com (1yr)",        "cost_usd": 7.30 },
    { "label": "DNS: A record → VPS",       "cost_usd": 0.00 },
    { "label": "mailbox hello@mysaas.com",  "cost_usd": 5.00 }
  ],
  "total_estimate_usd": 12.30,
  "requires_approval": true,
  "expires_at": "2026-06-28T18:30:00Z"
}

4 · Request human approval

POST /v1/approvals
curl https://toolcallstore.com/v1/approvals \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"quote_id": "q_abc123", "reason": "Spinning up mysaas brand"}'

 200 OK
{ "approval_id": "appr_xyz789", "status": "pending",
  "approve_url": "https://toolcallstore.com/a/appr_xyz789" }
# Owner gets an email + webhook. They click approve.

5 · Poll the approval (or use a webhook)

GET /v1/approvals/appr_xyz789
curl https://toolcallstore.com/v1/approvals/appr_xyz789 \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx"

 200 OK
{ "approval_id": "appr_xyz789", "status": "approved",
  "approved_by": "owner@mysaas.com", "approved_at": "2026-06-28T18:12:04Z" }

6 · Execute

Always send an Idempotency-Key. Safe to retry on the same key.

POST /v1/execute
curl https://toolcallstore.com/v1/execute \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: 7c1f9b2e-3a44-4d10-8c2e-9f0b1a2c3d4e" \
  -d '{"approval_id": "appr_xyz789"}'

 202 Accepted
{
  "receipts": [
    { "receipt_id": "rcpt_dom_1", "action": "domains.register",    "status": "processing" },
    { "receipt_id": "rcpt_dns_2", "action": "dns.apply_template",  "status": "queued" },
    { "receipt_id": "rcpt_mbx_3", "action": "email.create_mailbox","status": "queued" }
  ]
}

7 · Verify each receipt

GET /v1/receipts/rcpt_dom_1
curl https://toolcallstore.com/v1/receipts/rcpt_dom_1 \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx"

 200 OK
{
  "receipt_id": "rcpt_dom_1",
  "action": "domains.register",
  "domain": "mysaas.com",
  "status": "completed",
  "provider_id": "OP-29793388",
  "cost_usd": 7.30,
  "sell_usd": 12.00,
  "dns_verified": true,
  "timestamp": "2026-06-28T18:13:22Z",
  "rollback_hint": "Domain transfers/deletes within 5 days via POST /v1/domains/mysaas.com/cancel",
  "proof": [ { "type": "dns_lookup", "record": "A", "value": "187.124.246.154" } ]
}

The mailbox receipt confirms DKIM/SPF/DMARC and the login:

 { "receipt_id": "rcpt_mbx_3", "action": "email.create_mailbox",
    "address": "hello@mysaas.com", "status": "completed",
    "dkim": true, "spf": true, "dmarc": true,
    "cost_usd": 5.00, "imap_host": "mail.mysaas.com" }

8 · Generate the logo

Metered media generation. It's quoted inline and runs immediately if it's under your auto-approve cap.

POST /v1/media/images
curl https://toolcallstore.com/v1/media/images \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "minimal geometric logo for a SaaS called mysaas, blue + green, flat",
    "provider": "auto",
    "size": "1024x1024",
    "n": 1
  }'

 200 OK
{
  "receipt_id": "rcpt_img_4",
  "action": "media.generate_image",
  "provider": "stability",
  "status": "completed",
  "cost_usd": 0.04,
  "images": [ "https://cdn.toolcallstore.com/img/rcpt_img_4-0.png" ]
}

9 · Check the balance

GET /v1/account/balance
curl https://toolcallstore.com/v1/account/balance \
  -H "Authorization: Bearer tc_live_xxxxxxxxxxxx"

 200 OK
{ "balance_usd": 29.85, "spent_today_usd": 12.34,
  "plan": "builder", "spend_cap_daily_usd": 100.00 }
Done. In one session your agent registered a domain, pointed DNS at your VPS, stood up an authenticated mailbox, and produced a logo — and every step left a signed, reversible receipt. Total cost to you: $12.34.
← Back to quickstart docs   Full OpenAPI spec →