Skip to main content
Glama
GoMobSec MCP server

GoMobSec MCP server

GoMobSec MCP server

The official Model Context Protocol server for GoMobSec. Use it to scan Android and iOS apps for security issues from Claude, Cursor, VS Code or any other MCP client. Results are mapped to OWASP MASVS, CWE and CVSS, and you can download the full pentest-style report.

You: Scan ./build/app-release.apk and tell me what to fix first.
AI:  start_scan → wait_for_scan → get_findings → a prioritised fix plan

Use it in Claude without installing anything

GoMobSec also runs this server for you at https://mcp.gomobsec.ai/mcp. In Claude, go to Settings → Connectors → Add custom connector, enter that URL, and sign in with your GoMobSec account (available on every paid plan). Setup, tools, security and privacy are covered in docs/HOSTED.md.

The rest of this page is about the local server, which reads apps straight from your disk and authenticates with an API key.

Related MCP server: agentguard

Requirements

  • A GoMobSec account with an API key. Create one under API keys in GoMobSec. API keys come with every paid plan (Individual and up).

  • uv (recommended) or Python 3.10+.

Install

The server runs locally over stdio. Your API key stays on your machine, and the server reads the APK or IPA straight from disk.

Claude Code

claude mcp add gomobsec --env GOMOBSEC_API_KEY=your-key -- uvx gomobsec-mcp

Claude Desktop, Cursor, Windsurf and others

Add this to the client's MCP config file. For Claude Desktop that is claude_desktop_config.json; for Cursor it is ~/.cursor/mcp.json.

{
  "mcpServers": {
    "gomobsec": {
      "command": "uvx",
      "args": ["gomobsec-mcp"],
      "env": { "GOMOBSEC_API_KEY": "your-key" }
    }
  }
}

VS Code

Add this to .vscode/mcp.json. VS Code asks for the key on first use and stores it securely:

{
  "inputs": [
    { "type": "promptString", "id": "gomobsec-key", "description": "GoMobSec API key", "password": true }
  ],
  "servers": {
    "gomobsec": {
      "command": "uvx",
      "args": ["gomobsec-mcp"],
      "env": { "GOMOBSEC_API_KEY": "${input:gomobsec-key}" }
    }
  }
}

Without uv, run pip install gomobsec-mcp and use gomobsec-mcp as the command.

Tools

Tool

What it does

whoami

The account and plan the key belongs to

get_usage

Scans used this month against the plan limit

list_scans

Recent scans, newest first

get_scan

Status of one scan and, once it is complete, the findings count by severity

get_findings

Findings with severity, CWE, MASVS category, CVSS, location and description. Can filter by severity; false positives are hidden unless asked for

start_scan

Uploads a local .apk, .xapk, .apks, .apkm or .ipa file and starts a scan (quick, static or full)

wait_for_scan

Waits for a scan to finish and reports progress meanwhile

download_report

Saves the DOCX, XLSX, JSON or SARIF report to your download folder

There is also one prompt, security_review, which turns a finished scan into a prioritised fix plan.

Scans you start here count against your GoMobSec plan, exactly like scans from the web app or CI. The scan modes and limits are the ones your plan allows.

Configuration

Variable

Default

GOMOBSEC_API_KEY

—

Required. Your GoMobSec API key

GOMOBSEC_DOWNLOAD_DIR

~/Downloads/gomobsec

The only folder download_report writes to

GOMOBSEC_API_URL

https://api.gomobsec.ai

Change this only for a dedicated or on-prem GoMobSec

GOMOBSEC_APP_URL

https://gomobsec.ai

Base URL for the report links

Security

  • Your key stays local. It is read from the environment and only ever sent to GoMobSec over HTTPS. It is never written to a file or included in tool output.

  • Uploads are limited to app packages. start_scan only sends files that are mobile app packages: the right extension, a zip archive, and at most 250 MB. It cannot be used to upload any other file from your machine.

  • Downloads never overwrite. download_report takes no path. It writes new files (mode 0600) into GOMOBSEC_DOWNLOAD_DIR and never replaces an existing file.

  • Finding text is treated as untrusted. Titles and descriptions can contain strings from the scanned app, and an app author controls those. The server strips control and bidi characters, keeps the text inside a fenced data block, and tells the model to treat it as data. Still, review what your assistant does after reading the results of a scan of an app you don't trust.

  • Access is limited to your own scans. The key only sees scans on its own account or organisation. Revoke it in GoMobSec at any time.

