
List users in the Arize organization via GraphQL. Use cursor from page_info for next page.
List integrations in the Arize organization via GraphQL.
Assign a user to an Arize space with a role via GraphQL. Use listusers and listspaces for valid IDs.
Remove a user from an Arize space via GraphQL. Use listusers and listspaces for valid IDs.
Create an integration key for an Arize integration via GraphQL. Key value is returned only once.
Delete an Arize integration key via GraphQL. Irreversible. Use list_integrations to find valid IDs.
List all Arize AI provider integrations with pagination. Use cursor from page_info for next page.
Create an Arize AI provider integration. Providers: openAI, azureOpenAI, awsBedrock, vertexAI, anthropic, custom, nvidiaNim, gemini.
Get an Arize AI integration by ID. Use listaiintegrations to find valid IDs.
Update an Arize AI integration name or API key. Use listaiintegrations to find valid IDs.
Delete an Arize AI integration. Irreversible. Use listaiintegrations to find valid IDs.
List all Arize annotation configs with pagination. Use cursor from page_info for next page.
Create an Arize annotation config. Types: categorical (labels), continuous (numeric), freeform (text). Requires space_id.
Get an Arize annotation config by ID. Use listannotationconfigs to find valid IDs.
Delete an Arize annotation config. Irreversible. Use listannotationconfigs to find valid IDs.
List all Arize annotation queues with pagination. Use cursor from page_info for next page.
Create an Arize annotation queue with optional project and annotation config associations.
Get an Arize annotation queue by ID. Use listannotationqueues to find valid IDs.
Update an Arize annotation queue name, description, or configs. Use listannotationqueues for valid IDs.
Delete an Arize annotation queue. Irreversible. Use listannotationqueues to find valid IDs.
List records in an Arize annotation queue with pagination. Use cursor from page_info for next page.
Add annotations to an Arize model record via GraphQL. Requires model ID, record ID, and annotation list.
List all Arize API keys with pagination. Use cursor from page_info to get the next page.
Create a new Arize API key. The key value is only returned once on creation.
Delete an Arize API key by ID. This action is irreversible. Use listapikeys to find valid IDs.
Regenerate an Arize API key by ID. Returns the new key value. Use listapikeys to find valid IDs.
List custom metrics for an Arize model via GraphQL. Use cursor from page_info for next page.
Create a custom metric for an Arize model via GraphQL. Use list_models to find valid model IDs.
Update an Arize custom metric name, expression, or description via GraphQL.
Create a new Arize dashboard in a space via GraphQL. Use list_spaces to find valid space IDs.
Create an Arize dashboard from a template via GraphQL. Optionally bind it to a model.
List Arize datasets with optional space filter and pagination. Use cursor from page_info for next page.
Create a new Arize dataset in a space with initial examples. Use list_spaces to find valid space IDs.
Get an Arize dataset by ID. Use list_datasets to find valid dataset IDs.
Delete an Arize dataset by ID. This action is irreversible. Use list_datasets to find valid IDs.
List examples in an Arize dataset with pagination. Use cursor from page_info for next page.
Append new examples to an Arize dataset. Returns the updated dataset. Each example is a free-form object.
Update existing examples in an Arize dataset. Each example must include its ID. Returns the updated dataset.
List all Arize evaluators with pagination. Use cursor from page_info to get the next page.
Create a new Arize LLM evaluator (type=template). Requires spaceid, name, type, and version with templateconfig and llmconfig (needs aiintegration_id).
Get an Arize evaluator by ID. Use list_evaluators to find valid evaluator IDs.
Update an Arize evaluator name or description. Use list_evaluators to find valid evaluator IDs.
Delete an Arize evaluator by ID. This action is irreversible. Use list_evaluators to find valid IDs.
List versions of an Arize evaluator with pagination. Use cursor from page_info for next page.
Create a new version of an Arize evaluator. Requires commitmessage and templateconfig with llm_config.
Get a specific Arize evaluator version by version ID. Use listevaluatorversions to find valid IDs.
List Arize experiments with optional dataset filter and pagination. Use cursor from page_info for next page.
Create a new Arize experiment on a dataset. Requires datasetid and at least one experiment run with exampleid and output.
Get an Arize experiment by ID. Use list_experiments to find valid experiment IDs.
Delete an Arize experiment by ID. This action is irreversible. Use list_experiments to find valid IDs.
List runs for an Arize experiment with pagination. Use cursor from page_info for next page.
List models in an Arize space via GraphQL. Use cursor from page_info for next page.
Get an Arize model by ID including its versions via GraphQL. Use list_models to find valid model IDs.
Get an Arize model's features and tags schema via GraphQL. Use list_models to find valid model IDs.
Get an Arize model's tracing schema including span properties and LLM evals via GraphQL.
List Arize monitors for a space via GraphQL. Requires spaceid. Use cursor from pageinfo for next page.
Create an Arize drift monitor for a model feature via GraphQL. Use list_models to find valid model IDs.
Create an Arize performance monitor for a model metric via GraphQL. Use list_models for valid model IDs.
Create an Arize data quality monitor for a model feature via GraphQL. Use list_models for valid model IDs.
Update an Arize monitor's mute status, threshold, or contacts via GraphQL. Use list_monitors for valid IDs.
Delete an Arize monitor via GraphQL. Irreversible. Use list_monitors to find valid monitor IDs.
Get historical calculations for an Arize monitor within a time range via GraphQL.
Get the audit log for an Arize monitor showing configuration changes via GraphQL.
List all Arize projects with pagination. Use cursor from page_info to get the next page.
Create a new Arize project in a space. Use list_spaces to find valid space IDs.
Get an Arize project by ID. Use list_projects to find valid project IDs.
Delete an Arize project by ID. This action is irreversible. Use list_projects to find valid project IDs.
List all Arize prompts with pagination. Use cursor from page_info to get the next page.
Create a new Arize prompt with an initial version. Requires spaceid, name, and version config (commitmessage, provider, inputvariableformat, messages).
Get an Arize prompt by ID with its resolved version. Use list_prompts to find valid prompt IDs.
Update an Arize prompt's description. Use list_prompts to find valid prompt IDs.
Delete an Arize prompt by ID. This action is irreversible. Use list_prompts to find valid prompt IDs.
List all versions of an Arize prompt with pagination. Use cursor from page_info for next page.
Create a new version of an Arize prompt. Requires commitmessage, inputvariable_format, provider, and at least one message.
Get a specific Arize prompt version by version ID. Use listpromptversions to find valid version IDs.
Set labels on an Arize prompt version (e.g., 'production', 'staging'). Replaces all existing labels on this version.
Remove a specific label from an Arize prompt version. Use listpromptversions to see current labels.
Resolve an Arize prompt label to its current version. Use list_prompts to find valid prompt IDs.
List all Arize spaces with pagination. Use cursor from page_info to get the next page.
Create a new Arize space. organization_id is auto-fetched from existing spaces; provide it explicitly for accounts with no spaces yet.
Get an Arize space by ID. Use list_spaces to find valid space IDs.
Update an Arize space name or description. Use list_spaces to find valid space IDs.
Search and list Arize spans for a project with optional time range and filters. Supports pagination.
Validate Arize API key by listing projects. Returns success/failure with a human-readable message.

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}It's an MCP server that gives your agents access to Arize's AI observability and evaluation platform through tools. Your agents can invoke these tools to list and create monitors, manage prompt versions, query datasets, build annotation queues, and run evaluations, and more.
Arize offers an official MCP server, but you can use one from a third-party platform, like Merge Agent Handler.
The use cases naturally depend on the agent you've built, but here are a few common ones:
Here are some of the most commonly used tools:
list_monitors: returns all monitors configured for a model in Arize, including their status, metric type, and threshold settings. Useful for agents that need a snapshot of active monitoring coverage before deciding whether to create a new alert or update an existing onelist_models: retrieves all models registered in an Arize space. Call this when an agent needs to identify which model to scope a monitor, evaluation, or dataset to before taking further actionlist_prompt_versions: returns all versions of a prompt along with their metadata and labels. Good for workflows that compare prompt performance across versions or need to identify the current production-tagged version before running an evaluationcreate_prompt: registers a new prompt in Arize with a name, template, and version metadata. Use this when an agent needs to track a newly written prompt alongside its evaluation history from the first deploymentlist_evaluators: returns the evaluators available in an Arize space, including their type and configuration. Helpful when an agent needs to select the right evaluator before attaching it to a dataset or annotation queuelist_datasets: retrieves all datasets in an Arize space with their associated metadata. Call this when an agent needs to locate an existing dataset before adding examples or kicking off an evaluation run against itA few factors make Merge Agent Handler the stronger choice for teams connecting agents to Arize:
list_monitors and list_models. But it never gets access to create_annotation_queue, dataset write operations, or other tools outside its scopeYou can take the following steps:
1. Create or log into your Merge Agent Handler account.
2. Install the Merge CLI by running pipx install merge-api, then run merge configure to link the CLI to your Merge account and merge login to authenticate your session.
3. Register the Agent Handler MCP server with Claude Code by running claude mcp add --transport http agent-handler https://ah-api.merge.dev/mcp, then open Claude Code and run /mcp to confirm agent-handler appears with a connected status.
4. Select agent-handler from the MCP list. This opens a browser window where you select which integrations to authenticate. Choose Arize and complete the API key setup. Merge stores and manages the credentials going forward.
5. Open a Claude Code session and start querying Arize data directly. The first time you use an Arize tool, a Magic Link may appear to complete connector authentication.
If you want to connect Merge Agent Handler's Arize MCP with internal or customer-facing agentic products, you can follow the steps in our docs.
Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now