Documentation Index
Fetch the complete documentation index at: https://docs.tamradar.com/llms.txt
Use this file to discover all available pages before exploring further.
๐ค For humans
This is a Claude Code skill file. Save it as .claude/skills/tamradar.md in your project. Claude Code will load it automatically when you mention TAMradar, or invoke it directly with /tamradar.
Give this link to your agent: https://tamradar.readme.io/reference/claude-skillmd.md
Note for readme.io viewers: If copying from this page, --- YAML fences may render as *** โ replace them with --- when saving locally.
TAMradar Monitoring
Full instructions: https://tamradar.readme.io/reference/tamradar-agentmd.md
Base URL: https://api.tamradar.com ยท Auth: x-api-key: $TAMRADAR_API_KEY on every request โ no Bearer prefix
Key Rules
- Auth: check
$TAMRADAR_API_KEY in env first โ if unset, ask the user
- webhook_url: optional โ omit for poll-only radars (default); include only if the user provides a real webhook URL for push delivery
- Persistence: save
(domain, radar_type, radar_id) to ./tamradar-radars.jsonl after every 201
- Idempotency: check
./tamradar-radars.jsonl before every POST โ skip if already exists
- Singles vs bulk: โค10 targets โ single POSTs; >10 โ
POST /v1/radars/bulk (async queue, max 1000 items per request)
- 409 is not an error โ extract
radar_id from errors[0].reason, store it, move on
- Polling response: field is
updates[] โ not data[]
- Polling cap: max 10
radar_id values per call โ split into multiple requests if needed
- Filters: omit = all; empty array
[] = 400 error; departments + seniorities = AND across, OR within
- Filter values: NEVER invent โ use only the exact values in the full doc or you get 400
1. PRE-FLIGHT โ GET /v1/account (check balance โ block if $0)
2. CREATE โ POST /v1/radars/companies (company signals)
POST /v1/radars/contacts (person signals)
POST /v1/radars/industry (industry-wide signals)
POST /v1/radars/bulk (>10 targets)
3. RETRIEVE โ GET /v1/updates
4. MANAGE โ DELETE /v1/radars/:id
Pre-flight
curl -s "https://api.tamradar.com/v1/account" -H "x-api-key: $TAMRADAR_API_KEY"
{
"data": {
"balance_remaining_usd": 42.50,
"account": { "active_radars": 12, "total_updates_found": 3847 },
"usage": { "month": "2026-05", "balance_used_usd": 7.50, "updates_found": 142 }
}
}
balance_remaining_usd == 0 โ STOP ยท < 5 โ WARN and confirm ยท >= 5 โ proceed
Create โ company
curl -s -X POST "https://api.tamradar.com/v1/radars/companies" \
-H "x-api-key: $TAMRADAR_API_KEY" -H "Content-Type: application/json" \
-d '{
"domain": "openai.com",
"radar_type": "company_job_openings",
"departments": ["Engineering"],
"seniorities": ["Senior", "Director"],
"custom_fields": { "crm_account_id": "001" }
}'
Domain accepts any format (https://www.openai.com/about โ normalized to openai.com). Best practice: bare domain.
curl -s -X POST "https://api.tamradar.com/v1/radars/contacts" \
-H "x-api-key: $TAMRADAR_API_KEY" -H "Content-Type: application/json" \
-d '{
"radar_type": "contact_job_changes",
"domain": "openai.com",
"profile_url": "https://www.linkedin.com/in/samaltman",
"full_name": "Sam Altman",
"custom_fields": { "crm_contact_id": "003" }
}'
Create โ industry
curl -s -X POST "https://api.tamradar.com/v1/radars/industry" \
-H "x-api-key: $TAMRADAR_API_KEY" -H "Content-Type: application/json" \
-d '{ "radar_type": "industry_funding_rounds" }'
Persist after every 201
echo '{ "input_domain": "openai.com", "input_radar_type": "company_job_openings", "radar_id": "c70813b3-...", "created_at": "2026-05-01T09:05:00Z" }' \
>> ./tamradar-radars.jsonl
Poll for findings
# By radar ID (max 10 IDs)
curl -s "https://api.tamradar.com/v1/updates?radar_id=id1,id2&limit=50" \
-H "x-api-key: $TAMRADAR_API_KEY"
# Incremental โ store discovered_at from last result, pass as since
curl -s "https://api.tamradar.com/v1/updates?since=2026-05-01T08:00:00Z&limit=100" \
-H "x-api-key: $TAMRADAR_API_KEY"
{
"updates": [
{
"update_id": "550e8400-...",
"update_type": "radar_finding",
"discovered_at": "2026-05-01T08:30:00Z",
"data": { "radar_id": "c70813b3-...", "radar_type": "company_job_openings", "domain": "openai.com" },
"content": { }
}
],
"has_more": false,
"next_cursor": null
}
Paginate: while has_more: true โ fetch ?cursor={next_cursor}. Findings retained 60 days.
Error handling
| Code | Action |
|---|
401 | STOP โ ask user to verify API key |
402 | STOP โ tell user to add funds |
409 | Extract radar_id from errors[0].reason, store, continue |
400 | Show errors[].reason verbatim, ask user to fix |
429 | Wait, retry max 3ร |
5xx | Retry once, then STOP and report error_id |
Summary (always present when done)
TAMradar setup complete.
Balance: $X.XX remaining
Radars active:
company_job_openings ยท openai.com ยท c70813b3-...
contact_job_changes ยท Sam Altman ยท a4f28c91-... (already existed โ skipped POST)
industry_funding_rounds ยท โ ยท f9d01c55-...
Failures: None
Mapping saved to: ./tamradar-radars.jsonl
Poll now: GET /v1/updates?radar_id=c70813b3-...,a4f28c91-...&limit=50
(max 10 IDs per call โ split if needed)
Findings retained 60 days.