SuperAPI AI Directory

oathra

Oathra is an open-source (Apache-2.0) TypeScript runtime that lets AI agents make phone calls, negotiate, and complete bookings or orders. Its core characteristic is that the authority to determine completion does not lie with the model, but is instead determined by the "evidence" produced by the other party's speech—even if the AI says "booking successful," it is only recorded and does not count as evidence. It supports voice models such as GPT-Live and Gemini Live along with telephony lines such as Twilio, Plivo, and SIP, provides a simulator and practice mode, can be tried without an API key, and reports 0/10,000 false completions in adversarial testing.

Open website

About this tool

Oathra is an open-source (Apache-2.0, TypeScript) runtime that lets AI agents make phone calls, negotiate, and retrieve bookings or orders. It takes the determination of "whether the task is complete" out of the model's hands and gives it to code: fields such as date, number of people, amount, and whether it is confirmed are only filled in when the evidence extracted from the other party's speech is complete. The AI saying "confirmed" itself is only recorded and does not constitute evidence.

Purpose and positioning

  • Lets AI make calls to complete tasks such as bookings, orders, and confirmations, while avoiding "hallucinated completion."
  • The same runtime can run both in a simulator and connected to real telephony lines: first have AIs talk to each other in the browser, and after you are satisfied, connect to a phone company.
  • It can be used both as a standalone application (Gateway) and integrated into other systems via SDK, MCP server, and other methods.

Main capabilities

  • Completion determination: based on an "evidence engine" and deterministic completion determination logic; refusals, changes of statement, and vague responses each have rule-based handling (for example, "19:00 is full" will not generate 19:00 evidence; "the 13th, no, the 14th" retains the 14th and attaches the override history; "probably possible" does not count as consent and confirmation; if the other party later changes the price, the confirmation becomes invalid).
  • Call contract: CallContract defines the purpose of the call and required items; intake can add questions after obtaining explicit consent, and supports startAfter, dependsOn, and choices to control scenario branching and answer options; it stops immediately upon refusal, reservation, vagueness, being busy, or exceeding the options.
  • Simulation and practice: simulator, in-app practice mode (watch an AI call, or play the other party yourself and receive the AI's call), Battle cards, Replay, and rollback to a certain point in time.
  • Telephony layer: setup phone, phone doctor, three-level testing, line routing with fallback. Twilio direct connection (verified with real calls), Plivo and custom SIP (via LiveKit, implemented according to the documentation, PSTN not verified).
  • Voice engines: GPT-Live (recommended, verified with real calls), Gemini Live (gemini-3.8-live, real lines not verified), Deepgram + LLM + TTS; also Telnyx, Wavix, Sinch, ElevenLabs TTS.
  • Dual ASR for amounts and numbers, with a pipeline target latency of 650 ms.
  • MCP server: oathra mcp Provides simulate_call, verify_transcript, inspect_call, list_calls, and list_scenarios, all running locally without making real phone calls.
  • Omnichannel Gateway: requests and approvals can be initiated from LINE, Slack, Telegram, Web, and iOS, and after calls connect to Gmail / Calendar / SMS / HubSpot; implementations and offline tests already exist, real accounts and live routes are unverified, and the default is the simulator.
  • Evidence levels ActionProof: V0 (self-report) to V1 (conversation), V2 (verified email/SMS/Webhook), V3 (verified business systems), V4 (outcome report), comparing against the same expected value; external authentication and connections are the responsibility of the user's VerificationProvider / VerificationAdapter, and no actual connection adapters or credentials for OpenTable, TableCheck, or Google Reserve are included.
  • Judging "meeting-type" completion (confirmation: "callee_acceptance") resulted in zero false completions in adversarial testing of 10,000 sales conversations.

How to use

  • Quick trial (requires Node.js 22 or later, no API key or phone number needed): npx oathra demo opens the app; you can also try it in the browser "Evidence Lab" or the "Inspector" that judges local transcripts, and input is not uploaded. Note that the npm version pulled by npx oathra demo remains at 0.1.0, and the specific steps for running from source and the differences from the released version are described in docs/FIRST_PROOF.md.
  • Run from source: pnpm install && pnpm test. Scenarios are in scenarios/, store clerk roles are in providers/simulator/src/characters/, and a template for telephone companies can be generated with oathra provider create phone <id>.
  • Practice mode data is kept in .oathra/demo/, call records are kept in .oathra/calls/, and they can be reviewed in "Records" in the practice interface.
  • Startup parameters: --allow-remote (the sameOther devices on the network access it, requiring login via link), --tunnel (cloudflared / ngrok generates an external https address), --allow-models (during practice, OpenAI, Gemini, Ollama can be selected as the call AI; the conversation will be sent to the respective company and incur API fees), --live --tunnel (actually make phone calls using local keys).
  • play --json returns only JSON with result, intake, and the save path savedPath, without conversation logs or a title, making it easy to hand decision items to other business systems.
  • Verification and integration: oathra verify checks local transcription text; read the typed SDK from oathra/evidence, no API key required; integration steps and LiveKit connection examples are in the documentation.
  • MCP: oathra mcp is a stdio MCP server; a single tool call can run a simulated call and return evidence results bound to the other party's utterances, all running locally with no API keys and no fees; the tools do not include real dialing tools or parameters for optional paid LLMs. inspect_call passes the contents of .oathra/calls/ to the MCP client, so caution is needed when using it in a directory that contains real call records.
  • External AI requests real phone calls: can be integrated via Multibot / external agent (experimental), using a connection command to issue dedicated credentials and trial credits (10 times, max 5 minutes per call, 24 hours); the target number must be a verified personal number or explicitly specified.
  • Business MCP (public preparation in progress): view products and contacts in Claude Code and ChatGPT, draft sales calls, connect via OAuth, and dialing is confirmed by the person in the Oathra interface; fixed HTTPS deployment and actual connection confirmation with official clients have not yet been completed.

Application interface (apps/gateway) Includes home page, requests, schedule, practice, contacts, settings. In "Request Call", enter the other party, number, and purpose (including a "chit-chat" template or history), confirm the target and fee description before dialing (real dialing requires --live --tunnel or a Gateway running as a server). In "chit-chat", when news or public information is requested, OpenAI's web retrieval is used to verify it and attach the date and source.

Limitations and current status

  • Currently focused on technical introduction and verification-scope consultation (L1), which does not mean that paid PoC (L2) or production introduction (L3) has been completed. The success rate and p95 response time for 100 real phone calls have not yet been measured.
  • The service version (managed mode) has implemented public registration with email verification, password recovery, email-password login, Stripe Checkout purchase page/API, and one-time credit issuance after payment verification, etc., but verification in the real environment for email, payment, pricing, standing public availability, and the end-to-end flow from registration to purchase to actual call billing has not yet been completed; public registration and purchase are in an inactive state until the configuration is complete; SSO, MFA, and automatic refunds are not supported.
  • It does not guess the attributes of the call counterparty, nor covertly collect information beyond the purpose.
  • Fee reference (provided in the materials): Twilio calling a Japanese mobile phone ¥28.78/minute, GPT-Live session $0.05/minute.
  • All figures are measured by the project team themselves and can be reproduced using the commands in the text.