Let routine work proceed only after a real chance to stop it.
Register the exact action digest, deliver the returned veto URL outside the acting agent, wait for the cooling-off deadline, and atomically consume one execution right.
Try every control product for seven days
Starter includes ChallengeMyAction and all 38 REST/MCP tools.
Card required. Unless canceled before the trial ends, Starter renews automatically at $15/month. No automatic overages.
Bind the window to an exact action digest
curl https://api.scrubmytext.com/v1/challenges/manage \
-H "Authorization: Bearer smt_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"create","action_fingerprint":"sha256:YOUR_64_HEX_DIGEST","veto_window_seconds":300,"execution_window_seconds":900}'Save the returned challenge_id. Deliver the returned veto_url only to the intended challenger through your existing notification channel.
Do not infer consent from delivery
ChallengeMyAction enforces time and veto state. Your application must decide whether default-proceed is permitted and confirm that the intended challenger received notice.
Check without authorizing
curl https://api.scrubmytext.com/v1/challenges/manage \
-H "Authorization: Bearer smt_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"check","control_id":"chm_RETURNED_ID"}'Consume atomically immediately before the action
curl https://api.scrubmytext.com/v1/challenges/manage \
-H "Authorization: Bearer smt_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"operation":"consume","control_id":"chm_RETURNED_ID"}'Execute the exact action once only when this response contains both execution_right_acquired: true and safe_to_execute: true. Every retry or other state must block.
Use the same state machine from an agent
1. manage_action_challenge({"operation":"create","action_fingerprint":"sha256:...","veto_window_seconds":300,"execution_window_seconds":900})
2. Deliver veto_url to the intended challenger and confirm delivery in your own system.
3. manage_action_challenge({"operation":"check","control_id":"chm_..."})
4. After the deadline, call manage_action_challenge({"operation":"consume","control_id":"chm_..."}).
5. Execute once only if execution_right_acquired and safe_to_execute are both true.
6. Use operation "cancel" if the action is abandoned.Limits to design around
- Silence is not consent. Use ApproveMyAction for affirmative approval or whenever law, policy, or consequence requires it.
- The caller—not ScrubMyText—delivers notice and verifies the challenger's identity and authority.
- Anyone holding the live veto URL can veto during the window, so treat it as a temporary secret.
- A status of
executableis informational; only a successful atomic consume grants one right. - The service records technical state, not successful delivery, legal consent, execution, or outcome.
