{"serverId":"mcp-registry/net.agent-control/agent-control","tools":[{"name":"crm.write","fixed":{"name":"crm_write","description":"Write Gate. Validates the preview, runs Action Gate check_action for crm.write, and POSTs the approved preview to the human's CRM webhook only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not post. If decision is wait, poll get_approval, then call crm.write again with approval_id. If the CRM webhook is missing, returns stop and does not post. Same $49 Action Gate seat (plan=action).","inputSchema":{"type":"object","properties":{"risk":{"type":"string","description":"Optional tag such as low, medium, or high"},"target":{"type":"string","description":"Optional record id"},"payload":{"type":"object","description":"Optional JSON object included in the approved preview"},"preview":{"type":"string","description":"Approved text posted to the CRM webhook"},"summary":{"type":"string","description":"One line a human can decide from"},"approval_id":{"type":"string","description":"From a previous wait. Call again after get_approval returns go."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false},"title":"Write to CRM after a human allows it"},"changes":[{"kind":"name","detail":"Renamed \"crm.write\" → \"crm_write\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":283,"tokensAfter":283},{"name":"email.send","fixed":{"name":"email_send","description":"Write Gate. Validates the message, runs Action Gate check_action for email.send, and sends only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not send. If decision is wait, poll get_approval, then call email.send again with approval_id. Uses the human's connected Agentmail inbox. If email is not connected, returns stop and does not send. Same $49 Action Gate seat (plan=action).","inputSchema":{"type":"object","properties":{"to":{"type":"string","description":"One recipient email address"},"risk":{"type":"string","description":"Optional tag such as low, medium, or high"},"text":{"type":"string","description":"Plain-text body the human approves"},"subject":{"type":"string","description":"Subject the human approves"},"approval_id":{"type":"string","description":"From a previous wait. Call again after get_approval returns go."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false},"title":"Send email after a human allows it"},"changes":[{"kind":"name","detail":"Renamed \"email.send\" → \"email_send\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":252,"tokensAfter":252},{"name":"slack.post","fixed":{"name":"slack_post","description":"Write Gate. Validates the message, runs Action Gate check_action for slack.post, and posts only when the decision is go. Unpaid, missing DATABASE_URL, stop, and timeout do not post. If decision is wait, poll get_approval, then call slack.post again with approval_id. Uses the Slack incoming webhook saved in Settings. If that webhook is missing, returns stop and does not post. Same $49 Action Gate seat (plan=action).","inputSchema":{"type":"object","properties":{"risk":{"type":"string","description":"Optional tag such as low, medium, or high"},"text":{"type":"string","description":"Message the human approves"},"channel":{"type":"string","description":"Optional channel label, such as #support"},"summary":{"type":"string","description":"Optional one-line summary. Defaults to the message."},"approval_id":{"type":"string","description":"From a previous wait. Call again after get_approval returns go."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false},"title":"Post to Slack after a human allows it"},"changes":[{"kind":"name","detail":"Renamed \"slack.post\" → \"slack_post\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":264,"tokensAfter":264}],"toolsChanged":3,"tokensSaved":0,"todo":[{"tool":"ask_human","params":["risk","target","preview","summary","action_type"]},{"tool":"list_your_agent","params":["name"]},{"tool":"meter_preflight","params":["to","chain","wallet","cap_usd","value_usd","pass_token"]},{"tool":"meter_scan","params":["address","pass_token"]},{"tool":"meter_scan_batch","params":["sku","pass_token"]},{"tool":"meter_stamp","params":["to","chain","wallet","cap_usd","value_usd","pass_token"]},{"tool":"meter_verify_stamp","params":["id","stamp_id"]},{"tool":"meter_watch","params":["sku"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}