AbuseZero

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/mcp

Connect 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:

MCP client configuration
{
  "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:

MCP client configuration
{
  "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

CredentialWorkspacePermissions
OAuth sign-inChosen in the session with abusezero_select_workspaceThe scopes you approved, limited by your role in the workspace
Secret or restricted key, sent as Authorization: Bearer <key>The key's workspaceThe key's scopes

Publishable keys can't connect.

Choose a workspace

OAuth connections start without a workspace:

  1. Call abusezero_list_workspaces to see the workspaces the sign-in can use.
  2. Call abusezero_select_workspace with a workspace_id such as ws_8a1f3c6e-2d4b-4e9a-b7c5-0f3d6a9e2b81.
  3. Call abusezero_get_connection_context at 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_key input 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, plus request_id, and a one-line text summary.
  • Errors set isError. structuredContent carries the error envelope, and the text reads CODE: 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.

ToolWhat it doesScope
abusezero_select_workspaceChoose the workspace for this session.workspaces:read
abusezero_get_connection_contextShow the credential type and selected workspace.None
abusezero_list_workspacesList the workspaces this connection can use.workspaces:read
abusezero_create_evaluationEvaluate a claim.evaluations:create
abusezero_preview_evaluationPreview how AbuseZero would evaluate a claim, without writing claim history.simulations:run
abusezero_list_evaluationsList evaluations.evaluations:read
abusezero_get_evaluationRead an evaluation.evaluations:read
abusezero_get_evaluation_graphRead the earlier claims linked to an evaluation.evaluations:read
abusezero_get_evaluation_evidenceRead the evidence retained for an evaluation.evaluation_evidence:read
abusezero_report_outcomeReport what happened after an evaluation.outcomes:write
abusezero_list_outcomesList outcomes.outcomes:read
abusezero_get_outcomeRead an outcome.outcomes:read
abusezero_simulate_sequenceRun a benefit's recent claims through a policy, in order, as one sequence.simulations:run
abusezero_replay_evaluationsCompare recent evaluations with how a saved policy would decide them.simulations:run
abusezero_list_benefitsList benefits.benefits:read
abusezero_create_benefitCreate a benefit.benefits:write
abusezero_get_benefitRead a benefit.benefits:read
abusezero_update_benefitUpdate a benefit.benefits:write
abusezero_delete_benefitDelete a benefit. Permanent.benefits:write
abusezero_list_policiesList policies.policies:read
abusezero_create_policyCreate a custom policy.policies:write
abusezero_get_policyRead a policy.policies:read
abusezero_update_policySave a new version of a policy.policies:write
abusezero_duplicate_policyCopy a policy.policies:write
abusezero_delete_policyDelete a policy. Permanent.policies:write
abusezero_list_policy_versionsList a policy's versions.policies:read
abusezero_get_policy_versionRead one version of a policy.policies:read
abusezero_list_policy_signalsList the conditions custom rules can use.policies:read
abusezero_list_access_listsList allow and block list entries.access_lists:read
abusezero_add_access_list_entryAdd one or more values to an allow or block list.access_lists:write
abusezero_get_access_list_entryRead a list entry.access_lists:read
abusezero_delete_access_list_entryRemove a list entry. Permanent.access_lists:write
abusezero_list_custom_identifiersList custom identifiers.custom_identifiers:read
abusezero_register_custom_identifierRegister a custom identifier.custom_identifiers:write
abusezero_get_custom_identifierRead a custom identifier.custom_identifiers:read
abusezero_delete_custom_identifierDelete a custom identifier. Permanent.custom_identifiers:write
abusezero_list_importsList imports.imports:read
abusezero_create_outcome_importImport granted outcomes as JSON.imports:write
abusezero_create_csv_importStart a CSV import and get its upload address.imports:write
abusezero_get_importRead an import's progress.imports:read
abusezero_get_import_errorsGet the error report for an import.imports:read
abusezero_validate_importValidate an uploaded import.imports:write
abusezero_confirm_importConfirm a validated import.imports:write
abusezero_cancel_importCancel an import and delete its uploaded file and unfinished rows. Permanent.imports:write
abusezero_list_exportsList exports.exports:read
abusezero_request_exportRequest an export.exports:create
abusezero_get_exportRead an export's status.exports:read
abusezero_get_export_downloadGet a download address for a finished export.exports:read
abusezero_preview_data_deletionPreview what a data deletion would remove.data_deletions:write
abusezero_request_data_deletionRequest a data deletion. Permanent.data_deletions:write
abusezero_list_data_deletionsList data deletions.data_deletions:read
abusezero_get_data_deletionRead a data deletion's status.data_deletions:read
abusezero_get_analyticsRead daily evaluation totals.analytics:read
abusezero_list_request_logsList evaluation requests, including failed ones.request_logs:read
abusezero_get_request_logRead a request log.request_logs:read
abusezero_list_audit_logsList audit events.audit_logs:read
abusezero_get_audit_logRead an audit event.audit_logs:read
abusezero_get_browser_collectionRead browser setup: sites, issues and recent coverage.browser_collection:read
abusezero_update_browser_collectionUpdate your site list.browser_collection:write
abusezero_list_agentsList the AI agents AbuseZero recognizes.agents:read

MCP resources

Apps that read MCP resources can open single records by address:

ResourceContents
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.

PromptArgumentWhat it does
review_policypolicy_idReviews a saved policy without changing it.
investigate_denialevaluation_idWalks through a denied evaluation, read-only, using its reason code.
simulate_policy_changepolicy_idProposes 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

On this page