
List fired-alert groups (one per saved search that has triggered). Returns names used by getfiredalertsforsearch and deletefiredalerts.
List the triggered-alert records for one saved search by name; each entry's name is the alert id deletefiredalerts takes. Use listfiredalerts to find search names.
Delete one scheduler-fired alert record by its alert id (ids start with 'scheduler'; Splunk rejects records from a manual dispatch). Use getfiredalertsforsearch to find ids.
List available alert actions (email, webhook, script, ...). Returns names used by getalertaction and by createsavedsearch's 'actions' field.
Get configuration for one alert action by name, e.g. 'email'. Use listalertactions to find names.
List dashboards/views. Filter by name substring with 'search'. Returns names used by get_dashboard.
Get a dashboard/view by name, including its XML/definition. Use list_dashboards to find names.
List event types. Returns names used by geteventtype and updateeventtype, and usable as 'eventtype=NAME' in SPL.
Create an event type. Requires a unique name and the defining search expression.
Get an event type by name, including its defining search. Use list_eventtypes to find names.
Update an event type's search, priority, or disabled state by name. Only provided fields change. Use list_eventtypes to find names.
Delete an event type by name. Use list_eventtypes to find names.
List HTTP Event Collector (HEC) tokens/inputs. Returns names used by gethectoken and updatehectoken.
Create an HTTP Event Collector token. Only the name is required. Reference indexes discoverable via list_indexes.
Get an HTTP Event Collector token by name, including its token value and index settings. Use listhectokens to find names.
Update an HTTP Event Collector token's index, sourcetype, or disabled state by name. Only provided fields change. Use listhectokens to find names.
Delete an HTTP Event Collector token by name. Use listhectokens to find names.
List installed apps. Filter by name substring with 'search'. Returns names used by get_app.
Get an installed app by name, including its version and label. Use list_apps to find names.
List Splunk user accounts. Filter by username substring with 'search'. Returns names used by get_user.
Get a Splunk user by username, including roles and email. Use list_users to find names.
List Splunk roles. Returns names used by get_role, and the capabilities/index grants each role carries.
Get a Splunk role by name, including its capabilities and index access. Use list_roles to find names.
List all capabilities available on the deployment (the permission atoms roles are built from).
List authentication (JWT) tokens. Filter by owner with 'username'. Returns names used by deleteauthtoken.
Create an authentication (JWT) token for a user. Requires the owner username (name) and an audience label. Use list_users to find usernames.
Delete (revoke) an authentication token by owner username. Pass 'id' to target a specific token. Use listauthtokens to find names.
List data indexes. Filter by name substring with 'search' or by 'datatype'. Returns names used by getindex, updateindex, and referenced in SPL.
Create a data index. Only the name is required; datatype defaults to 'event'. Use list_indexes to check existing names first.
Get a data index by name, including retention and size settings. Use list_indexes to find names.
Update a data index's size, retention, or disabled state by name. Only provided fields change. Use list_indexes to find names.
Delete a data index by name. This removes the index and its data. Use list_indexes to find names.
List tags defined in the search app. Returns names used by get_tag and usable as 'tag=NAME' in SPL.
Get a tag by name, including the field::value pairs it maps. Use list_tags to find names.
List field extractions (EXTRACT/REPORT). Returns names used by getfieldextraction and deletefieldextraction.
Create a field extraction. All of name, type (EXTRACT/REPORT), value, and stanza are required. The stanza is a host/source/sourcetype name; discover valid sourcetypes with export_search on '| metadata type=sourcetypes index=*'.
Get a field extraction by name, including its type and regex/stanza. Use listfieldextractions to find names.
Delete a field extraction by name. Use listfieldextractions to find names.
List KV store collection definitions in a namespace (owner/app). Returns names used by getkvstorecollection and by the KV data tools.
Create a KV store collection in a namespace (owner/app). Only the name is required; field types and acceleration are optional.
Get a KV store collection definition by name in a namespace (owner/app). Use listkvstorecollections to find names.
Update a KV store collection's field types or acceleration by name in a namespace. Only provided fields change. Use listkvstorecollections to find names.
Delete a KV store collection (and all its records) by name in a namespace. Use listkvstorecollections to find names.
Query documents in a KV store collection with an optional Mongo-style filter, field projection, and sort. Returns documents keyed by key. Use listkvstore_collections to find collection names.
Insert one document into a KV store collection (JSON body). Returns the new key. Include 'key' in the document to set it explicitly. Use listkvstorecollections to find collection names.
Get a single KV store document by its key. Use querykvstorerecords to find keys and listkvstore_collections to find collection names.
Replace a KV store document by its key with a new document (JSON body). Use querykvstore_records to find keys.
Delete documents from a KV store collection matching an optional filter. With no query ALL documents are removed. Use listkvstorecollections to find collection names.
Delete a single KV store document by its key. Use querykvstore_records to find keys.
Insert or update many KV store documents in one call (JSON array body); include 'key' to update an existing document. Use listkvstore_collections to find collection names.
List lookup-table definitions. Returns names used by getlookup and updatelookup, and referenceable in SPL 'lookup' commands.
Create a lookup-table definition. Only the name is required; type defaults to 'file'. For kvstore lookups, find collection names with listkvstorecollections.
Get a lookup-table definition by name. Use list_lookups to find names.
Update a lookup-table definition's file, collection, or field list by name. Only provided fields change. Use list_lookups to find names.
Delete a lookup-table definition by name. Use list_lookups to find names.
List search macros. Returns names used by getmacro and updatemacro, and referenceable in SPL with backticks.
Create a search macro. Requires a name (with arg count in parentheses if it takes args) and the SPL definition.
Get a search macro by name, including its definition. Use list_macros to find names.
Update a search macro's definition or arguments by name. Only provided fields change. Use list_macros to find names.
Delete a search macro by name. Use list_macros to find names.
List saved searches (reports and alerts). Filter by name substring with 'search'. Returns names used by getsavedsearch, updatesavedsearch, dispatchsavedsearch.
Create a saved search. Requires a unique name and the SPL. Index/field names referenced in the SPL can be discovered with list_indexes.
Get a saved search by name, including its SPL and schedule. Use listsavedsearches to find names.
Update a saved search's SPL, schedule, or alert settings by name. Only provided fields change. Use listsavedsearches to find names.
Delete a saved search by name. Use listsavedsearches to find names.
Run a saved search now, creating a new search job. Returns the job id (sid) for getsearchresults. The saved SPL (and its alert actions, if triggered) can write data, so treat this as a write. Use listsavedsearches to find names.
List the past search jobs dispatched from a saved search, by name. Use listsavedsearches to find names.
List search jobs on the deployment. Filter by SPL substring with 'search'. Returns job ids (sid) for getsearchjob and getsearchresults.
Dispatch a new search job from SPL. Returns the job id (sid); poll with getsearchjob and read output with getsearchresults. Set execmode='blocking' to wait for completion, or use exportsearch for inline results. SPL can write data (outputlookup, collect, delete), so treat this as a write.
Get the status and metadata of a search job by its id (sid). Use listsearchjobs or createsearchjob to find the sid.
Delete (cancel and remove) a search job by its id (sid). Use listsearchjobs to find the sid.
Control a running search job: pause, unpause, finalize, cancel, touch, setttl, setpriority, save, or unsave. Use listsearchjobs to find the sid.
Get the transformed results of a completed search job by its sid. Supports pagination (count/offset) and post-process SPL via 'search'. Use createsearchjob first.
Get preview (partial) results of a still-running search job by its sid. Use createsearchjob first; for final results use getsearchresults.
Get the raw matching events (pre-transformation) of a search job by its sid, with optional time-range and field filters. Use createsearchjob first.
Get the field summary (per-field statistics) for a search job by its sid. The job must be created with statusbuckets set (createsearch_job); otherwise the summary is empty.
Get the event-timeline buckets for a search job by its sid. The job must be created with statusbuckets set (createsearch_job); otherwise no buckets are returned.
Run SPL and stream back matching results in one call without persisting a job. Good for one-off queries. Returns at most 100 rows by default (cap 10000). SPL can write data (outputlookup, collect, delete), so treat this as a write. For long-running work use createsearchjob plus getsearchresults.
Get deployment server info: version, build, GUID, OS, and hardware. Also used to validate connectivity.
Get deployment server settings: ports, SPLUNK_DB path, SSL, and session timeout.
Get the splunkd health report (overall green/yellow/red and red/yellow feature counts).
List system bulletin messages (banner notices such as disk-space or crash warnings).
Validate Splunk credentials and connectivity by fetching server info. Returns success and a 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}Whether you're an engineer experimenting with agents or a product manager looking to add tools, you can get started for free now