To report a vulnerability, see SECURITY.md.

Privacy

The local server keeps nothing. It reads your API key from the environment, sends requests only to GoMobSec, and writes only the reports you ask for. What GoMobSec does with the apps you scan is in the GoMobSec privacy policy. For the hosted connector, see its privacy policy.

Development

python -m venv .venv && . .venv/bin/activate
pip install -e ".[test]"
pytest

Try it with the MCP Inspector: npx @modelcontextprotocol/inspector gomobsec-mcp.

The hosted connector's tests (tests/test_hosted.py) run a real HTTP server on a free port and go through the whole OAuth flow, with GoMobSec's side faked.

Releasing

  1. Bump the version in src/gomobsec_mcp/__init__.py and both version fields in server.json (the tests and the release workflow check they match), and add a CHANGELOG.md entry.

  2. Publish a GitHub release tagged vX.Y.Z. The Publish workflow tests and builds it, uploads it to PyPI (Trusted Publishing), then lists it in the MCP Registry (GitHub OIDC). No tokens are stored in the repository.

License

MIT

Available Tools

8 tools
download_reportDownload reportAInspect

Download the full report of a completed scan — DOCX (pentest report), XLSX, JSON or SARIF (for code-scanning tools) — into the GoMobSec download folder (GOMOBSEC_DOWNLOAD_DIR, default ~/Downloads/gomobsec). Never overwrites an existing file. Returns the saved path.

NameRequiredDescriptionDefault
formatNodocx
scan_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, it explains that the operation writes into a local download folder, identifies the controlling environment variable and default location, and guarantees that an existing file will never be overwritten. It also states that the saved path is returned, giving the agent useful workflow and filesystem context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action, scan prerequisite, and formats are front-loaded, followed by concise destination, collision-safety, and return-value details. Every clause provides practical information without repetition or unnecessary background.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter download tool, the description covers the essential precondition, output formats, storage location, configurability, overwrite behavior, and result. The output schema can handle further return-value details, leaving only minor workflow omissions such as how to discover a suitable scan_id.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description usefully explains that the scan must be completed and gives semantic guidance for DOCX and SARIF among the format choices. It does not explain where to obtain scan_id or provide comparable context for XLSX and JSON, so it does not fully compensate for the undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource—downloading the full report for a completed scan—and identifies the supported report formats. This clearly distinguishes it from siblings such as get_scan, which retrieves scan information, and get_findings, which retrieves findings rather than a full report artifact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Requiring a completed scan gives a clear precondition, while the DOCX and SARIF notes help users choose formats for pentest and code-scanning reports. It does not explicitly direct agents to list_scans or get_scan for obtaining or validating a scan_id, nor name alternatives for retrieving scan metadata or findings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_findingsScan findingsA
Read-only
Inspect

Findings of a completed scan: severity, title, CWE, MASVS category, CVSS, location and description, most severe first. Optionally filter by severity. False positives are left out unless include_false_positives is true.

NameRequiredDescriptionDefault
limitNo
scan_idYes
severityNo
include_false_positivesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description is not carrying the safety burden. It still adds real behavioral detail beyond them: results are ordered most-severe-first, and false positives are excluded unless include_false_positives is true. It does not mention truncation or result-size limits, which keeps it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two dense sentences, front-loaded with what is returned and immediately followed by the filtering behavior. Every clause (field list, ordering, severity filter, false-positive default) carries information an agent needs, with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description needn't detail return values, yet listing the key fields is a helpful preview. For a four-parameter read tool with annotations, the only real gap is the undocumented limit/pagination behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning, and it does explain severity as an optional filter and clarifies the default semantics of include_false_positives. The limit parameter (default 50) is never mentioned, leaving the agent unaware of truncation or pagination behavior for a potentially large finding set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (findings of a completed scan) and enumerates the returned fields (severity, title, CWE, MASVS, CVSS, location, description), which clearly separates it from get_scan or list_scans. It lacks an explicit verb ("List"/"Retrieve") and never names a sibling tool, so it stops short of the top mark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Completed scan" implies the scan must have finished, which usefully steers an agent toward wait_for_scan first, and the severity filter plus the false-positive default are stated. However, there is no explicit when-to-use versus alternatives such as download_report for full reports, and no stated behavior when the scan is still running.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scanScan statusB
Read-only
Inspect

