← SpekoCONTENT HISTORY

Update to Speko

Snapshot Sep 30, 2026 · 22:57 UTC · version 2.1.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "name": "speko-phone-call",
  "description": "Place a real outbound phone call through Speko and read back what was said. Use when the user wants someone actually called on the telephone — booking, confirming, chasing, asking a business a question — or wants to rehearse such a call first, or wants to review a call that already happened.",
  "included_files": [],
  "skill_md_contents": "---\nname: speko-phone-call\ndescription: Place a real outbound phone call through Speko and read back what was said. Use when the user wants someone actually called on the telephone — booking, confirming, chasing, asking a business a question — or wants to rehearse such a call first, or wants to review a call that already happened.\n---\n\n# Placing a phone call with Speko\n\nSpeko dials a real phone number with a voice agent, stays on the line, and returns a transcript and\na recording when the call ends. This skill covers the whole loop: decide who to call, rehearse,\nconfirm, dial, watch, read back.\n\n## When this applies\n\nUse it when the user wants a real telephone call made or reviewed. Phrases that mean this: \"call\nthem\", \"ring the clinic\", \"book me a table\", \"chase the quote\", \"find out if they're open\", \"what\ndid they say on that call\", \"rehearse this call first\".\n\nDo **not** use it to send a message, an email or a text — Speko is voice on the telephone network.\n\n## Before you dial: three things, every time\n\n**1. Read the number back.** Say the full E.164 number out loud in your reply — `+14155550142`, not\n\"the dentist\". A wrong digit means a stranger's phone rings.\n\n**2. Say what the call is for.** One sentence, in the user's words, so they can catch a\nmisunderstanding before it is spoken to a person.\n\n**3. Get an explicit yes.** One confirmation, one call. Never batch. If the user asks for several\nnumbers, take them one at a time with a separate confirmation each, and say that is what you are\ndoing.\n\nIf the user has not given a number — only a business name — ask for it. Do not guess a number and\ndo not look one up and dial it without showing it first.\n\n## Rehearsing first\n\nWhen the call matters, or the user seems unsure what the agent should say, offer\n`agents.test_call` before `sessions.phone.create`. It runs the whole conversation between the agent\nand a synthesized caller inside Speko, with **no phone leg at all** — nobody's phone rings. Pass\nthe user's goal as `objective`.\n\nIt returns session ids immediately and the conversation runs in the background. Poll `calls.get`\nwith the agent session id until it ends, then read `sessions.transcript.get`. Show the user that\ntranscript and ask whether to make the real call.\n\n## Making the call\n\nUse `sessions.phone.create`. The body needs `to` in E.164 form, plus either an `agentId` from\n`agents.list` or an `intent` naming the language — for example\n`{\"to\": \"+14155550142\", \"intent\": {\"language\": \"en\"}}`. Put what the agent should accomplish in\n`systemPrompt`.\n\nThe call opens by disclosing it is an AI. That is applied server-side and is not yours to remove or\nsoften; if the user asks you to hide it, say plainly that Speko always discloses.\n\nIf the account owns more than one number, `phone_numbers.list` shows which ones can be used as\n`from`. Leave it unset to use the default.\n\nCalls are recorded by default, and `sessions.recording.get` returns the audio afterwards. Say so\nwhen you confirm the call — \"this will be recorded\" — because many places require everyone on a\ncall to know. If the user would rather not have a recording, say that recording is controlled in\nthe Speko dashboard rather than from here.\n\n## Watching and reading back\n\n`sessions.phone.create` returns a session id and comes back before the call is over. Poll\n`sessions.get` with that id. When it has ended:\n\n- `sessions.transcript.get` — what was actually said, both sides\n- `sessions.recording.get` — a signed URL to the audio\n\nSummarise the outcome first — did the thing the user wanted happen? — then offer the transcript.\nDo not paraphrase a commitment the other party did not make; quote them.\n\n`sessions.list` finds earlier calls when the user asks about one that already happened.\n\n## Building an agent for a repeated call\n\nFor a one-off, pass `systemPrompt` straight to `sessions.phone.create` — no agent needed. When the\nuser will make the same kind of call repeatedly, create one:\n\nCall `agents.preview_stacks` with a one-line description of the job. It returns three options —\n**Quality**, **Fastest**, **Cheapest**. Show all three with their speech, language-model and voice\npicks and ask the user which they want. Do not choose for them. Then call `agents.create` with\n`intent.optimizeFor` set to `quality`, `latency` or `cost` to match.\n\n## Transcribing and speaking\n\n`audio.transcribe` turns audio into text. It takes an **HTTPS URL**, not an uploaded file — the\nsigned URLs from `sessions.recording.get` and `calls.recording.get` work directly, which is the\ncommon case. If the user has a file rather than a link, say so plainly and ask for a link; do not\npretend to have read audio you could not fetch.\n\n`audio.synthesize` speaks text in one of Speko's catalogue voices, including languages and voices\nChatGPT cannot produce itself. Pass the language in `intent` and Speko routes to a voice on its own,\nso you never have to pick one — but when the user asks what is available, or wants a particular\nkind of voice, call `voices.list` and show them rather than guessing. `models.list` answers the same\nquestion for speech-to-text, language and text-to-speech models.\n\nSynthesis selects from the published catalogue; it does not clone a voice and takes no reference\naudio. If someone asks you to make it sound like a specific person, say that is not something Speko\ndoes.\n\n## What Speko will not do here\n\nBuying a phone number, changing a plan and reading account credit are not available in ChatGPT —\nsend the user to the Speko dashboard for those. Deleting agents, numbers or knowledge bases is not\navailable either. Bulk, scheduled and unattended calling do not exist on this surface by design:\nevery call is one explicit request the user confirmed.\n\n`docs.search` answers questions about how Speko itself works.\n"
}

SHA-256: 4f956a44b18f0e6a894d7382a94b316d10cf259107619ba733131f8d59d5bded