Agent skill

Phone Scout

by CALLE-AI in CALLE-AI/awesome-phone-call-agents

Research real-world businesses by phone. An agent skill from CALLE-AI/awesome-phone-call-agents.

MITAuto-check: notes

Install Phone Scout

skills CLI
$ npx skills add CALLE-AI/awesome-phone-call-agents --skill phone-scout -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install CALLE-AI/awesome-phone-call-agents phone-scout --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/phone-scout .claude/skills/phone-scout && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
phone-scout
GitHub stars
107
Token cost
~5.8k tokens
SKILL.md length
2,370 words
Files
5 (incl. scripts, references)
Skills in repo
101
Repo updated
First seen
Licence
MIT

At a glance

Research real-world businesses by phone. An agent skill from CALLE-AI/awesome-phone-call-agents.

  • Works in 4 steps: If the user's request is missing 3+… → If the user's request has all mandatory… → If the user pushes back ("just find me… → …
  • The user needs to compare places by real-time availability
  • SKILL.md covers When to use, When NOT to use, Interactive gathering (ask… and Error handling & recovery, plus 10 more sections
  • Runs Python scripts from its folder; calls python3 and pip; needs CALLE_API_KEY and GOOGLE_PLACES_API_KEY

What it does

Phone Scout is an agent skill from CALLE-AI/awesome-phone-call-agents. Research real-world businesses by phone. Use when the user needs to compare places by real-time availability, pricing, or features that only a phone call can verify.

Its SKILL.md is about 5.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts and reference files (for example `references/examples.md`, `references/safety.md` and `scripts/phone_scout.py`).

The repository describes itself as: Portable phone-call Agent Skills, apps, examples, adapters, and scheduler recipes for AI agents. The licence is MIT.

When your agent uses it

  • The user needs to compare places by real-time availability
  • Features that only a phone call can verify

Example prompts

  • “/phone-scout”

Requirements

  • Python 3
  • A credential in CALLE_API_KEY

Workflow steps

4 steps, taken from the first numbered list in SKILL.md.

  1. If the user's request is missing 3+ fields, ask one question at a time
  2. If the user's request has all mandatory fields, proceed to the plan
  3. If the user pushes back ("just find me something"), **default to broad
  4. Use identity details only for the approved request. Retaining them for later

What it can do on your machine

Read from SKILL.md and the folder at commit 38d4118. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • dashboard.heycall-e.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • CALLE_API_KEY
    • GOOGLE_PLACES_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Phone Scout loads about 5.8k tokens when it runs, and up to ~6.8k if it reads all its reference files. Until then it costs about 44 tokens; SKILL.md has 2,370 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~5.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:148
    api_key` | `CALLE_API_KEY` missing from `.env` | ❌ No | "Cannot place live calls — CALLE_API_KEY is missing. Set it in y

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from CALLE-AI/awesome-phone-call-agents at commit 38d4118, republished under its MIT licence (© CALLE-AI). 2,370 words, ~5,797 tokens.

Download SKILL.mdSave it as .claude/skills/phone-scout/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
phone-scout
description
Research real-world businesses by phone. Use when the user needs to compare places by real-time availability, pricing, or features that only a phone call can verify.
tags
research, phone, call, multi-agent, calle-ai

PhoneScout — Multi-Agent Phone Research

Research the real world by phone. Give PhoneScout a research objective like "find a restaurant for 8 tonight with vegetarian options under R500" and it discovers businesses, calls them through CALL-E, extracts structured results, verifies against your constraints, and returns an evidence-backed ranked recommendation.

PhoneScout thinks in terms of research objectives, not phone calls. Phone calls are the execution mechanism underneath the research workflow. When the user asks "find me…", "compare…", "research…" — NOT "call…" — this is the skill.

When to use

  • "Find me a restaurant in [city] for [N] people with [requirements]"
  • "Compare dentists near me that can see me this week for under R[amount]"
  • "Research hotels that have [feature] and check availability"
  • "Which [business type] in [area] can do [thing] before [deadline]?"

When NOT to use

  • Making a booking/reservation → use call-e-booking skill
  • Just looking up a phone number → web search / maps
  • One simple question about one business → direct CALL-E call via call-e-booking
  • General web research with no phone verification needed → web search

Interactive gathering (ask before calling)

The user rarely gives every detail upfront. Never guess or assume missing information. Ask follow-up questions until you have enough to build a well-scoped research plan. Ask the user for any missing fields below.

First-run setup (host-dependent preferences)

On every task, check the current request or consented host memory for these three keys. If any are missing, ask the user one question at a time. This CLI does not implement persistent memory; ask again when the host has not retained it:

Memory keyQuestion if missingWhy
currency"What currency do you usually use? R, $, €, £?"Budget prompts say $500 instead of R500
home_city"Which city are you in? (or where do you search most?)"Becomes the default when you don't mention a city
timezone"What timezone are you in? e.g. Africa/Johannesburg, America/New_York"Log timestamps match your local time

The host must explicitly pass preferences through CLI arguments or exported PHONE_SCOUT_CURRENCY / PHONE_SCOUT_DEFAULT_LOCATION / PHONE_SCOUT_TZ variables. The scripts do not automatically read host memory or create sessions.

Mandatory fields before discovery

These MUST be known before calling web_search.py or discover_candidates(). If any are missing, ask the user before proceeding.

FieldQuestionWhy it matters
Location"Which city or area?"Required — without it, search defaults and may return irrelevant results
Business type"What kind of business? Restaurant, dentist, salon…?"Determines which tags/place-types to search for
Max calls"How many places should I contact?"Caps call budget (default 3, override with --max-calls)
⏰ Timezone check (before ANY call)

Before placing a call, check the current local time at the destination. If it's outside business hours (roughly 8 AM – 8 PM local), warn the user:

"It's currently [time] in [city] — businesses are likely closed. Should I wait until [next reasonable window] or proceed anyway?"

Use the maps skill for quick timezone lookups:

bash
Use any timezone lookup (e.g. a maps skill or web search)

Do NOT silently dial a closed business — anonymous rings waste CALL-E credits.

What happens when location is missing

web_search.py checks whether a location was found. If not, it prints a warning: "Warning: could not geocode the location…". Google Places Text Search handles location natively (no geocoding needed); the OSM fallback uses the free Nominatim API.

The agent MUST:

  • Check if meta.location_geocoded is false
  • Warn the user: "I wasn't sure which city you meant — please include a city name."
  • Offer the user a chance to specify a city
FieldQuestion if missingDefault / fill from
Location (city, area)"Which area or city?"Memory: user's location
Party size"How many people?"None — must ask
Date / when"Tonight? A specific date? This week?""Tonight" is a reasonable default to suggest
Time preference"After what time? Or any specific time?""After now" for tonight; "anytime" otherwise
Budget ceiling"What's your max budget per person?"None — must ask (budget is a hard constraint)
Dietary needs"Any dietary requirements? Vegetarian, vegan, halal?"None — but "no dietary restrictions" is an answer
Max calls budget"How many places should I call? (default 3)"Default 3, overridable
FieldQuestion if missingDefault / fill from
Location (city, area)"Which area?"Memory: user's location
Type (GP, dentist, specialist)"What kind of doctor or clinic?"None — must ask
When (date range)"When do you need the appointment?""This week" is a reasonable default
Budget ceiling"Max budget per appointment?"None — must ask if constrained
Medical aid / insurance"Do you need a specific medical aid accepted?""No preference" if not mentioned
Escalation rules
  1. If the user's request is missing 3+ fields, ask one question at a time — don't dump a checklist.
  2. If the user's request has all mandatory fields, proceed to the plan immediately — don't nag for optional details.
  3. If the user pushes back ("just find me something"), default to broad constraints: tonight, any time, no dietary filter, wider location, no budget cap — and tell them what you defaulted so they can tighten it next time.
  4. Use identity details only for the approved request. Retaining them for later sessions requires user consent and host-managed storage, outside this CLI.

Error handling & recovery

Errors happen — nobody answers, networks drop, API keys expire. The skill must never crash silently or present a blank result. Every error has a predefined recovery path.

Error taxonomy

The call-one subcommand and search pipeline return errors in a standard shape: {"error": "<code>", "recoverable": <bool>, "user_action": "<what to tell>"}.

Error codeMeaningRecoverable?Agent action
no_candidates_foundDiscovery returned zero matching businesses✅ Yes"No businesses matched [location/constraints]. Should I widen the search area or relax constraints?" Offer the user "Widen location", "Drop budget cap", "Drop dietary filter"
no_answerBusiness rang but nobody picked up✅ Yes"Nobody answered at [name]. Retry in 10 min or skip?" Offer retry / skip
concurrency_limitShared line already has an active call✅ YesWait 30-60s for the active call to finish, then retry. If persistent, check for a stale call from a killed/timed-out process. Do NOT fire more calls — they'll all hit the same limit.
voicemailCall went to voicemail�️ Maybe"Reached voicemail at [name]. I can retry once more, or we can skip. A live person is needed for research." Offer retry once, then skip
call_blockedCarrier/region rejected the call❌ No"[Name]'s number was blocked by the carrier. This is usually a regional restriction. I'll mark it as unreachable and continue with other candidates."
timeoutCall created but never left queued or in_progress�️ Maybe"The call to [name] timed out before anyone answered. This can happen with busy lines. I'll hold the partial result. Retry or skip?" Offer retry / skip
no_api_keyCALLE_API_KEY missing from .env❌ No"Cannot place live calls — CALLE_API_KEY is missing. Set it in your environment."
calle_ai_not_installedcalle-ai package not in venv❌ No"The calle-ai SDK is not installed. Run: pip install calle-ai into the skill's .venv."
all_calls_failedEvery candidate returned an error — zero contacts✅ Yes"None of the [N] businesses answered. This is unusual. Possible causes: wrong numbers, region block, or network outage. Options: retry all, try different candidates, or check the phone numbers."
all_constraints_failedWe contacted businesses but none passed the constraints✅ Yes"[N] businesses answered but none met your constraints. #1 [name] was closest — [price/vegetarian/etc] was just outside. Should I show the near-misses anyway, or relax constraints?"
subagent_diedA delegated call-one sub-agent crashed or was killed�️ Maybe"One of the research calls crashed. [N-1]/[N] completed. I can show results from those that succeeded, or retry the failed one."
Recovery rules (agent must follow these)
  1. Partial results are results. If 3 of 5 calls succeeded, present the 3. Don't discard everything because of 2 failures.

  2. Retry once, then move on. If a business didn't answer, offer to retry once (after a 10-minute cooldown). If it fails again, mark it unreachable and proceed with remaining candidates.

  3. Don't burn the call budget. Each retry costs a CALLE credit. If the user's max_calls is 3 and 2 failed, don't retry both — pick the most promising 1 and retry that one.

  4. Escalate at 50%+ failure rate. If more than half the calls fail (everyone's closed, wrong region, network down), stop and tell the user: "Something is wrong — [X]/[Y] calls failed. This many failures suggests a systemic issue (wrong region, bad numbers, API problem). What should I do?"

  5. Always show what worked. Even if the recommendation is "no perfect match," show the best near-miss with its actual score. A user might relax a constraint when they see "R550/person, everything else perfect."

Show full SKILL.md (969 more words)Show less
Exit codes

call-one exits:

ExitMeaning
0Call completed (contacted or not — both are valid results)
1Fatal error (no API key, SDK missing, network unreachable)

The parent agent interprets exit codes. Exit 0 with "error": "no_answer" means "nothing went wrong, they just didn't pick up" — proceed with next candidate. Exit 1 means "stop everything, something is broken."

Delegation error survival

When running parallel sub-agent research:

  • If a sub-agent's call-one returns exit 0 (with any error code), the sub-agent result is valid — include it in the parent's ranking.
  • If a sub-agent crashes (exit 1, or Hermes kills it), that candidate is unreachable. The parent counts it as contacted: false.
  • The parent never cancels the entire batch because one child failed. Collect N-1 results, rank them, and present the best.

Quick-start (the agent runs this for you)

bash
PY="python3"
SCOUT="scripts/phone_scout.py"
PY="python3"  # or ./venv/bin/python3 if using venv  # venv with calle-ai installed

# Full pipeline (discover → call → verify → rank)
PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT search \
  --objective "Find me a restaurant in Johannesburg for 8 people tonight after 7pm. It needs vegetarian options and should cost less than R500 per person." \
  --max-calls 3

# Plan only (discovery only, no calls)
PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT search \
  --objective "dentist Manhattan New York teeth cleaning 7-13 September budget 500" \
  --plan-only

# After research, verify + rank in memory (no storage)
PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT verify --results-file /tmp/results.json --constraints '{"max_price":500}'
PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT rank   --results-file /tmp/results.json --constraints '{"max_price":500}'

Architecture

User Request (natural language)
        ↓
Research Planner   → required fields, constraints, max_calls
        ↓
Candidate Discovery → Google Places or OSM Overpass
        ↓
Candidate Selector → rank by likelihood, cap at --max-calls (default: top 3)
        ↓
Phone Research Agents (serial, one at a time)
        │  → CALLE in live mode
        ↓
Structured Extraction → JSON per business
        ↓
Verification Agent → checks each result against constraints
        ↓                detects conflicts, computes confidence
Ranking Agent → scored & ranked recommendation
        ↓
Evidence-backed result

Full JSON includes per-business structured_result, verification (check-by-check), ranking (score + reasons), recommendation (#1 match), and events (full timeline).

Generic by design (works for any vertical)

PhoneScout is not restaurant-specific. It treats a research task as a generic constraints → phone research → verify → rank pipeline:

  • Any constraint becomes a check. verify_result() dispatches each key in constraints to a checker. Built-in checkers cover party_size, vegetarian, vegan, halal, max_price_per_person, time_after, min_rating — and any unknown key falls back to a direct field match.
  • Required fields derive from constraints. plan_research() maps each constraint to the result field it needs (via CONSTRAINT_FIELD_MAP), so the live CALLE task and result schema are generated per-research, not hardcoded.
  • Result schema is auto-generated from the required fields.

Example: a dentist search

bash
python3 phone_scout.py search \
  --objective "Find a dentist in Manhattan New York who can see me this week for under $500 and accepts my insurance" \
  --max-calls 4

The planner would derive fields for max_price_per_person (→ price), accepts_medical_aid, and time_after; the verifier would check each; the ranker would score against whatever constraints were supplied.

Important principles

  1. Research-first design. The skill asks "what do I need to know?" not "who do I call?" Phone calls are an execution detail.
  2. Call the top 3 only. Discovery may return more candidates via Google Places, but only call the top 3 ranked by relevance (default --max-calls 3).
  3. Evidence over summary. Every result carries evidence snippets from the actual call, and verification shows the exact constraint checks.
  4. Information gathering only. Calls are read-only research. Do not book, reserve, or commit during a research call.
  5. Confidence over speed. A low-confidence result is surfaced as such rather than hidden.

Prerequisites

  • Python 3.9+ (stdlib only for phone_scout.py and web_search.py)
  • pip install calle-ai into a venv
  • CALLE_API_KEY in your environment
  • CALLE account with available credits
  • GOOGLE_PLACES_API_KEY in your environment (optional — adds phone numbers to discovery; without it, OSM Overpass is used)

Call execution (serial by default)

Default: shared line = 1 concurrent call. CALL-E's shared line allows only ONE active call at a time (author-observed on free-tier accounts; dedicated numbers calls makes N-1 fail with "account concurrency limit of 1". Serialize all calls by default — one call-one at a time.

Serial execution (the default)

Run call-one sequentially for each candidate using terminal(background=true) + process(action='wait'). This gives each call its own timeout, survives long hold times, and doesn't leave stale calls occupying the line if something goes wrong:

bash
PY="python3"  # or ./venv/bin/python3 if using venv
SCOUT="scripts/phone_scout.py"

for candidate in "${candidates[@]}"; do
  PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT call-one \
    --candidate-id "$id" --name "$name" --phone "$phone" \
    --research-questions "availability price booking_requirements" \
    --context "..." --pretty
  sleep 5  # small gap to ensure line is free
done

Agent pattern: use terminal(background=true, notify_on_complete=true) + process(action='wait') for each call. Do NOT use execute_code for sequential calls — if a call hangs and the script hits the 5-minute timeout, the CALLE call stays alive and blocks the shared line.

Concurrency pitfall: execute_code timeouts

execute_code has a 300s timeout. If a call-one invocation inside it creates a CALLE call that hangs (ringing, voicemail, hold queue), the script is killed but the CALLE call keeps running — occupying the shared line. Every subsequent attempt hits the concurrency limit until CALL-E's own timeout releases it (~2 minutes). Never batch sequential call-one calls inside execute_code. Use individual terminal(background=true) calls instead.

Future: parallel delegation (after KYC)

Once KYC is complete and a dedicated number is purchased at https://dashboard.heycall-e.com/account/numbers/buy (unlocks up to 10 concurrent calls), switch to parallel delegation:

Use the host's documented task API, not a Python API from this skill. Give each task one approved candidate, its authorized destination, research questions, and the selected interpreter plus the full path to scripts/phone_scout.py. Ask it to execute the approved call-one command and return masked JSON to the parent. Credentials must be inherited privately, never included in task text. This is an orchestration recipe, not executable host-independent delegation code.

Bounded by min(len(candidates), account_concurrency) at a time.

Full pipeline pattern the agent follows:

PHASE 1 — PLAN (parent, no delegation)
  PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT search --objective "..." --max-calls N --plan-only
  → returns the research plan + candidate list (no calls placed)
  Read candidates[].name, candidates[].phone, research_plan.required_fields

PHASE 2 — SERIAL PHONE CALLS (parent, one at a time)
  For each candidate, run `PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT call-one ...` sequentially:
    terminal(background=true, notify_on_complete=true)
    process(action='wait', timeout=180)
  Collect each result, then proceed to verification.
  Do NOT batch in execute_code — use individual background terminal calls.

PHASE 3 — VERIFY + RANK (parent, after all subagents finish)
  Save the collected results to a JSON file, then re-run verification + ranking
  over them and present the recommendation:

    PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT verify --results-file /tmp/results.json --constraints '{"party_size":8,"vegetarian":true,"max_price_per_person":500}'
    PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT rank   --results-file /tmp/results.json --constraints '{"party_size":8,"vegetarian":true,"max_price_per_person":500}'

  (Or, if the parent ran the one-shot `search` pipeline, just inspect the
   stdin: `PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT verify --results-file /tmp/r.json` / `rank --results-file /tmp/r.json`.\)

Phase 2 serial execution (the agent builds this from the candidate list):

For each candidate in order:
  1. Start background call:
     terminal(background=true, notify_on_complete=true,
       command="PY="python3"  # use venv python if calle-ai installed there
SCOUT="scripts/phone_scout.py"  # adjust to ./scripts/phone_scout.py or full path
$PY $SCOUT call-one
         --candidate-id \"<id>\" --phone \"<phone>\" --name \"<name>\"
         --research-questions availability price booking_requirements
         --context \"...\" --pretty")
  2. Wait for completion:
     process(action='wait', session_id=<id>, timeout=180)
  3. Parse JSON result, add to collected results
  4. Sleep 5s to ensure line is free, then next candidate

Rules:

  • One call at a time. Never fire multiple call-one invocations concurrently on the shared line — each subsequent call fails with the concurrency limit error.
  • Discovery + selection happen BEFORE calling. Run --plan-only first, then call only the selected candidates.
  • Each call is self-contained. Pass the exact research questions and context so each call asks targeted questions.
  • Collect all results, then verify + rank. Don't discard partial results.
  • call-e-booking — book the restaurant/clinic that PhoneScout recommends
  • google-workspace — write the recommendation to a Sheet or Doc

Configuration (env vars)

PhoneScout is fully configurable via environment variables — no code changes needed to run in a different city, country, or currency:

VariableDefaultPurpose
CALLE_API_KEY—Required for all live calls
GOOGLE_PLACES_API_KEY—Optional — enables Google Places for discovery (author-reported ~90% phone coverage). Falls back to OSM Overpass (free).
PHONE_SCOUT_CURRENCYRCurrency symbol prefix for budget prompts (e.g. $, €, £)
PHONE_SCOUT_TZAfrica/JohannesburgIANA timezone for log timestamps (e.g. America/New_York)
PHONE_SCOUT_DEFAULT_LOCATIONJohannesburgFallback city when none detected in objective
PHONE_SCOUT_MAX_CALLS3Default max businesses to contact

Minimal config for a new user in NYC:

bash
export PHONE_SCOUT_CURRENCY="$"
export PHONE_SCOUT_TZ="America/New_York"
export PHONE_SCOUT_DEFAULT_LOCATION="New York City"
export CALLE_API_KEY="..."
# Optional — adds phone numbers to discovery:
export GOOGLE_PLACES_API_KEY="..."

Scripts

  • scripts/phone_scout.py — main research orchestrator
    • search — full pipeline (discover → call → verify → rank)
    • call-one — research ONE business (used by sub-agents)
    • verify — re-run constraint verification on an explicit --results-file
    • rank — re-rank an explicit --results-file; no stored-session lookup
  • scripts/web_search.py — keyless business discovery (Google Places if an API key is exported, else OSM Overpass). Export GOOGLE_PLACES_API_KEY explicitly; do not assume a host environment file is loaded.

© CALLE-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (scripts, references) in skills/phone-scout of CALLE-AI/awesome-phone-call-agents.

  • SKILL.md
  • references/examples.md
  • references/safety.md
  • scripts/phone_scout.py
  • scripts/web_search.py

Open the folder on GitHubat commit 38d4118

Compare with similar skills

Phone Scout next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Phone Scout compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Phone Scout this skillCALLE-AI/awesome-phone-call-agents107—~5.8kAutomated safety check: NotesMIT
PhoneBlockRunAI/ClawRouter6.6k—~2.4kAutomated safety check: PassMIT
Agent Scout Explorerruvnet/ruflo74k2 repos~1.6kAutomated safety check: PassMIT
Local Businessthedaviddias/Front-End-Checklist74k—~589Automated safety check: PassMIT
Skill Scoutaffaan-m/ECC277k1 repos~1.1kAutomated safety check: PassMIT
Skill Scoutaffaan-m/ECC276k—~735Automated safety check: PassMIT

Similar skills

  • Phone

    BlockRunAI/ClawRouter

    Verify phone numbers (carrier + SIM-swap fraud signals) and place AI-powered outbound voice calls via BlockRun's gateway (Twilio + Bland.ai).

    6.6k GitHub stars~2.4k tokensUpdated 6 days ago
    Auto-check passed
  • Agent skill for scout-explorer - invoke with $agent-scout-explorer

    74k GitHub starsUsed in 2 repos~1.6k tokens
    Auto-check passed
  • Local Business

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing a local business website's structured data.

    74k GitHub stars~589 tokensUpdated 5 days ago
    Marketing & SEOAuto-check passed
  • Skill Scout

    affaan-m/ECC

    Search existing local, marketplace, GitHub, and web skill sources before creating a new skill.

    277k GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Skill Scout

    affaan-m/ECC

    新しいスキルを作成する前に、ローカル・マーケットプレイス・GitHub・Webの既存スキルを検索する。スキルの作成・ビルド・フォーク・検索を行う際に使用。

    276k GitHub stars~735 tokensUpdated yesterday
    Auto-check passed
  • Business Continuity

    sickn33/agentic-awesome-skills

    Develop business continuity plans and impact analysis. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~4.1k tokens
    DevOps & CloudAuto-check passed

More from CALLE-AI/awesome-phone-call-agents

All 101 skills in this repo
  • Accessible Outing Verifier

    CALLE-AI/awesome-phone-call-agents

    Demonstrates advisory accessibility-planning checks with offline fixtures and a proposed bounded CALL-E workflow; use for exploring unknown or qualified venue claims without making calls.

    107 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Ground Truth Gate

    CALLE-AI/awesome-phone-call-agents

    A skill your agent uses when an agent holds some evidence for a physical-world claim but the evidence is broader, narrower, or older than the exact question asked, and it must first decide whether a…

    107 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Is It Accessible

    CALLE-AI/awesome-phone-call-agents

    Call a venue and ask the accessibility questions that matter to one specific person — step-free entry, hearing loop, guide dogs, quiet hours, changing places — then return a per-need verdict backed…

    107 GitHub stars~4.3k tokensUpdated yesterday
    Auto-check passed
  • Landmark Navigation Assist

    CALLE-AI/awesome-phone-call-agents

    Turns a pre-written, building-level location config into a CALL-E outbound phone-call task that guides a delivery driver through the last few hundred metres to a specific building using landmarks…

    107 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Research Gap Call Verifier

    CALLE-AI/awesome-phone-call-agents

    Turn cited business research into a bounded, approval-gated phone-call plan that asks only unresolved factual questions, then reconcile CALL-E-compatible results without treating voicemail, refusal…

    107 GitHub stars~1.7k tokensUpdated yesterday
    Auto-check passed
  • Structured Outcome Followup Call

    CALLE-AI/awesome-phone-call-agents

    Place a goal-driven CALL-E call that collects specific structured answers, score those answers against a deterministic rubric you supply, and conditionally trigger a follow-up action — all runnable…

    107 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed

Questions about Phone Scout

What does Phone Scout do?

Research real-world businesses by phone. An agent skill from CALLE-AI/awesome-phone-call-agents. Phone Scout is an agent skill from CALLE-AI/awesome-phone-call-agents. Research real-world businesses by phone.

When should I use Phone Scout?

Phone Scout fits situations like: the user needs to compare places by real-time availability; features that only a phone call can verify.

How do I install Phone Scout in Claude Code?

Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill phone-scout -a claude-code`. Or copy the skill folder (skills/phone-scout in CALLE-AI/awesome-phone-call-agents) into .claude/skills/phone-scout in your project. Claude Code loads it when a task matches its description.

How do I install Phone Scout in Codex?

Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill phone-scout -a codex`. Or copy the skill folder (skills/phone-scout in CALLE-AI/awesome-phone-call-agents) into .agents/skills/phone-scout in your project. Codex loads it when a task matches its description.

Can I use Phone Scout in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add CALLE-AI/awesome-phone-call-agents --skill phone-scout -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/phone-scout, .gemini/skills/phone-scout, .github/skills/phone-scout and .opencode/skills/phone-scout in your project.

What does Phone Scout need to run?

Going by SKILL.md and its folder, Phone Scout needs Python for the scripts in its folder, the command-line tools its instructions call (python3 and pip) and credentials named CALLE_API_KEY and GOOGLE_PLACES_API_KEY. Our summary lists: Python 3; A credential in CALLE_API_KEY.

Does Phone Scout access the network?

SKILL.md names 1 domain. As links in the text: dashboard.heycall-e.com. This is read from the text; nothing was executed.

Is Phone Scout safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Phone Scout use?

Phone Scout is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Phone Scout use?

About 5.8k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1k tokens, read only when the agent opens those files.

What are the alternatives to Phone Scout?

Skills that share tags, products or a category with Phone Scout: Phone (BlockRunAI/ClawRouter, 6.6k stars), Agent Scout Explorer (ruvnet/ruflo, 74k stars), Local Business (thedaviddias/Front-End-Checklist, 74k stars) and Skill Scout (affaan-m/ECC, 277k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Phone Scout?

CALLE-AI (a GitHub organization) maintains it in CALLE-AI/awesome-phone-call-agents, which has 107 GitHub stars. The repository holds 101 skills in this directory. The repository was last updated on October 10, 2026.

Source: CALLE-AI/awesome-phone-call-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.