The concept
Tool: a function your code offers the model, with a name, a description and an input schema (the inputs, described in JSON). Claude picks; your code runs it (Day 37).
Action: a tool that changes something in the world: creates, sends, pays, deletes.
Rule of thumb: reading tools run freely. Action tools pass an approval gate in your code, not just a line in the prompt.
Walkthrough: MeetingMate's 3 tools
- list_open_tasks(owner): read only. Returns open tasks so Claude can spot duplicates.
- create_task(task, owner, due_date): an action. Needs approval.
- draft_followup_email(to, subject, body): saves a draft only. A person reviews and sends it.
One definition, simplified:
{"name": "create_task", "description": "Create one task in the team tracker.", "strict": true, "input_schema": {"type": "object", "properties": {"task": {"type": "string"}, "owner": {"type": "string"}, "due_date": {"type": "string"}}, "required": ["task", "owner", "due_date"]}}
strict: true makes inputs match your schema. Real descriptions should be longer: the docs suggest 3–4 sentences.
Now our bank mobile-app sync (illustrative):
1. Claude calls list_open_tasks for Raj, Lena and Ana.
2. It gets back an open task: "MOB-112 Android login timeout, owner Raj".
3. Action item 1 is a duplicate, so Claude flags it and skips it.
4. It proposes create_task for items 2 and 3. Your code pauses: "Create 'Review push-notification wording' for Lena, due 2027-01-20? y/n"
5. Ana approves. Claude calls draft_followup_email; Ana edits and sends it herself.
If Ana says no, your code returns "rejected by user" as the tool result.
In Copilot Studio: each tool becomes a connector, agent flow or REST API tool, and the "Ask the end user before running" setting adds the approval step.
Where you see it at work
- Banking: payments and account changes sit behind a second pair of eyes.
- Product owners: deciding which tools need a "yes" is a product decision.
Try it today (10–15 min)
1. Split your agent's tools into read vs action.
2. Write one definition (name, description, input_schema) for an action tool.
3. In Day 88's loop, add: if the tool is create_task, ask y/n with input() first.
4. Read the docs:
https://platform.claude.com/docs/en/agents-and-tools/tool-use/define-tools
https://learn.microsoft.com/en-us/microsoft-copilot-studio/add-tools-custom-agent
In one sentence
Give your agent reading tools freely, but put every action behind an approval gate your code enforces.
Which action at your work should never run without a human "yes"? 👇
