Skip to main content
👤 For humans This is a Claude Code skill file. Save it as .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_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
  • 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.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 — read errors[0].conflicting_radar_id, 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

Flow

Endpoint reference (machine-readable)

  • https://docs.tamradar.com/api-reference/create-company-radar.md
  • https://docs.tamradar.com/api-reference/create-contact-radar.md
  • https://docs.tamradar.com/api-reference/create-industry-radar.md
  • https://docs.tamradar.com/api-reference/poll-updates.md
  • https://docs.tamradar.com/api-reference/account.md

Pre-flight

balance_remaining_usd == 0 → STOP · < 5 → WARN and confirm · >= 5 → proceed

Create — company

Domain accepts any format (https://www.openai.com/about → normalized to openai.com). Best practice: bare domain.

Create — contact

For 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

Paginate: while has_more: true → fetch ?cursor={next_cursor}. Findings retained 60 days.

Error handling

Summary (always present when done)