AbuseZero MCP server
Connect AI apps to your AbuseZero workspace with the AbuseZero MCP server, over the Model Context Protocol.
AbuseZero runs a remote MCP server that any client supporting the standard Streamable HTTP transport can use. AI apps work with the same actions as the AbuseZero REST API, with the same envelopes, permission checks and idempotency. Every tool also has a matching command in the AbuseZero CLI. A connection only sees the tools its scopes allow, and it only reaches the workspaces it was granted.
https://mcp.abusezero.com/mcpConnect an AI app to the MCP server
Remote MCP server
Add a remote MCP server with the address above. The app opens your browser to sign in to AbuseZero with OAuth, where you approve the permissions it asks for. Configuration formats vary by app. A typical entry looks like this:
{
"mcpServers": {
"abusezero": { "url": "https://mcp.abusezero.com/mcp" }
}
}When you approve a new app, AbuseZero emails you that it was connected. You can disconnect an app at any time in Developers → Connected apps.
Local MCP server
For apps that start MCP servers on your computer, run the local server from the abusezero package:
{
"mcpServers": {
"abusezero": { "command": "npx", "args": ["-y", "abusezero", "mcp"] }
}
}The local server connects to the remote server, so its tools, resources and prompts are identical. It uses your AbuseZero CLI sign-in and selected workspace. To use a secret or restricted key instead, set ABUSEZERO_API_KEY in the app's environment for the server.
MCP server authentication
| Credential | Workspace | Permissions |
|---|---|---|
| OAuth sign-in | Chosen in the session with abusezero_select_workspace | The scopes you approved, limited by your role in the workspace |
Secret or restricted key, sent as Authorization: Bearer <key> | The key's workspace | The key's scopes |
Publishable keys can't connect.
Choose a workspace
OAuth connections start without a workspace:
- Call
abusezero_list_workspacesto see the workspaces the sign-in can use. - Call
abusezero_select_workspacewith aworkspace_idsuch asws_8a1f3c6e-2d4b-4e9a-b7c5-0f3d6a9e2b81. - Call
abusezero_get_connection_contextat any time to see the credential type and selected workspace.
Workspace tools return WORKSPACE_REQUIRED until a workspace is selected. Key connections already use their key's workspace, so selecting one returns WORKSPACE_ALREADY_BOUND.
MCP tool behavior
- Inputs are the request fields of the matching REST API endpoint. Path IDs, such as
id, are inputs too. - Changes take an
idempotency_keyinput of 1 to 128 printable characters with no spaces. Send the same key to retry a change safely. - Annotations mark each tool as read-only, changing data or permanent, so your app can ask before it acts.
- Results carry the same response envelope as the REST API in
structuredContent, plusrequest_id, and a one-line text summary. - Errors set
isError.structuredContentcarries the error envelope, and the text readsCODE: message.
MCP tools
Every tool links to the AbuseZero REST API endpoint it calls, where its inputs, response and errors are described. The Scope column is the tool's scope.
| Tool | What it does | Scope |
|---|---|---|
abusezero_select_workspace | Choose the workspace for this session. | workspaces:read |
abusezero_get_connection_context | Show the credential type and selected workspace. | None |
abusezero_list_workspaces | List the workspaces this connection can use. | workspaces:read |
abusezero_create_evaluation | Evaluate a claim. | evaluations:create |
abusezero_preview_evaluation | Preview how AbuseZero would evaluate a claim, without writing claim history. | simulations:run |
abusezero_list_evaluations | List evaluations. | evaluations:read |
abusezero_get_evaluation | Read an evaluation. | evaluations:read |
abusezero_get_evaluation_graph | Read the earlier claims linked to an evaluation. | evaluations:read |
abusezero_get_evaluation_evidence | Read the evidence retained for an evaluation. | evaluation_evidence:read |
abusezero_report_outcome | Report what happened after an evaluation. | outcomes:write |
abusezero_list_outcomes | List outcomes. | outcomes:read |
abusezero_get_outcome | Read an outcome. | outcomes:read |
abusezero_simulate_sequence | Run a benefit's recent claims through a policy, in order, as one sequence. | simulations:run |
abusezero_replay_evaluations | Compare recent evaluations with how a saved policy would decide them. | simulations:run |
abusezero_list_benefits | List benefits. | benefits:read |
abusezero_create_benefit | Create a benefit. | benefits:write |
abusezero_get_benefit | Read a benefit. | benefits:read |
abusezero_update_benefit | Update a benefit. | benefits:write |
abusezero_delete_benefit | Delete a benefit. Permanent. | benefits:write |
abusezero_list_policies | List policies. | policies:read |
abusezero_create_policy | Create a custom policy. | policies:write |
abusezero_get_policy | Read a policy. | policies:read |
abusezero_update_policy | Save a new version of a policy. | policies:write |
abusezero_duplicate_policy | Copy a policy. | policies:write |
abusezero_delete_policy | Delete a policy. Permanent. | policies:write |
abusezero_list_policy_versions | List a policy's versions. | policies:read |
abusezero_get_policy_version | Read one version of a policy. | policies:read |
abusezero_list_policy_signals | List the conditions custom rules can use. | policies:read |
abusezero_list_access_lists | List allow and block list entries. | access_lists:read |
abusezero_add_access_list_entry | Add one or more values to an allow or block list. | access_lists:write |
abusezero_get_access_list_entry | Read a list entry. | access_lists:read |
abusezero_delete_access_list_entry | Remove a list entry. Permanent. | access_lists:write |
abusezero_list_custom_identifiers | List custom identifiers. | custom_identifiers:read |
abusezero_register_custom_identifier | Register a custom identifier. | custom_identifiers:write |
abusezero_get_custom_identifier | Read a custom identifier. | custom_identifiers:read |
abusezero_delete_custom_identifier | Delete a custom identifier. Permanent. | custom_identifiers:write |
abusezero_list_imports | List imports. | imports:read |
abusezero_create_outcome_import | Import granted outcomes as JSON. | imports:write |
abusezero_create_csv_import | Start a CSV import and get its upload address. | imports:write |
abusezero_get_import | Read an import's progress. | imports:read |
abusezero_get_import_errors | Get the error report for an import. | imports:read |
abusezero_validate_import | Validate an uploaded import. | imports:write |
abusezero_confirm_import | Confirm a validated import. | imports:write |
abusezero_cancel_import | Cancel an import and delete its uploaded file and unfinished rows. Permanent. | imports:write |
abusezero_list_exports | List exports. | exports:read |
abusezero_request_export | Request an export. | exports:create |
abusezero_get_export | Read an export's status. | exports:read |
abusezero_get_export_download | Get a download address for a finished export. | exports:read |
abusezero_preview_data_deletion | Preview what a data deletion would remove. | data_deletions:write |
abusezero_request_data_deletion | Request a data deletion. Permanent. | data_deletions:write |
abusezero_list_data_deletions | List data deletions. | data_deletions:read |
abusezero_get_data_deletion | Read a data deletion's status. | data_deletions:read |
abusezero_get_analytics | Read daily evaluation totals. | analytics:read |
abusezero_list_request_logs | List evaluation requests, including failed ones. | request_logs:read |
abusezero_get_request_log | Read a request log. | request_logs:read |
abusezero_list_audit_logs | List audit events. | audit_logs:read |
abusezero_get_audit_log | Read an audit event. | audit_logs:read |
abusezero_get_browser_collection | Read browser setup: sites, issues and recent coverage. | browser_collection:read |
abusezero_update_browser_collection | Update your site list. | browser_collection:write |
abusezero_list_agents | List the AI agents AbuseZero recognizes. | agents:read |
MCP resources
Apps that read MCP resources can open single records by address:
| Resource | Contents |
|---|---|
abusezero://benefits/{id} | A benefit, as returned by abusezero_get_benefit. |
abusezero://policies/{id} | A policy, as returned by abusezero_get_policy. |
abusezero://evaluations/{id} | An evaluation, as returned by abusezero_get_evaluation. |
abusezero://imports/{id} | An import, as returned by abusezero_get_import. |
MCP prompts
Prompts give an AI app a ready-made, careful workflow. None of them changes anything on its own.
| Prompt | Argument | What it does |
|---|---|---|
review_policy | policy_id | Reviews a saved policy without changing it. |
investigate_denial | evaluation_id | Walks through a denied evaluation, read-only, using its reason code. |
simulate_policy_change | policy_id | Proposes a change to a policy and tests it with a simulation before anything is published. See Test changes safely. |
Actions not available through the MCP server
Browser observation, which needs the AbuseZero browser SDK, and dashboard-only work, such as API keys, billing and members, aren't MCP tools. See Exclusions for the full list and the reasons.
How is this guide?
Last updated on