Docs

Add AgentArmorHQ in a minute.

Get a free key, paste one command, and every package gets checked against live threat reports before it is installed. Same answer in Claude, Cursor, your terminal, CI and the API.

On this page

Quickstart

Three steps. About a minute.

  1. Get a free key

    Sign in at agentarmorhq.com/account. Your first key is created for you with the command below already filled in. Free includes 100 checks a month.

  2. Paste one command

    Pick where you work. Replace YOUR_API_KEY with your key.

  3. Ask your assistant

    Then try: check this package before installing

Run once in your terminal.

bash
claude mcp add --transport http agentarmor "https://agentarmorhq.com/api/mcp?key=YOUR_API_KEY"

Check your whole setup: paste your MCP config on /check. Secrets are removed in your browser first.

Download the 2-page setup guide (PDF)

What the answers mean

Every check tells you whether to install it right now. The answer is Block, Review, No known issues or Ungraded. Block is the only one that says do not install.

Block

Do not install. The package or version is reported as malicious, or it does not exist.

Review

Look before you install. Pin the version and check the source before you go on. If the lookup did not finish, try again.

No known issues

Nothing reported against it. It is not a promise. Reports change, so check again before you install.

Ungraded

We have no grade for it. The package is not in our AI-tools catalog, so there is no A to F grade. The check still ran.

Real examples

Actual output, generated Oct 24, 2026. Answers change through the day, so run a check for the current one.

Blockaxios@1.14.1A hijacked version
AgentArmorHQ Check: axios@1.14.1 (npm:axios)
Decision: BLOCK — Reported compromised in threat research: version 1.14.1 was hijacked. Do not install.
Risk Grade: Not graded yet
Outside Threat Reports: 3 report(s): The State of Open Source Supply Chain Attacks [compromised] (affected versions: 1.14.1, 0.30.4); Malware in axios [malicious] (affected versions: 1.14.1, 0.30.4); Malicious code in axios (npm) [malicious] (affected versions: 0.30.4, 1.14.1)
Registry (npm): latest 1.20.0, first published 4438 days ago, 1 maintainer
Caution: Version 1.14.1 does not exist on npm
Hardened Command: # DO NOT INSTALL axios@1.14.1 — remove immediately if present:
npm uninstall axios
Interactive Check: https://agentarmorhq.com/check?t=npm%3Aaxios
Threat reports checked Oct 24, 2026. Our opinion, not a code audit or security guarantee.
BlockimgdecodeKnown malware
AgentArmorHQ Check: imgdecode (npm:imgdecode)
Decision: BLOCK — Reported malicious in threat research: every version of this package should be treated as harmful. Do not install.
Risk Grade: Not graded yet
Outside Threat Reports: 4 report(s): Our code analysis flagged this version [malicious] (affected versions: 1.0.3); MALFEX npm Package 'imgdecode' Hides Shellcode Loader in Windows Native Addon [malicious] (affected versions: 1.0.0, 1.0.1, 1.0.2, 1.0.3); Malicious code in imgdecode (npm) [malicious] (affected versions: 1.0.1, 1.0.0, 1.0.2); Malware in imgdecode [malicious]
Registry (npm): latest 0.0.1-security, first published 1 day ago, 1 maintainer
Caution: New package (published 1 days ago)
Hardened Command: # DO NOT INSTALL imgdecode — remove immediately if present:
npm uninstall imgdecode
Interactive Check: https://agentarmorhq.com/check?t=npm%3Aimgdecode
Threat reports checked Oct 24, 2026. Our opinion, not a code audit or security guarantee.
Blockreqeusts-helperA name that does not exist
AgentArmorHQ Check: reqeusts-helper (npm:reqeusts-helper)
Decision: BLOCK — This package does not exist on npm. AI assistants sometimes invent package names, and attackers register them later. Do not install; check the spelling.
Risk Grade: Not graded yet
Outside Threat Reports: 0 reports on file
Hardened Command: npm install --ignore-scripts --save-exact "reqeusts-helper"
Interactive Check: https://agentarmorhq.com/check?t=npm%3Areqeusts-helper
Threat reports checked Oct 24, 2026. Our opinion, not a code audit or security guarantee.
No known issuesaxiosThe current release, with a warning about the bad ones
AgentArmorHQ Check: axios (npm:axios)
Decision: NO KNOWN ISSUES — The latest version, 1.20.0, is not affected. Versions 1.14.1, 0.30.4 were hijacked and reported; never install those. Pin 1.20.0 exactly.
Risk Grade: Not graded yet
Outside Threat Reports: 3 report(s): The State of Open Source Supply Chain Attacks [compromised] (affected versions: 1.14.1, 0.30.4); Malware in axios [malicious] (affected versions: 1.14.1, 0.30.4); Malicious code in axios (npm) [malicious] (affected versions: 0.30.4, 1.14.1)
Registry (npm): latest 1.20.0, first published 4438 days ago, 1 maintainer
Hardened Command: npm install --ignore-scripts --save-exact "axios@1.20.0"
Interactive Check: https://agentarmorhq.com/check?t=npm%3Aaxios
Threat reports checked Oct 24, 2026. Our opinion, not a code audit or security guarantee.

