.claude/skills/tamradar/SKILL.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://docs.tamradar.com/agentic/tamradar-skill.md
TAMradar Monitoring
Full instructions: https://docs.tamradar.com/agentic/tamradar-agent.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_KEYin 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
- updates_since: optional โ include only when the user explicitly requests historical data or supplies an earliest date; require RFC 3339 with timezone, never use a future value, and never invent one
- include_historical: deprecated โ do not send it; use
updates_since - Persistence: save
(domain, radar_type, radar_id)to./tamradar-radars.jsonlafter every 201 - Idempotency: check
./tamradar-radars.jsonlbefore 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 โ read
errors[0].conflicting_radar_id, store it, move on - Polling response: field is
updates[]โ notdata[] - Polling cap: max 10
radar_idvalues per call โ split into multiple requests if needed
Flow
Endpoint reference (machine-readable)
https://docs.tamradar.com/api-reference/create-company-radar.mdhttps://docs.tamradar.com/api-reference/create-contact-radar.mdhttps://docs.tamradar.com/api-reference/create-industry-radar.mdhttps://docs.tamradar.com/api-reference/poll-updates.mdhttps://docs.tamradar.com/api-reference/account.md
Pre-flight
balance_remaining_usd == 0 โ STOP ยท < 5 โ WARN and confirm ยท >= 5 โ proceed
Create โ company
https://www.openai.com/about โ normalized to openai.com). Best practice: bare domain.
Create โ contact
contact_job_changes, use an individual email or a LinkedIn /in/ person
profile; role-based/shared emails and company, school, or /pub/ LinkedIn URLs
are rejected. Within the same domain and radar type, either an email match or a
normalized profile URL match returns 409; full_name alone is not a duplicate
key. Read errors[0].field to see whether identifiers.email or
identifiers.profile_url matched.
Create โ industry
Persist after every 201
Poll for findings
has_more: true โ fetch ?cursor={next_cursor}. Findings retained 60 days.