Start with the naming job

A startup-naming agent has a seed: “ledger.” Its intent is sharper: name an invoice follow-up assistant for solo consultants, with a technical tone and an available domain.

That’s enough for domain-suggest.

The endpoint costs $0.05 USDC per query through x402 on Base mainnet. One call returns proposed names with normalized domain slugs, a brandability score, and availability results for each requested TLD.

No separate seed or intent fields exist. Put both into concept as plain language. This matters for tool routers. If the user asks, “Name my invoice-chasing startup, maybe something around ledger,” the router should translate that request into one focused concept instead of sending only ledger.

Send the request

concept is required and accepts up to 240 characters. count runs from 1 to 20, with 10 as the default. You can check up to six TLDs per call.

curl -X POST "https://api.agentutility.ai/domain-suggest" \
  -H "Content-Type: application/json" \
  -d '{
    "concept": "Invoice follow-up assistant for solo consultants. Use ledger as a loose naming seed.",
    "count": 6,
    "tlds": ["com", "ai", "co", "app"],
    "tone": "technical"
  }'

The allowed tones are neutral, playful, technical, luxury, and industrial.

Supported TLDs are com, ai, dev, io, co, app, xyz, org, net, tech, tools, page, studio, and shop. Keep count × number of TLDs at 80 or below. Six candidates across four TLDs means 24 availability checks.

An x402-aware client first receives the payment requirement, signs the $0.05 USDC payment, and retries the same POST with its payment proof. The successful response is JSON.

Read the candidates

A shortened response has this shape. Availability can change after the call.

{
  "concept": "Invoice follow-up assistant for solo consultants. Use ledger as a loose naming seed.",
  "tone": "technical",
  "requested_count": 6,
  "returned_count": 6,
  "tlds_checked": ["com", "ai", "co", "app"],
  "candidates": [
    {
      "name": "LedgerLoop",
      "slug": "ledgerloop",
      "brandability_score": 9,
      "rationale": "Connects accounting records with repeated follow-up.",
      "available_count": 2,
      "available_tlds": ["ai", "app"],
      "taken_tlds": ["com", "co"],
      "domains": [
        {
          "domain": "ledgerloop.com",
          "tld": "com",
          "available": false,
          "registrar": null
        },
        {
          "domain": "ledgerloop.ai",
          "tld": "ai",
          "available": true,
          "registrar": null
        }
      ]
    }
  ]
}

Candidates are ordered by available TLD count, then by brandability_score. A score runs from 1 to 10. The rationale gives the calling agent enough context to explain why a name fits instead of dumping a silent list into the next step.

slug is the domain-safe form. available_tlds supports quick filtering, while domains preserves the result for every requested extension. If a domain is registered and registrar data is present, the matching object includes it.

Route the shortlist

For a startup naming task, require availability on the founder’s preferred TLD and sort the remaining candidates by brandability_score. Keep two finalists. That leaves room for human taste without handing someone a page of near-duplicates.

And don’t treat available: true as a reservation. It’s the availability state at query time. Registration can happen minutes later.

The endpoint doesn’t provide trademark clearance either. Once the agent has a finalist, send that name to brand-clearance before adopting it. Domain availability answers “can I register this address now?” Brand clearance answers a different question about existing names and public signals.

Want separate creative directions? Make four calls with technical, playful, luxury, and industrial, then compare the top candidates. The total naming bill is $0.20 USDC.