AI assistants can be tricked by stored content (a malicious lead message, a poisoned listing description). WebMCP’s defaults assume that.
respond_to_inquiry and update_listing_status require a two-step: AI gets a preview + 5-min confirm token, you review, then the AI confirms. Server enforces the round-trip.
Untrusted content wrappers
Every user-generated string in tool output (lead messages, listing titles) is wrapped in <untrusted_user_content> markers so the AI treats them as data, not instructions.
Every write records token id, agent id, the exact message body sent, and before/after state. View it in your dashboard. 90-day retention.
Read-only by default. Add write scopes only when you need them; revoke at any time. A leaked read token can never write.
Every authenticated query joins on your contact ids. Another agent's token never sees your leads, listings, or inquiries.
PII gated by claim status
list_my_leads returns masked phone for leads you haven't claimed. Unmasked contact info only appears once you've taken ownership.