stdin: {"id":1,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"clientInfo":{"name":"toolwitness","version":"s772-v0"},"protocolVersion":"2025-11-25"}} {"jsonrpc":"2.0","method":"notifications/initialized"} {"id":2,"jsonrpc":"2.0","method":"tools/list","params":{}} stdout: {"result":{"protocolVersion":"2025-11-25","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"callmcp-server","version":"0.1.0"}},"jsonrpc":"2.0","id":1} {"result":{"tools":[{"name":"list_drivers","description":"Read-only capability introspection. Call before assuming any other tool's behavior (SPEC §1.1).","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"request_call_approval","description":"Creates a pending human authorization for a destination, allowlist entry, or campaign batch (SPEC §1.2). Fires MCP elicitation when supported; otherwise returns an out-of-band approval URL.","inputSchema":{"type":"object","properties":{"scope":{"type":"string","enum":["single_call","allowlist_add","campaign_batch"]},"destinations":{"type":"array","items":{"type":"string","description":"E.164 phone number, or a wildcard pattern for allowlist_add e.g. '+1415555....'"},"minItems":1},"purpose":{"type":"string","description":"human-readable reason shown in the elicitation/approval UI"},"channel":{"type":"string","enum":["voice","sms","whatsapp","rcs"],"default":"voice"},"campaign_max_contacts":{"type":"integer","minimum":1,"description":"required when scope=campaign_batch"},"ttl_seconds":{"type":"integer","minimum":60,"default":86400,"description":"see SPEC §3.2 for tier defaults"},"driver":{"type":"string"},"options":{"type":"object","additionalProperties":{"type":"object"},"description":"namespaced driver-specific passthrough, keyed by driver_id"}},"required":["scope","destinations"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"list_approvals","description":"Read-only. Returns pending approvals, allowlist entries, and active campaign grants (SPEC §1.3).","inputSchema":{"type":"object","properties":{"state":{"type":"string","enum":["pending","approved","denied","expired","any"],"default":"any"},"scope":{"type":"string","enum":["single_call","allowlist_add","campaign_batch","any"],"default":"any"},"driver":{"type":"string"},"cursor":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"make_call","description":"Places an outbound call (SPEC §1.4). Requires a valid, unexpired approval_id or an allowlist match; otherwise the server elicits approval inline rather than dialing.","inputSchema":{"type":"object","properties":{"to":{"type":"string","description":"E.164 destination number"},"from":{"type":"string","description":"E.164 caller-id number; if omitted, driver default number is used"},"driver":{"type":"string"},"approval_id":{"type":"string","description":"omit only if `to` matches a standing allowlist entry"},"agent_config_ref":{"type":"string","description":"opaque reference to an already-configured agent/assistant"},"max_duration_seconds":{"type":"integer","minimum":1},"metadata":{"type":"object","additionalProperties":true},"options":{"type":"object","additionalProperties":{"type":"object"},"description":"namespaced driver-specific passthrough, keyed by driver_id"}},"required":["to"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true},"execution":{"taskSupport":"optional"}},{"name":"end_call","description":"Terminates an in-progress call (SPEC §1.5). Capability-gated by supports_hangup.","inputSchema":{"type":"object","properties":{"call_id":{"type":"string"},"reason":{"type":"string"}},"required":["call_id"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":true}},{"name":"get_call_status","description":"Read-only poll fallback for clients that don't subscribe to resource updates (SPEC §1.6).","inputSchema":{"type":"object","properties":{"call_id":{"type":"string"}},"required":["call_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_transcript","description":"Returns a call's transcript, inline or as a subscribable resource link (SPEC §1.7).","inputSchema":{"type":"object","properties":{"call_id":{"type":"string"},"format":{"type":"string","enum":["inline","resource_link"],"default":"inline"}},"required":["call_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_recording","description":"Returns a resource link to the call's audio recording (SPEC §1.8). Capability-gated by supports_recording.","inputSchema":{"type":"object","properties":{"call_id":{"type":"string"}},"required":["call_id"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"send_sms","description":"Sends an outbound message over SMS, WhatsApp, or RCS (SPEC §1.9). Capability-gated; approval-gated like make_call.","inputSchema":{"type":"object","properties":{"to":{"type":"string"},"from":{"type":"string"},"channel":{"type":"string","enum":["sms","whatsapp","rcs"],"default":"sms"},"body":{"type":"string","maxLength":4096},"media_urls":{"type":"array","items":{"type":"string"}},"approval_id":{"type":"string"},"driver":{"type":"string"},"options":{"type":"object","additionalProperties":{"type":"object"},"description":"namespaced driver-specific passthrough, keyed by driver_id"}},"required":["to","body"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}},{"name":"search_numbers","description":"Read-only search for purchasable phone numbers (SPEC §1.10).","inputSchema":{"type":"object","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2"},"area_code":{"type":"string"},"capabilities_required":{"type":"array","items":{"type":"string","enum":["voice","sms","mms","whatsapp"]}},"driver":{"type":"string"},"cursor":{"type":"string"}},"required":["country"],"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"buy_number","description":"Purchases a phone number (SPEC §1.11). Spends money but does not contact a third party, so no human approval gate.","inputSchema":{"type":"object","properties":{"number":{"type":"string","description":"a number returned by search_numbers"},"driver":{"type":"string"},"compliance":{"type":"object","additionalProperties":true},"options":{"type":"object","additionalProperties":{"type":"object"},"description":"namespaced driver-specific passthrough, keyed by driver_id"}},"required":["number"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true}},{"name":"configure_number","description":"Updates routing/configuration for an already-owned number (SPEC §1.12).","inputSchema":{"type":"object","properties":{"number":{"type":"string"},"driver":{"type":"string"},"agent_config_ref":{"type":["string","null"]},"sms_webhook_url":{"type":["string","null"]},"caller_id_name":{"type":["string","null"]},"options":{"type":"object","additionalProperties":{"type":"object"},"description":"namespaced driver-specific passthrough, keyed by driver_id"}},"required":["number"],"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_numbers","description":"Read-only inventory of owned numbers (SPEC §1.13).","inputSchema":{"type":"object","properties":{"driver":{"type":"string"},"cursor":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_calls","description":"Read-only call history/inventory (SPEC §1.14).","inputSchema":{"type":"object","properties":{"driver":{"type":"string"},"since":{"type":"string"},"until":{"type":"string"},"status":{"type":"string","enum":["queued","ringing","in_progress","completed","failed","no_answer","busy","canceled","any"],"default":"any"},"cursor":{"type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}}]},"jsonrpc":"2.0","id":2}