Status of one scan and, once complete, its findings count by severity.

NameRequiredDescriptionDefault
scan_idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavior: the findings count only materializes after the scan completes, implying a partial result before then. It says nothing about rate limits, polling intervals, or error behavior for an unknown scan_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence with no filler; the conditional clause is compact and informative. Slightly terse for the information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return structure need not be spelled out, and the description correctly previews the severity breakdown. However, for a status-polling tool in a suite containing wait_for_scan and get_findings, the absence of any guidance on provenance of scan_id or when to poll versus wait leaves a meaningful hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden for the single parameter, and it says nothing about scan_id — not its format, not that it comes from list_scans or start_scan. With one required undocumented parameter, this is a real gap rather than a neutral baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific resource (one scan) plus what it returns (status and, once complete, findings count by severity), which cleanly separates it from list_scans. It does not explicitly name a sibling as an alternative, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'once complete' hints at polling semantics, but there is no when-to-use guidance, no mention of wait_for_scan for blocking on completion, and no note that get_findings is the tool for detailed findings. The agent must infer all routing decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_usagePlan usageB
Read-only
Inspect

How many scans the account has used this month against its plan limit.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds useful scope — a monthly window and a comparison against the plan limit — but does not clarify whether 'this month' means the calendar month or a billing cycle, nor whether the count includes in-flight scans.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single well-formed sentence with no filler, and the key scope (this month, plan limit) appears immediately. Slightly terse given the ambiguity around the accounting period.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and no parameters, the description only needs to convey what the number represents, which it does. The remaining gap is definitional (calendar month vs. billing period, treatment of pending scans), which an agent may need to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the description has nothing to disambiguate; the baseline of 4 applies. It correctly implies the account context is implicit rather than passed in.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource (scan usage) and the comparison being made (used this month vs. plan limit), which distinguishes it from list_scans and get_scan. It lacks an explicit verb, but the intended output is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus siblings such as list_scans (which reports individual scans) or whoami (account identity). The agent must infer that this is a quota/limit check rather than a scan listing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_scansList scansA
Read-only
Inspect

List the account's most recent scans, newest first (1-50).

NameRequiredDescriptionDefault
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=true, so safety and scope are covered. The description adds only the sort order and the limit range; it says nothing about what happens with no scans, whether results are cached, or how the open-world account scope affects results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no filler, and the scoping constraint ('most recent ... newest first') is front-loaded before the limit range. Nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

One optional parameter, an output schema, and read-only annotations make this a simple tool, and the description covers scope, ordering, and limit bounds adequately. The only missing piece an agent would want is the default page size of 10 when limit is omitted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% — the limit property has no description, no minimum, and no maximum in the schema. The description's '(1-50)' supplies the valid bounds that the schema omits, which is real added value. It does not state the default of 10, so it does not fully compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb (list) and resource (the account's most recent scans), plus ordering ('newest first'), which distinguishes it from the singular get_scan sibling. It stops short of naming that sibling explicitly, but 'list ... scans' versus 'get_scan' is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Most recent scans' implies the usage context (browsing recent activity rather than fetching a known scan), but there is no explicit when-to-use statement, no exclusion of get_scan for single-scan retrieval, and no mention of whether pagination or a different tool is needed for older scans.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_scanStart a scanAInspect

Upload a local Android (.apk, .xapk, .apks, .apkm) or iOS (.ipa) app to GoMobSec and start a security scan. Uses one scan from the account's plan — confirm with the user first. 'quick' and 'static' work on every plan; 'full' (static + dynamic) needs a paid plan. Returns the scan id; follow it with wait_for_scan.

