Connect your AI Agents to Microsoft Planner in minutes

Available tools
list_buckets
List all buckets in a Planner plan. Planner cannot limit results server-side, so limit trims the page locally and sets pageinfo.truncated. Use listplans to find valid plan IDs. Use cursor from page_info for next page.
get_bucket
Get a Planner bucket by ID. Use list_buckets to find valid bucket IDs.
create_bucket
Create a new bucket in a Planner plan to organize tasks. Use list_plans to find valid plan IDs.
update_bucket
Update a Planner bucket's name or order. Fetches current ETag automatically. Use list_buckets to find valid bucket IDs.
delete_bucket
Permanently delete a Planner bucket. The bucket must be empty (no tasks) before deletion. Fetches current ETag automatically. Use list_buckets to find valid bucket IDs.
list_todo_lists
List all Microsoft To Do lists for the current user. These are personal task lists, not Planner plans; use listplans for those. Use cursor from pageinfo for next page.
get_todo_list
Get a Microsoft To Do list by ID. Use listtodolists to find valid list IDs.
create_todo_list
Create a new Microsoft To Do list. This is a personal task list; to create a Planner plan use create_plan.
update_todo_list
Rename a Microsoft To Do list. Built-in lists such as the default Tasks list and Flagged emails cannot be renamed. Use listtodolists to find valid list IDs.
delete_todo_list
Permanently delete a Microsoft To Do list and all its tasks. Built-in lists such as the default Tasks list cannot be deleted. Use listtodolists to find valid list IDs.
list_todo_tasks
List tasks in a Microsoft To Do list, optionally filtered by status or importance and sorted by orderby. Filtering and sorting are done by the API, so prefer them over paging through every task. Use listtodolists to find valid list IDs. Use cursor from pageinfo for next page.
get_todo_task
Get a Microsoft To Do task by ID. Use listtodotasks to find valid task IDs.
create_todo_task
Create a task in a Microsoft To Do list. Set timezone when a due date or reminder means a local time, otherwise it is recorded as UTC. Use listtodo_lists to find valid list IDs.
update_todo_task
Update a Microsoft To Do task. Set clearduedatetime or clearreminder true to remove those values; passing null does not clear them. Set timezone when a date means a local time, otherwise it is recorded as UTC. Use listtodo_tasks to find valid task IDs.
delete_todo_task
Permanently delete a Microsoft To Do task. Use listtodotasks to find valid task IDs.
list_todo_steps
List the checklist steps on a Microsoft To Do task. For checklist items on a Planner task use listchecklistitems instead. Use listtodotasks to find valid task IDs. Use cursor from page_info for next page.
get_todo_step
Get a single checklist step from a Microsoft To Do task. Use listtodosteps to find valid item IDs.
create_todo_step
Add a checklist step to a Microsoft To Do task. For a checklist item on a Planner task use addchecklistitem instead. Use listtodotasks to find valid task IDs.
update_todo_step
Update a checklist step on a Microsoft To Do task. For a checklist item on a Planner task use updatechecklistitem instead. Use listtodosteps to find valid item IDs.
delete_todo_step
Delete a checklist step from a Microsoft To Do task. For a checklist item on a Planner task use deletechecklistitem instead. Use listtodosteps to find valid item IDs.
list_groups
List the Microsoft 365 groups the signed-in user belongs to. Call this first to find a groupid for createplan or listplans; only 'Unified' groups can own a Planner plan. Non-unified groups are dropped after the page is fetched, so a page can come back empty with hasnext_page true - follow the cursor before concluding the user has no groups.
list_group_members
List the users in a Microsoft 365 group, with their user IDs. Call this to turn a person's name or email into the user ID that createtask and updatetask need for assigneeuserids, and that updateplandetails needs for sharedwith keys. Use listgroups to find valid group IDs, and search to match a name.
list_plans
List Planner plans. Provide groupid to list every plan in a Microsoft 365 group; prefer this, and use listgroups to find valid group IDs. Omitting groupid returns only plans explicitly shared with the signed-in user, which excludes plans they created but were never added to, so an empty result does not mean the user has no plans. Use cursor from pageinfo for next page.
get_plan
Get a Planner plan by ID. Use list_plans to find valid plan IDs.
get_plan_details
Get extended details for a Planner plan including shared users and category label names. Use list_plans to find valid plan IDs.
create_plan
Create a Planner plan owned by a Microsoft 365 group. groupid is required and the signed-in user must be a member of that group; call listgroups first to find one. A new plan is not visible in anyone's Planner app until shared, so call updateplandetails afterwards to share it.
update_plan
Update a Planner plan's title. Fetches current ETag automatically. Use list_plans to find valid plan IDs.
update_plan_details
Share a plan with users or name its category labels. Sharing makes the plan visible in that user's Planner app, which a newly created plan is not. Use listgroupmembers to find user IDs for sharedwith. Fetches current ETag automatically. Use listplans to find valid plan IDs.
delete_plan
Permanently delete a Planner plan and all its tasks and buckets. Fetches current ETag automatically. Use list_plans to find valid plan IDs.
list_tasks
List Planner tasks. Omit planid and bucketid for current user's assigned tasks. Provide planid to list all tasks in a plan, or bucketid to list tasks in a specific bucket. Planner cannot limit results server-side, so limit trims the page locally and sets pageinfo.truncated. Use cursor from pageinfo for next page.
get_task
Get a Planner task by ID. Use list_tasks to find valid task IDs.
get_task_details
Get extended task details including description, checklist items, and external references. Use list_tasks to find valid task IDs.
create_task
Create a new task in a Planner plan, optionally assigned, scheduled, prioritized or labelled. Use listplans to find valid plan IDs, listbuckets to find bucket IDs, listgroupmembers to find assignee user IDs, and getplandetails to see what each category label is named.
update_task
Update a Planner task's title, bucket, start or due date, priority, completion percentage, assignees or category labels. Set clearduedate, clearstartdate or clearassignees true to remove those values; passing null does not clear them. Fetches current ETag automatically. Use listtasks to find task IDs and listgroupmembers to find assignee user IDs.
update_task_details
Update a task's description, card preview, checklist items, or external references. To attach or remove a link, prefer addtaskreference and removetaskreference, which handle Planner's required key encoding. Fetches current ETag automatically. Use list_tasks to find valid task IDs.
add_task_reference
Attach a link to a Planner task, such as a SharePoint document or a web page. Pass the URL unencoded; this tool applies the key encoding Planner requires, which updatetaskdetails would leave to the caller. Use list_tasks to find valid task IDs.
remove_task_reference
Remove a link from a Planner task. Pass the same unencoded URL used to add it; this tool applies Planner's required key encoding. Use gettaskdetails to see the links a task currently has.
delete_task
Permanently delete a Planner task. Fetches current ETag automatically. Use list_tasks to find valid task IDs.
list_checklist_items
List all checklist items (sub-steps) on a Planner task. For Microsoft To Do steps use listtodosteps instead. Use list_tasks to find valid task IDs.
add_checklist_item
Add a checklist item (sub-step) to a Planner task. For Microsoft To Do steps use createtodostep instead. Use list_tasks to find valid task IDs.
update_checklist_item
Update a checklist item's title or checked state on a Planner task. For Microsoft To Do steps use updatetodostep instead. Use listchecklistitems to find valid item IDs.
delete_checklist_item
Delete a checklist item from a Planner task. For Microsoft To Do steps use deletetodostep instead. Use listchecklistitems to find valid item IDs.
validate_credential
Validate Microsoft Planner credentials by calling GET /me on Microsoft Graph.