A full report tells you what a package can reach on your computer and what it does when it installs: $19 once, or 3 a month on Pro.

MCP tools

The MCP server lives at https://agentarmorhq.com/api/mcp. Your assistant picks the right tool on its own; you can also name one.

ToolInputWhat it does
check_packagetargetCheck an npm package, PyPI package, MCP server or GitHub repo before installing. Returns the decision and a hardened install command.
check_mcp_configconfigPaste a claude_desktop_config.json, .cursor/mcp.json, package.json or a list of packages. Credentials are redacted, every entry is checked, and risky flags and mounts are flagged.
explain_commandcommandExplains in plain English what an install hook or shell command does, including Base64 or hex payloads, before you run it.
search_skillsquery, limit (1 to 20, default 8)Search the catalog of graded AI skills and MCP servers by keyword. Returns grades, stars, downloads and links.
account_statuskey (optional)Shows your plan, full reports left and watched-package quota for the connected key.

CLI

One file, no dependencies, Node 18 or newer. Run it straight from the web:

bash
curl -fsSL https://agentarmorhq.com/api/cli | node --input-type=module - check <target>
CommandWhat it does
check <target...>Check one or more targets: a name, npm:name@version, pypi:name or a GitHub repo URL.
ci [dir]Check the dependencies pinned in package.json (exact versions from package-lock.json when present) and requirements.txt.
config <file>Inspect an MCP client config. Secrets are redacted on your machine before anything is sent.
gate [dir]Check the MCP configs and skills in a repository against your organization policy. Needs an org token (aaci_).
explain "<command>"Explain a shell command, including decoded Base64 or hex payloads.
search <query>Search graded AI skills and MCP servers.
statusShow your plan, reports left and usage.
mcpRun the stdio bridge that Claude Desktop uses.

Flags

FlagWhat it does
--jsonPrint the raw JSON instead of the text answer.
--strictAlso exit 1 on grade D or F, or a Review answer.
--devWith ci: include devDependencies.
--policy <file>With ci or config: use this policy file instead of .agentarmor.yml in the folder.
--githubWith ci or config: print GitHub annotations and write the job summary.
--key <key>API key. Or set AGENTARMOR_API_KEY.

Team policy file

Put .agentarmor.yml (or .agentarmor.json, same keys) in your repo to set your own rules. A name matches with or without npm: or pypi: and with or without a version. An allow entry never overrides a confirmed Block. Only an ignore entry can, and it needs a reason. Unknown keys and missing reasons stop the run with exit code 2, so a typo cannot quietly turn a rule off.

yaml
# .agentarmor.yml
block_grades: [D, F]        # fail on these grades too
allow:                      # never fail on a grade for these
  - "@modelcontextprotocol/server-filesystem"
ignore:                     # skip completely; a reason is required
  - name: some-package
    reason: We use our own patched copy. Tracked in #123.

Your organization policy in the pull request check

The setup guides for AgentArmor for Teams are in the Teams docs.

If your team uses AgentArmor for Teams, the same check can read your organization policy. Create a CI token in your organization, save it as a repository secret, and pass it as org-token. The check then reads .mcp.json, .cursor/mcp.json, .vscode/mcp.json, .claude/settings.json, .windsurf/, mcp_config.json and every skill folder in .claude/skills.

