Skip to main content
Material tools never submit forms, subscribe contacts, create callbacks, or book directly. They create an agent_action_request with status proposed and return a ContactButton review_url. The visitor edits and approves the proposal in ContactButton, then verifies the represented email address. The fixed lifecycle is:
failed, cancelled, and expired are terminal alternatives. Mutations require an Idempotency-Key; a retry with the same key and input returns the original action rather than creating a second engagement. An external agent may initiate a request only after its user asks. Identify the agent in agent_context without including credentials or unnecessary personal data.
Contact Button sends the six-digit code directly to the reviewed email address. The public web review owns OTP entry; MCP and A2A clients receive only the review URL and poll the action or task for its safe status. A verified website, conversation, and identity may reuse a short-lived 30-minute verification grant. Editing the represented email or phone, changing tenant context, or closing the conversation invalidates that grant. REST clients use the action-request endpoints documented in OpenAPI. Existing compatibility endpoints continue to use the earlier confirmation-challenge route:
Do not ask a human to paste the OTP into an untrusted third-party agent. If the user declines, cancel the request. ContactButton rechecks tenant scope, permissions, capacity, consent, and live availability after verification and before execution.