How to set up Merge Agent Handler
In an mcp.json file, add the configuration below, and restart Cursor.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "url": "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
5 "headers": {
6 "Authorization": "Bearer yMt*****"
7 }
8 }
9 }
10}
11Open your Claude Desktop configuration file and add the server configuration below. You'll also need to restart the application for the changes to take effect.
Make sure Claude is using the Node v20+.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "yMt*****"
14 }
15 }
16 }
17}Open your Windsurf MCP configuration file and add the server configuration below.
Click on the refresh button in the top right of the Manage MCP server page or in the top right of the chat box in the box icon.
Learn more in the official documentation ↗
1{
2 "mcpServers": {
3 "agent-handler": {
4 "command": "npx",
5 "args": [
6 "-y",
7 "mcp-remote@latest",
8 "https://ah-api.merge.dev/api/v1/tool-packs/<tool-pack-id>/registered-users/<registered-user-id>/mcp",
9 "--header",
10 "Authorization: Bearer ${AUTH_TOKEN}"
11 ],
12 "env": {
13 "AUTH_TOKEN": "<ah-production-access-key>"
14 }
15 }
16 }
17 }In Command Palette (Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows), run "MCP: Open User Configuration".
You can then add the configuration below and press "start" right under servers. Enter the auth token when prompted.
Learn more in the official documentation ↗
1{
2 "inputs": [
3 {
4 "type": "promptString",
5 "id": "agent-handler-auth",
6 "description": "Agent Handler AUTH_TOKEN", // "yMt*****" when prompt
7 "password": true
8 }
9 ],
10 "servers": {
11 "agent-handler": {
12 "type": "stdio",
13 "command": "npx",
14 "args": [
15 "-y",
16 "mcp-remote@latest",
17 "https://ah-api-develop.merge.dev/api/v1/tool-packs/{TOOL_PACK_ID}/registered-users/{REGISTERED_USER_ID}/mcp",
18 "--header",
19 "Authorization: Bearer ${input:agent-handler-auth}"
20 ]
21 }
22 }
23}FAQs on using Merge's Microsoft Planner MCP server
FAQs on using Merge's Microsoft Planner MCP server
Ready to try it out?
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now

























