CLI
Local context, hosted evidence
export NAMING_SIGNAL_API_KEY="your-user-key"
npm run --silent cli -- research offhook \
--brief naming-brief.jsonThe CLI keeps repository selection local and sends only the approved bounded context.
API v1 · preview
Public to read, authenticated to execute. The same evidence and quota semantics apply to browser sessions, REST, CLI, and MCP.
Quickstart
Send user keys only in the Bearer header. Use one idempotency key per logical POST.
export NAMING_SIGNAL_API_KEY="your-user-key"
curl -sS "https://namingsignal.com/api/v1/check" \
-H "Authorization: Bearer $NAMING_SIGNAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: check-$(date +%s)" \
-d '{"names":["offhook","nicless"],"tlds":["com","app"]}'Contract
/api/v1/briefCompile bounded context into an editable brief
10 credits per public import/api/v1/generateGenerate one diverse batch of up to 50 names
500 credits/api/v1/checkCheck up to 150 name × TLD combinations
1 credit per combination/api/v1/rankCompare up to 30 survivors
500 credits/api/v1/researchResearch one to three finalists
250 credits per finalist/api/v1/healthInspect public provider and policy readiness
Free and publicIterative naming
Keep the approved brief and sprint ID. Pass liked and disliked examples as signals, and exclude the complete prior name ledger. Run the returned names through the normal check and rank endpoints before merging them into the project.
curl -sS "https://namingsignal.com/api/v1/generate" \
-H "Authorization: Bearer $NAMING_SIGNAL_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: iteration-$(date +%s)" \
-H "X-Name-Ledger-Sprint: my-project-001" \
-d '{
"brief": { "product": "...approved brief fields..." },
"count": 40,
"tlds": ["com", "app"],
"checkPrimaryDomain": false,
"excludedNames": ["every", "prior", "name"],
"iteration": {
"feedback": "Keep the direct optimism. Explore release and momentum metaphors.",
"likedNames": ["Offhook"],
"dislikedNames": ["Clinical Core"]
}
}'CLI
export NAMING_SIGNAL_API_KEY="your-user-key"
npm run --silent cli -- research offhook \
--brief naming-brief.jsonThe CLI keeps repository selection local and sends only the approved bounded context.
stdio MCP
[mcp_servers.naming_signal]
command = "npm"
args = ["--prefix", "/absolute/path/to/product", "run", "--silent", "mcp"]
[mcp_servers.naming_signal.env]
NAMING_SIGNAL_API_URL = "https://namingsignal.com"
NAMING_SIGNAL_API_KEY = "your-user-key"Call check_names for a small smoke test after restarting the agent.
Agent handoff
Use NamingSignal for this naming task. First read https://namingsignal.com/agent-guide.txt and https://namingsignal.com/openapi.json. Use https://namingsignal.com/api/v1/health for public service discovery. For protected REST calls, read NAMING_SIGNAL_API_KEY from the local environment and send it as "Authorization: Bearer $NAMING_SIGNAL_API_KEY"; never print, log, commit, or ask me to paste the secret into chat. If the variable is missing, ask me to create a free key at https://namingsignal.com/developers/keys and set it locally. Use one unique Idempotency-Key per logical POST and one X-Name-Ledger-Sprint value across a sprint. For feedback rounds, pass the founder's instruction plus likedNames and dislikedNames in generate.iteration, and pass the complete prior ledger in excludedNames. Preserve the complete evidence ledger, uncertainty, sources, timestamps, feedback rounds, usage, and quota data. Never describe RDAP not-found as guaranteed availability and never claim trademark clearance.Evidence semantics
A direct source returned decisive registered or exact-match evidence.
A calibrated registry not-found suggests likely unregistered at the check time.
Timeouts, blocks, unsupported providers, and conflicts stay unresolved.
A person must recheck current price, registrability, social access, or legal risk.