Sensitivity classes
MCP annotations
Every tool carries the standard MCP trust hints, so a client can surface the right warning without knowing anything about Ringee:schedule_meeting, search_leads, reveal_lead and start_ai_voice_agent_call are open-world tools: they sync calendars, query Apollo/Prospeo or place a real phone call.
Hard guards in the server
Some protections do not depend on the client behaving well.delete_contact requires the phone number
delete_contact requires the phone number
Two conditions must both hold:
confirmis the literal booleantrue;confirmPhoneNumberexactly matches the contact’s stored E.164 number.
Ownership is verified before every write
Ownership is verified before every write
update_contact and delete_contact re-read the contact and check it belongs to the active workspace before writing. Passing an id from another workspace fails.Magic-link tokens are shown once
Magic-link tokens are shown once
create_call_session returns the joinUrl a single time. get_call_session reports whether a token is still active but never returns the token itself, so a leaked transcript cannot be replayed into a working link.Revocation is immediate
Revocation is immediate
delete_call_session marks the session revoked and invalidates every active token at once. Call history is preserved — the revoke is not a data deletion.Queue replacement is time-bounded
Queue replacement is time-bounded
update_call_session can replace the contact queue only before the first call. Once dialing starts, the queue is frozen so progress and attribution stay coherent.Campaign and DNC removal require confirmation
Campaign and DNC removal require confirmation
delete_campaign_lead requires confirm: true and refuses a lead that is locked, dialing or in a call. remove_from_dnc also requires confirm: true, because it makes a suppressed number callable again.AI voice calls re-check operational gates
AI voice calls re-check operational gates
Before dialing, Ringee verifies the organization workspace, agent ownership and readiness, caller number, user’s calling permission, DNC list, available credits and the selected agent type’s required variables.
Credits
start_ai_voice_agent_call creates a real call. Ringee debits the telephony leg and the AI conversation usage when provider records settle. Bring-your-own model providers can also bill your provider account.
reveal_lead consumes the connected enrichment provider’s credits rather than Ringee calling credits. It is explicitly non-idempotent: repeating it can spend the provider’s credits again.
Assistants must not retry either reveal_lead or start_ai_voice_agent_call automatically after an ambiguous failure.
What an assistant should do
The server-side rules exist as a backstop. Well-behaved assistants also follow these:1
Resolve before acting
Use
search_contacts or get_contact to resolve a real id before any write. Never act on an id the user did not approve.2
Read the target back
Before a destructive action, state what will happen and to which record — name and phone number — and wait for an explicit yes.
3
Confirm spend
Before
reveal_lead, say that provider credits will be spent and for which lead. Before start_ai_voice_agent_call, name the agent and destination and explain that a real billed call will start.4
Treat links as secrets
Share a
joinUrl only with the person who asked for it. Never post it into a shared channel unprompted.5
Never auto-confirm
confirm: true must reflect a human decision, not the assistant’s own inference.@ringee-io/agent, which is what the ringee CLI, the Claude skills and the ChatGPT app all build on.
CLI equivalents
The CLI enforces the same classes with explicit flags, so an autonomous agent cannot spend or delete by accident:
See CLI commands.