NameRequiredDescriptionDefault
file_pathYes
scan_modeNoquick
project_nameNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only state non-readOnly, openWorld, non-idempotent, non-destructive. The description adds the quota consumption (one scan from the plan), the required user confirmation, plan-tier constraints for 'full', and the returned scan id — behavior an agent cannot infer from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads purpose, then formats, then cost warning, then return/next step — every sentence carries information. Minor waste from the awkward line break mid-sentence, but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input formats, mode constraints, cost side effects, and the next tool to call; with an output schema present, it needn't describe the response, and mentioning the scan id is sufficient. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must carry parameter meaning. It explains scan_mode tiers ('quick'/'static' on every plan, 'full' needs paid) and implicitly the file_path formats, but never mentions project_name, leaving one of three parameters undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Upload ... app ... and start a security scan') and enumerates accepted formats (.apk, .xapk, .apks, .apkm, .ipa), clearly separating it from read-only siblings like get_scan and list_scans.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit preconditions ('Uses one scan from the account's plan — confirm with the user first'), plan gating per mode, and names the follow-up tool ('follow it with wait_for_scan'), which is exactly the routing an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wait_for_scanWait for a scanA
Read-only
Inspect

Wait until a scan finishes (or the timeout passes, 1-60 minutes), reporting progress, then return its status and findings count. Scans can take longer than one wait; call it again if the scan is still running.

NameRequiredDescriptionDefault
scan_idYes
timeout_minutesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: it blocks, has a 1-60 minute timeout window, reports progress, and may need to be called repeatedly for long scans. It does not say what happens to partial results or whether the wait is server-side or polling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences. The core behavior and its key caveat (repeat calls) are both front-loaded with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return details need not be described, and the description still names the two returned values. Given the blocking/repeat semantics, the description covers everything an agent needs to invoke it correctly, short of distinguishing it from get_scan.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates usefully by stating the 1-60 minute range for timeout_minutes, which the schema only shows as a default of 60 with no min/max. scan_id is self-evident and needs no elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('wait until a scan finishes') and resource ('scan'), plus what it returns (status and findings count). It implicitly separates itself from the immediate-return sibling get_scan, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear when-to-use context ('wait until a scan finishes') and an important repeat pattern: 'call it again if the scan is still running.' It does not explicitly contrast with polling via get_scan, which is the main alternative an agent has.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whoamiWho am IA
Read-only
Inspect

Show which GoMobSec account is connected and its plan.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds that the result scopes to the connected account and its plan, which helps the agent interpret the response. It does not discuss behavior when unauthenticated or what failure looks like, so it adds only moderate context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the action and the returned resource. There is no filler, hedging, or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and no parameters, the description needs only to establish what the call is for, which it does. It could add one clause about authentication or failure behavior, but nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters and the schema is an empty object with full coverage, so there is nothing for the description to clarify. Baseline of 4 applies, and the description correctly avoids inventing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: showing which GoMobSec account is connected plus its plan. That is unambiguous and clearly distinct from scan/usage siblings. It stops short of explicitly contrasting with any sibling, but no agent could confuse this with list_scans or get_usage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended situation is implied, checking identity and subscription plan, but there is no explicit when-to-use or when-not-to-use guidance. For a zero-parameter utility tool the omission is minor, yet the description does not route the agent to alternatives such as get_usage for quota questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.2.1
    • Changedwait_for_scan1 field changed
      • changedInput schema / properties / timeout_minutes / default
        Previous value: -20New value: +60
  2. 8 tool updatesv0.1.0
    • First observeddownload_report
    • First observedget_findings
    • First observedget_scan
    • First observedget_usage
    • First observedlist_scans
    • First observedstart_scan
    • First observedwait_for_scan
    • First observedwhoami

TDQS

A3.8/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct action/resource: account identity, usage, scan listing, individual scan status, findings, waiting, starting scans, and report download. The only potentially neighboring tools—get_scan, wait_for_scan, and get_findings—are clearly differentiated by description: status polling versus blocking wait versus detailed findings.

Naming Consistency4/5

Most names follow a clear snake_case verb_noun pattern (get_scan, list_scans, start_scan, download_report). The only deviation is 'whoami', which is a well-known conventional command but not part of the same pattern.

Tool Count5/5

Eight tools is well-scoped for a focused mobile security scanning service. Each tool has a clear role in the scan lifecycle and there is no obvious filler.

Completeness4/5

The surface covers account checks, scan creation, waiting, status/findings retrieval, and report download, forming a complete core workflow. Minor gaps exist, such as scan cancellation or deletion, but these are not necessary for the main lifecycle.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Automatically discovers and tests MCP services for security vulnerabilities including command injection, SQL injection, SSRF, path traversal, and sensitive data exposure with detailed reports and remediation guidance.
    1
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables scanning of AI agent code for security vulnerabilities such as prompt injection, tool abuse, and data exfiltration, directly from MCP-compatible clients like Claude Code.
    83 PyPI
    3
    LGPL 3.0