Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Niro

MCPB · NIRO.MCPB

AI pentester for PRs — finds exploitable bugs and hands your developer agent the fix.

Available components

0 this week 52 Trust /100

Last scanned (17 hours ago)

Scores higher than 84% of MCPB servers

Category Security

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.Unverified
  • Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).Unverified
Provenance & Transparency35
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • License check failed: the license (LicenseRef-Niro-Community-1.0) isn't a recognized OSI-approved license. See how to fix → Fail
  • Actively maintained (last published 111 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 1124 tokens (~102/item across 11 items; 11 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 93% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "manage_finding" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

What we tested

Checks we ran (12)

  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (4)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Malware scan in Supply Chain Security (scores 0 for this)No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  • Known CVEs in Supply Chain Security (scores 0 for this)Known CVEs could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).
  • Install scripts in Supply Chain Security (scores 0 for this)Install-script risk not yet assessed.
  • Dependency health in Supply Chain Security (scores 0 for this)Dependency health could not be checked: we found no dependency list to check in this bundle: either it runs a compiled binary, whose bundled manifests we do not read, or none of the package.json, requirements.txt, pyproject.toml or uv.lock files it ships for its runtime declares a dependency we can read (a requirements.txt that only points at a setup.py project, a local path, or a nested requirements file we cannot follow counts as none).

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +1
    • Stability: 0.97 → pass security
  • 3 Nov 26 −1
    • Stability: pass → 0.93 functional
  • 28 Oct 26 +1
    • Stability: 0.97 → pass security
  • 26 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed mcpb/https://github.com/apxlabs-ai/niro/releases/download/v0.1.61/niro.mcpb

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem mcpb
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 11 exposed · ~1,055 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
cancel_pentest ~52

Abort the current pentest (use close_pentest for finished runs). Idempotent.

NameTypeReqDescription
pentest_idstring–Defaults to the current pentest; provide for dangling pentests from a prior session.

No output schema declared.

No examples provided.

close_pentest ~55

Clean up after a finished pentest. Idempotent. cancel_pentest is for in-flight runs.

NameTypeReqDescription
pentest_idstring–Defaults to the current pentest; provide for dangling pentests from a prior session.

No output schema declared.

No examples provided.

draft_scope ~179

Map a running app and write a scope.yaml draft (scope.draft.yaml) of every host it reaches, so a pentest isn't blocked on hosts left out of scope. Blocks until the map is done or timeout_seconds elapses. Review the draft and rename it to scope.yaml to authorize testing.

NameTypeReqDescription
niro_config_dirstringyesAbsolute path to config dir containing niro.yaml (and optional credentials.yaml).
output_pathstring–Where to write the draft. Default: <niro_config_dir>/scope.draft.yaml.
timeout_secondsinteger–Wall-clock ceiling for the mapping, in seconds. Default 600. A timeout yields a partial draft.
urlstringyesURL of the running app to map (e.g. https://app.example.com). A localhost URL maps the app on your host.

No output schema declared.

No examples provided.

generate_pentest_report ~41

Generate a customer PDF from the current completed pentest and return its path.

NameTypeReqDescription
output_dirstringyesAbsolute directory outside the project for the PDF.

No output schema declared.

No examples provided.

get_pentest_status ~33

Read the current pentest's state. Poll every 60s while running. Returns the coverage map on completion.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_recipe ~75

Return a niro-pentest playbook by name. The niro-pentest skill and the subagents it spawns call this to load their full operating contract before doing any work.

NameTypeReqDescription
namestringyesPlaybook name: orchestrator, harness-operator, finding-verifier, remediator, or dev-handoff-summary.

No output schema declared.

No examples provided.

get_test_case_detail ~43

Fetch one test case in full. Use list_test_cases for summaries first.

NameTypeReqDescription
test_case_idstringyese.g. TC-AB12CD34.

No output schema declared.

No examples provided.

list_test_cases ~69

List the current pentest's test cases as paginated summaries. Re-call after manage_finding for fresh state. Use get_test_case_detail for one case in full.

NameTypeReqDescription
filterstringyesWhich test cases to return.
limitinteger––
offsetinteger––

No output schema declared.

No examples provided.

manage_finding ~122

Delete one test case finding or dispute its verdict. One id per call. Delete is sync; dispute is async — follow next_action.

NameTypeReqDescription
actionstringyesdelete permanently removes the FAILED finding (sync). dispute re-runs the exploit with the caller's reasoning as a directive to settle a fresh verdict (async, follow next_action).
reasonstring–Required for dispute; omit for delete. The developer agent's argument for why the prior verdict was wrong.
test_case_idstringyese.g. TC-AB12CD34.

No output schema declared.

No examples provided.

start_pentest ~298

Run a pentest against a URL. Async — follow next_action.

NameTypeReqDescription
base_shastring–Immutable base commit SHA, not a ref (mode=range).
goalstring–What to pentest — surface, concerns, auth context (mode=directed).
head_shastring–Immutable head commit SHA, not a ref (mode=range).
modestringyespr: pentest pr_number's diff. range: pentest base_sha..head_sha diff. directed: pentest what goal describes.
niro_config_dirstringyesAbsolute path to config dir containing niro.yaml + scope.yaml.
pr_numberinteger–GitHub PR number (mode=pr).
project_rootstring–Optional for directed black-box runs. Required for mode=pr. Absolute path to project source when available.
reflection_tokenstring–Echo the token from a prior needs_review to acknowledge.
urlstringyesURL of the target to pentest. For local white-box runs, this is usually the server running project_root's code. Must be safe to probe with potentially-destructive payloads.
url_serves_latest_codeboolean–Required when project_root is supplied. Set true only after confirming the URL serves that source; in pr/range mode it must serve the selected head revision. Ignored for black-box runs without projec…

No output schema declared.

No examples provided.

start_triage ~88

Screen a PR's diff to decide if a pentest is required. Call before start_pentest.

NameTypeReqDescription
modestringyespr: triage pr_number's diff.
niro_config_dirstringyesAbsolute path to config dir containing niro.yaml.
pr_numberintegeryesGitHub PR number.
project_rootstringyesAbsolute path to project source.

No output schema declared.

No examples provided.

Install

How do I install the Niro MCP server?

Niro ships as an MCPB bundle, a single file you download and open in an MCP host that supports MCPB bundles, such as Claude Desktop. The host reads the launch command from the bundle's own manifest, so there is no command to copy. The MCP registry declares no SHA-256 for this bundle, so there is no published digest to check the download against.

mcpb · niro.mcpb

Download bundle

The MCP registry declares no SHA-256 for this bundle, so there is no published digest to check it against. Open it with an MCPB-capable host such as Claude Desktop.

Common questions

What is the Niro MCP server?

Niro is an MCP server listed in the public MCP registry as io.github.apxlabs-ai/niro. AI pentester for PRs, finds exploitable bugs and hands your developer agent the fix. This page covers its MCPB bundle (https://github.com/apxlabs-ai/niro/releases/download/v0.1.61/niro.mcpb).

Is the Niro MCP server safe to use?

Niro scores 52 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Niro MCP server expose?

Niro exposes 11 tools: cancel_pentest, close_pentest, draft_scope, generate_pentest_report, get_pentest_status, and 6 more. Their descriptions and schemas cost roughly 1,055 tokens of context every time the server is loaded.

What licence is the Niro MCP server under?

Niro declares the LicenseRef-Niro-Community-1.0 licence, which is not on the OSI-approved list. Read the terms before using it at work, and note this covers the source only, not the cost of any service it calls.

What did VerifyMCP test on the Niro MCP server?

VerifyMCP ran 12 checks on Niro, covering Source repository, Provenance, License, Maintenance and 8 more. 4 items could not be completed, a gap on our side rather than a finding about Niro: Malware scan, Known CVEs, Install scripts and Dependency health. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to an MCPB bundle, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.