MCP server for ClawdCall's agent-facing phone execution API.
Server has 4 well-defined tools with complete input schemas and descriptions. Tools use verb_noun naming conventions (send_signup_otp, verify_signup_otp, place_outbound_call, get_call_transcript). All parameters have Zod type constraints and descriptions. However, tool descriptions lack WHEN/WHY guidance and don't explicitly state side effects (WRITE vs READ). Output schemas are not documented, LLMs cannot anticipate response structure. Error handling is minimal. Missing dependency documentation (e.g., verify_signup_otp depends on send_signup_otp). Security: API key injection via CLAWDCALL_API_KEY env var is correct, but tool descriptions don't warn about authentication requirements clearly. Tools are well-composed (one responsibility each) and naming is action-oriented.
Fetch a ClawdCall transcript by call ID or campaign ID. Requires CLAWDCALL_API_KEY.
Place an outbound ClawdCall agent call. Requires CLAWDCALL_API_KEY.
Send a ClawdCall signup phone verification OTP. Does not require an API key.
Verify a ClawdCall signup OTP and receive account/API-key details. Does not require an existing API key.
Tool descriptions lack state-mutation clarity. send_signup_otp and verify_signup_otp descriptions do not explicitly state they create accounts/API keys (WRITE operations with side effects). LLMs need to know which tools are safe to retry.
No output schema documentation. Tools return jsonResponse() results but LLMs cannot know what fields to expect. If send_signup_otp returns {api_key, account_id, ...}, the next tool must accept those IDs, but this chaining is undocumented.
place_outbound_call description is vague: 'Place an outbound ClawdCall agent call.' Missing WHEN to use it vs other tools, what happens to the target (will they receive a call?), and expected return value. Description should clarify that this makes an irreversible phone call.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
Missing dependency hints. verify_signup_otp description should note: 'First call send_signup_otp to send OTP, then call this with the code.' get_call_transcript should clarify: 'Use place_outbound_call first to get a call ID, then retrieve transcript.' No guidance prevents agent from calling tools in wrong order.
place_outbound_call has 8 optional parameters (intro_message, openclaw_webhook_url, openclaw_webhook_authorization, conversation_id, user_id, context). These optional fields lack clarity on when to include them. Undocumented parameter interdependencies (e.g., if you set webhook_url, should you also set webhook_authorization?) will confuse agents.
No error handling guidance. If phone_number is invalid (not E.164 format), or if CLAWDCALL_API_KEY is missing, what error does the agent get? Code checks for 'authenticated: false' but does not document what happens when API calls fail. No recovery suggestions provided.
place_outbound_call description says 'Requires CLAWDCALL_API_KEY' but verify_signup_otp says 'Does not require an API key.' This is inconsistent tone. Some tools require auth, others don't, this should be stated consistently in all descriptions to help agents understand prerequisites.