yaml
      - uses: agentarmorhq/action@bfa0ba334769825920c7c729d6eb3260866774e8 # v1.1.2
        with:
          org-token: ${{ secrets.AGENTARMOR_ORG_TOKEN }}
          mode: strict
  • It fails the job for a blocked item, for a changed pinned version or changed skill files, and, with mode: strict, for anything the policy does not list.
  • An item that is still under review gets a warning.
  • An item AgentArmor reports as malicious fails even if your organization approved it. Nothing in the repository file clears it, not even an ignore entry.
  • The repository file can only make the rules tighter, unless an admin lists the repository in Settings. A listed repository's allow list can allow tools that are not on the organization list. It can never clear a Blocked item.
  • If the policy cannot be fetched, the job fails with exit code 2.
  • The result is sent to your organization: repository, commit, counts and the names of the items that failed.
yaml
# .agentarmor.yml
org: acme                   # your organization's address
block:                      # always fail, whatever the org says
  - "https://mcp.example.net/*"
  - some-package
ignore:                     # clear one failure; a reason is required
  - name: some-package
    reason: We use our own patched copy. Tracked in #123.

Exit codes

CodeMeaning
0Nothing blocked.
1Something was blocked, or a --strict failure.
2Error: bad usage, network failure, invalid key, quota reached, or the threat-report lookup did not complete.

API

One endpoint, /api/v1/check. It returns the same answer as the MCP tool, as readable text and as JSON.

Single check

bash
curl -H "Authorization: Bearer $AGENTARMOR_API_KEY" \
  "https://agentarmorhq.com/api/v1/check?target=npm:axios@1.14.1"

Batch

POST up to 100 targets (each up to 300 characters, body up to 64 KB). Results come back in order; each counts as one check.

bash
curl -X POST https://agentarmorhq.com/api/v1/check \
  -H "Authorization: Bearer $AGENTARMOR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"targets":["npm:axios@1.14.1","pypi:requests","github:owner/repo"]}'

Authentication and limits

A key is required. Send Authorization: Bearer aa_live_... (or X-AgentArmor-Key). Create one at /account.

PlanChecks a month
Free100
Pro2,500
Team25,000

Every response carries X-Quota-Limit, X-Quota-Remaining and X-Quota-Reset (the next reset, UTC).

StatusMeaning
200Checked. Look at blocked and decision.
400Bad request: missing or oversized target, or invalid JSON.
401No key, or an invalid or revoked key.
429Monthly limit reached (quota_exceeded) or too many requests in a minute (rate_limited). Honor Retry-After.

Data sources

We combine public security advisories, malware reports and package signals, updated through the day.

Recommended setups

Ready-to-copy mcp.json files built from well-graded connectors, with install scripts turned off and access scoped narrowly.

Grade A/B picks

Hardened Coding & Repo Stack

Scoped local project folder access, read-first GitHub repository queries, and isolated headless browser testing with install scripts disabled.

  • Pins --ignore-scripts on every npx invocation to block postinstall hooks
  • Scopes filesystem access to a single workspace folder instead of your home directory
  • Runs Playwright in isolated headless mode with no personal browser profile access
json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-filesystem@2025.7.1",
        "/path/to/your-project"
      ]
    },
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-github@2025.4.8"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_READ_ONLY_PAT}"
      }
    },
    "playwright": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@playwright/mcp@latest",
        "--headless",
        "--isolated"
      ]
    }
  }
}
Least-privilege DB

Read-Only Data & Postgres Stack

Connects your assistant to Postgres or Supabase using a read-only database role and strict query timeouts so prompts cannot alter production tables.

  • Uses a read-only connection string with a 5-second statement timeout
  • Never exposes a service_role key that bypasses row-level security
  • Blocks npm install-time scripts with --ignore-scripts
json
{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-postgres@0.6.2",
        "postgresql://readonly_user:${DB_PASSWORD}@localhost:5432/analytics_db"
      ]
    },
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-memory@2025.4.8"
      ]
    }
  }
}
Zero local credentials

Isolated Web Research & Docs Stack

Fetches public documentation and stores session notes without granting access to your personal email, cloud accounts, or private SSH keys.

  • Zero cloud or email tokens required
  • Keeps local notes inside a dedicated scratch folder
  • Disables automatic package install hooks
json
{
  "mcpServers": {
    "fetch": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-fetch@2025.4.8"
      ]
    },
    "notes": {
      "command": "npx",
      "args": [
        "-y",
        "--ignore-scripts",
        "@modelcontextprotocol/server-filesystem@2025.7.1",
        "/path/to/research-notes-folder"
      ]
    }
  }
}

Check before you install.

Free key, one command, 100 checks a month.