
List the firm's calendar events. Filter by updatedafter; each event carries its case ID and start/end. Paginate with pageinfo.nextpagetoken.
Get a single calendar event by ID. Use listcalendarevents to find event IDs.
Create a calendar event. Call liststaff first: MyCase requires at least one staffid. Optionally tie it to a case (caseid from listcases). Returns the event ID.
Update a calendar event. Only supplied fields change; returns the updated event. Use listcalendarevents to find event IDs.
Permanently delete a calendar event. Use listcalendarevents to find event IDs.
List the firm's case pipeline stages (e.g. Discovery, In Trial). Use this to find valid stageid values before calling createcase or updatecase. Paginate with pageinfo.nextpagetoken.
List the firm's cases. Filter by status ('open'/'closed') or updatedafter. Paginate with pageinfo.nextpagetoken. Use listclientcases instead for one client's cases.
Get a single case by ID. Use list_cases to find case IDs.
Create a case. Optionally put a client on it (find or create one with listclients/createclient) and set stageid (from listcasestages). The returned case ID is the caseid for createtask, createcalendarevent and createcase_document.
Update a case: name, number, description, status (e.g. close it), stageid (from listcasestages) or openeddate. Only supplied fields change; returns the updated case. Use list_cases to find case IDs.
Permanently delete a case. MyCase refuses to delete an open case: close it first with updatecase status='closed'. Use listcases to find case IDs.
List all cases for one client. Use listclients to find the client ID. Use listcases instead to browse the whole firm.
Add a client to an existing case (e.g. a co-plaintiff), with an optional role. Use listcases for caseid and listclients or createclient for client_id. MyCase has no endpoint to remove a client from a case.
List the firm's clients (people). Filter by exact email, firstname or lastname (case-insensitive) or updatedafter. Paginate with pageinfo.nextpagetoken. Use listclientcases for one client's cases.
Get one client (person) by ID. Use list_clients to find client IDs.
Create a client (person). Returns the new client's ID, which createcase and createclientrelationship take as clientid.
Update a client (person). Only supplied fields change; returns the updated client. Use list_clients to find client IDs.
Permanently delete a client (person). Use list_clients to find client IDs.
List companies (insurers, medical providers, employers, other organizations). Filter by exact name or email (case-insensitive) or updatedafter. Paginate with pageinfo.nextpagetoken.
Get a single company by ID. Use list_companies to find company IDs.
Create a company (insurer, medical provider, employer, etc.). Returns its ID.
Update a company. Only supplied fields change; returns the updated company. Use list_companies to find company IDs.
Permanently delete a company. Use list_companies to find company IDs.
List the documents filed under one case. Use listcases to find case IDs. Paginate with pageinfo.nextpagetoken.
Upload a staged file to a case as a document. Use listcases to find the caseid; pass the staged file_reference. Returns the new document's ID.
Get the name and site URL of the firm the connection belongs to. Takes no parameters. To only check whether credentials work, use validate_credential.
List the firm's staff (users such as lawyers and paralegals). Call this first to find staffids for createtask and createcalendarevent, which require at least one. Paginate with pageinfo.nextpage_token.
List the firm's tasks. Filter by updatedafter; each task carries its case ID. Paginate with pageinfo.nextpagetoken.
Get a single task by ID. Use list_tasks to find task IDs.
Create a task. Call liststaff first: MyCase requires at least one staffid. Optionally tie it to a case (caseid from listcases). Returns the task ID.
Update a task: name, description, priority, duedate, or completed (true marks it done). Only supplied fields change; returns the updated task. Use listtasks to find task IDs.
Permanently delete a task. Use list_tasks to find task IDs.
Check that the MyCase connection works by reading the authorized firm. Use this to confirm setup before calling other tools.

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}Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now