title: Tools-First Deficit — Building Before Checking Available SDKs

what: Genesis repeatedly builds custom curl wrappers, raw HTTP clients, and fragile glue code for services that already have fully-typed, production-grade Python SDKs installed in the venv. Telnyx SDK example: .venv_telnyx had assistants.create(), available_phone_numbers.list(), phone_numbers.update() — yet we were using raw curl calls patched into widget_routes.py.

why: No systematic capability audit at the START of building. The Check-Existing-First protocol (Rule 16) is applied to files and KG entities, but not to INSTALLED PACKAGES AND SDKs. There was no step that said: before writing any API integration code, run pip list and read the SDK docs.

root_cause: Rule 16 (Check-Existing-First) does not explicitly include: check .venv, pip list, installed SDKs, and node_modules before writing any integration. The protocol stops at files, skills, and KG — it misses the runtime environment.

guardrail_added: MANDATORY pre-build SDK audit: before ANY external API integration, run: source .venv_telnyx/bin/activate && python -c 'import telnyx; help(telnyx.Telnyx)' — or equivalent for the relevant service. If SDK exists, USE IT.

rule_updated: Rule 16 — CHECK-EXISTING-FIRST now explicitly includes: (6) SDKs — does a pip package exist for this service? Check .venv*, pip list, package.json. Use the SDK, not raw HTTP.

never_again: We will NEVER write raw curl/requests code for a service that has an official SDK installed. Tools at our feet = always check the ground before digging.


axiom: Phone-first debugging: ALWAYS resolve phone_number → connection_id → assistant_id chain before ANY assistant PATCH. Never trust assistant IDs from memory when debugging a specific phone number.

rule_triggered: Rule 14 (Failure Evolution)


axiom: Three-way token verification: When MCP connects Service A (Telnyx token_auth) to Service B (CF Worker API_TOKEN) via Service C (.dev.vars), all three MUST be verified identical. Test with curl immediately after configuration.


axiom: Voice model golden path: Default to google/gemini-2.5-flash + llm_api_key_ref for ALL Telnyx voice assistants. Qwen models may work for text but are unvalidated for real-time voice pipeline. Copy working config, don't experiment on live numbers.


axiom: Phone number parity checklist: After provisioning any Telnyx number, compare its config against the working reference number. Mandatory fields: hd_voice_enabled=true, correct connection_id, noise_suppression settings.


axiom: Multi-service auth chain verification: When Service A calls Service B calls Service C, there are N-1 auth boundaries. After ANY secret change, test EVERY boundary independently AND the full chain end-to-end. One untested link = silent failure.


axiom: Every single Genesis production bottleneck can be solved by an existing or potentially buildable MCP. Most likely it already exists. This is a testable hypothesis — track every bottleneck against MCP resolution to prove/disprove.

rule_triggered: Rule 22 (MCP-First Bottleneck Resolution)

evidence_summary: Telnyx MCP (existed, unused), GHL 253-tool MCP (compiled, never activated), Stripe MCP (5-min install, never done), Cloudflare 13 MCPs (never configured), ElevenLabs MCP (never configured), VTB MCP SSE (was the bottleneck), Knowledge MCPs (connected but underused)


axiom: MCPs are the universal adapter layer of the agentic OS. Every gap in MCP coverage is a production bottleneck waiting to happen. Every MCP configured is a bottleneck CLASS permanently eliminated — not just one instance.


axiom: Rule 22 is the synthesis of Rules 16 (Check-Existing-First) + 18 (Platform-First) + lived debugging experience. The pattern: bottleneck occurs → hours of custom debugging → discovery that an MCP existed all along. The fix: invert the order — check MCP first, debug second.

rule_triggered: Rule 14 (Failure Evolution) + Rule 22


axiom: GOLDEN VOICE CONFIG: Every Telnyx assistant MUST use Telnyx.NaturalHD.eucalyptus + deepgram/nova-3 + noise_suppression disabled + hd_voice_enabled true + eot_threshold 0.5 + eot_timeout_ms 8000 + google/gemini-2.5-flash. Deviation = broken pipeline. krisp suppresses caller voice. deepgram/flux is unreliable. Qwen models are unvalidated for voice.

rule_triggered: Kinan directive 2026-02-27 — hardwire HD voice eucalyptus always