
Get an organization's custom OIDC token claims (audience, ttl). Use listcollaborations for orgid.
Set an organization's custom OIDC audience and/or token ttl. Unset fields are kept. Needs org admin. Use listcollaborations for orgid.
Reset an organization's custom OIDC claims (audience, ttl) to CircleCI's defaults. Needs org admin. Use listcollaborations for orgid.
Get a project's custom OIDC claims, which override the org's. Use listcollaborations for orgid and getproject for projectid.
Set a project's custom OIDC audience and/or ttl, overriding the org's. Unset fields are kept. Use listcollaborations for orgid and getproject for projectid.
Remove a project's custom OIDC claims so the org-level values apply again. Use listcollaborations for orgid and getproject for projectid.
List the groups in an organization (used for context restrictions and approvals). Use listcollaborations for orgid.
Get a group in an organization by UUID. Use list_groups to find group IDs.
Create a group in an organization. Use listcollaborations for orgid. Returns its id; delete it with delete_group. Needs org admin.
Delete a group from an organization. Use list_groups to find group IDs.
Start an export of an organization's credit and compute usage for up to 31 days. Returns usageexportjobid; poll getusage_export until state is 'completed' for the CSV URLs. Needs org admin.
Get a usage export's state and, once 'completed', its CSV download URLs. Start one with createusageexport.
List an organization's contexts (shared env var sets). Give ownerslug or ownerid from list_collaborations.
Get a context by UUID. Use list_contexts to find context IDs.
Create a context in an organization. Returns its id; add variables with setcontextenvvar. Give ownerslug or ownerid from listcollaborations.
Delete a context and all its variables. Jobs that use it will fail. Use list_contexts to find IDs.
List the variable names in a context. Values are never returned. Use list_contexts to find IDs.
Add a variable to a context, or overwrite one with the same name. Use list_contexts to find context IDs.
Remove a variable from a context. Use listcontextenv_vars to find names.
List the restrictions that limit which projects, groups or pipelines may use a context. Use list_contexts to find context IDs.
Restrict a context to a project (getproject for its UUID), a group (listgroups) or an expression. Returns the restriction id; remove with deletecontextrestriction.
Remove a restriction from a context. Use listcontextrestrictions to find restriction IDs.
List a project's pipeline definitions (config and checkout source). Their ids are the definitionid runpipeline and triggers take.
Get a pipeline definition by UUID. Use listpipelinedefinitions to find it.
Create a pipeline definition on a GitHub App or standalone project: where config is read from and which repo is checked out. Use getproject for projectid; repo externalid is GitHub's numeric repo id. Returns its id; add triggers with createtrigger.
Change a pipeline definition's name, description, config file path or checkout source. Unset fields are kept. Use listpipelinedefinitions to find definition IDs.
Delete a pipeline definition and its triggers. Use listpipelinedefinitions to find it.
List the triggers on a pipeline definition (repo events, webhooks, cron schedules). Use listpipelinedefinitions first.
Get a trigger by UUID. Use list_triggers to find trigger IDs.
Add a trigger to a pipeline definition: GitHub events, a custom webhook, or a cron schedule. Use listpipelinedefinitions for the definition ID. Returns the trigger id.
Change a trigger's event filter, refs, cron schedule, parameters, or enable/disable it. Unset fields are kept. Use list_triggers to find trigger IDs.
Delete a trigger from a pipeline definition. Use list_triggers to find trigger IDs.
List an organization's deploy environments (e.g. staging, production). Use listcollaborations for orgid.
Get a deploy environment by UUID. Use list_environments to find environment IDs.
List an organization's deploy components (deployable services), optionally for one project.
Get a deploy component by UUID. Use list_components to find component IDs.
List a component's deployed versions with which one is live per environment. Use it before rollbackproject to find currentversion and target_version.
Roll a component in an environment back to an earlier version. Find names and versions with listcomponents, listenvironments and listcomponentversions first.
Get a project's Insights summary: runs, success rate, duration and credits per workflow and branch, with trends, for a time window. Use for 'how healthy is this project's CI'.
Get an organization's Insights summary across projects: runs, success rate, duration and credits, with trends.
List the branches that have Insights data for a project, optionally for one workflow.
List a project's flaky tests (tests that both passed and failed on the same commit), with how often they flaked.
List summary metrics per workflow in a project (runs, success rate, mttr, durations, credits) for a branch or all branches over a time window.
List recent runs of one workflow with status, duration and credits, filtered by branch and date range.
List summary metrics per job in one workflow (runs, success rate, durations, credits), optionally for one job.
Get one workflow's metrics and trends (runs, success rate, mttr, p95 duration, credits) for a branch or all branches.
Get test metrics for a workflow: most-failed and slowest tests and per-run test counts.
Get per-job run and duration metrics for a workflow bucketed hourly or daily over a date range.
Get a job by UUID: status, number and its project, pipeline and workflow IDs. For executor and timing use getjobdetails.
Get a job's details by project slug and job number: status, duration, executor, parallel runs, messages and web URL. Use listworkflowjobs to find job_number.
List the artifacts a job stored (path and download URL). Use listworkflowjobs to find job_number.
List a job's test results (name, class, result, failure message, run time) from storetestresults. Use it to see which tests failed. Use listworkflowjobs to find job_number.
Cancel a running job by UUID. Use listworkflowjobs to find the job id; rerun with rerun_workflow.
Create a CircleCI organization. vcs_type 'circleci' makes a standalone org; 'github' or 'bitbucket' connects an existing VCS org you can access. Returns the new org's id and slug.
Get a CircleCI organization by slug ('gh/acme') or UUID. Use list_collaborations to find orgs.
Permanently delete a CircleCI organization and all of its projects, contexts and settings. Needs org admin. Use list_collaborations to find the org slug or UUID.
List an organization's URL orb allow-list: the URL prefixes config may import orbs from.
Add a URL prefix to an organization's URL orb allow-list so config can import orbs from it. Needs org admin. Remove it with deleteurlorballowentry.
Remove an entry from an organization's URL orb allow-list. Use listurlorballowlist to find entry IDs.
List recent pipelines in an organization, newest first, across the most recently built projects you follow (CircleCI caps it at 250). Set mine=true for only yours. For one project use listprojectpipelines. Use listcollaborations for orgslug.
List a project's pipelines, newest first, optionally for one branch. The first item for a branch is its latest pipeline; get its workflow status with listpipelineworkflows.
List the pipelines you triggered in one project, newest first. For everyone's use listprojectpipelines.
Get a pipeline by UUID: state, trigger, branch and commit. Use listprojectpipelines to find IDs.
Get a pipeline by its project-scoped number, the one shown in the CircleCI UI (e.g. 8200).
Get a pipeline's config: the source config.yml and the compiled config. Large; read only when debugging config. Use listprojectpipelines for pipeline IDs.
Get the pipeline.* values CircleCI resolved for a pipeline (git branch, revision, trigger source). Use listprojectpipelines for pipeline IDs.
List a pipeline's workflows with their status (success, failed, running, onhold). Use this for 'did the latest build pass'. Then listworkflow_jobs for the jobs.
Trigger a new pipeline on a project, for a branch or tag, with optional parameters. Returns the pipeline id and number. Use listpipelinedefinitions for definition_id when a project has more than one.
Continue a dynamic-config pipeline from its setup workflow with generated config. Only valid while the setup job runs, with the key from CIRCLECONTINUATIONKEY.
Create a project in a GitHub App or standalone (circleci) organization. Returns the new project's id and slug. Then add a pipeline with createpipelinedefinition. Use list_collaborations for the org.
Get a project by slug ('gh/acme/api'): its UUID, org and repository. The UUID is the project_id other tools take.
Permanently delete a project with its settings, env vars and history. Needs org admin. Use get_project to confirm the slug.
Get a project's advanced settings (auto-cancel, fork PR builds, PR-only builds, OSS, SSH reruns). Needs project admin.
Change a project's advanced settings. Only the fields you set are sent; the rest keep their value. Read them first with getprojectsettings. Needs project admin.
List a project's environment variables. Values come back masked (last 4 characters only).
Get one project environment variable by name, value masked. Use listprojectenv_vars to find names.
Create a project environment variable, or overwrite one with the same name. Jobs in the project read it at runtime. Value comes back masked.
Delete a project environment variable. Jobs that read it will no longer see it. Use listprojectenv_vars to find names.
List the SSH checkout keys CircleCI uses to clone a project's repository, with fingerprints.
Get one checkout key by fingerprint. Use listcheckoutkeys to find fingerprints.
Create an SSH checkout key for a project (a deploy key, or a user key on GitHub OAuth orgs). Returns its fingerprint and public key; delete it with deletecheckoutkey.
Delete a project's checkout key; builds that clone with it will fail. Use listcheckoutkeys to find fingerprints.
List a project's scheduled pipelines with their timetables. GitHub App projects use list_triggers instead.
Get a scheduled pipeline by UUID. Use list_schedules to find schedule IDs.
Create a scheduled pipeline that runs on a UTC timetable. parameters must include 'branch' or 'tag'. Returns the schedule id; remove it with delete_schedule.
Change a scheduled pipeline's name, description, timetable, actor or parameters. Unset fields are kept. Use list_schedules for IDs.
Delete a scheduled pipeline; it stops firing. Use list_schedules to find schedule IDs.
Get the CircleCI user the API token belongs to: id, login and name.
List the organizations the token's user belongs to, with each org's id and slug. Call this first to find the orgid or orgslug other tools need (contexts, groups, pipelines, deploys, insights).
Get a CircleCI user by UUID, e.g. the startedby of a workflow. Use getcurrent_user for yourself.
Validate the CircleCI personal API token by reading the user it belongs to (GET /me).
List a project's outbound webhooks, optionally only enabled or disabled ones. Use getproject for projectid.
Get an outbound webhook by UUID. Use list_webhooks to find webhook IDs.
Create an outbound webhook that posts workflow-completed and/or job-completed events for a project to a URL. Use getproject for projectid. Returns its id; remove it with delete_webhook.
Change a webhook's name, URL, events, secret, TLS check, or enable/disable it. Unset fields are kept. Use list_webhooks to find webhook IDs.
Delete an outbound webhook; CircleCI stops posting to its URL. Use list_webhooks to find IDs.
Get a workflow by UUID: name, status, pipeline and timing. Use listpipelineworkflows to find IDs.
List a workflow's jobs with status, jobnumber and id. Use jobnumber with getjobdetails, listjobtests or listjobartifacts; approval jobs carry the approvalrequestid approveworkflowjob needs.
Approve an on-hold approval job so the workflow continues. Use listworkflowjobs to find the approval job's approvalrequestid. This cannot be undone.
Cancel a running workflow and its jobs. Rerun it with rerunworkflow. Use listpipeline_workflows to find IDs.
Rerun a workflow from the start, from its failed jobs (fromfailed=true), or for chosen job IDs. Returns the new workflowid. Use listworkflowjobs for job IDs.

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