Skip to main content
Glama
VirusTotal

VirusTotal MCP

Official

Submit a URL to VirusTotal

submit_url
DestructiveIdempotent

Submit an HTTP(S) URL for VirusTotal analysis and receive a request ID to check results. Use for scanning suspicious links without sharing secrets.

Instructions

Request standard VirusTotal analysis of one HTTP(S) URL.

Retain a new canonical lowercase UUIDv4 request_id before calling. VirusTotal may visit the URL and share it with partners/customers; do not submit secrets. No per-call confirmation. Uses current VTAI rights and quota. The same ID is reserved for the same operation; changing its target conflicts. After uncertainty, use get_submission(request_id), never a new ID or an automatic POST retry. Use the registered analysis_id with get_analysis; submitted is not completed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlYes
request_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.9.1

TDQS

A5/5.0
Behavior5/5

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

The description richly discloses behavior beyond annotations: VirusTotal may visit the URL and share it with partners/customers, there is no per-call confirmation, quota/VTAI rights apply, the request_id is idempotency-bound, and submission completion is separate from analysis. These details align with the annotations and add important operational 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 description is front-loaded with purpose, then delivers dense, high-value constraints in a compact block. Every sentence contributes essential information: ID generation, side-effect warning, quota, idempotency, retry guidance, and analysis completion semantics.

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 two-parameter, no-output-schema tool, the description covers all needed operational context: how to construct request_id, side effects, quota behavior, how to follow up (get_submission, get_analysis), and that submitted does not mean completed. Nothing critical is missing for an agent to invoke this correctly.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries full responsibility for parameter meaning. It explicitly explains url as 'one HTTP(S) URL' and gives detailed semantics for request_id: a new canonical lowercase UUIDv4, retained before calling, reserved for the same operation, with changing targets conflicting.

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 opens with a specific verb and resource: 'Request standard VirusTotal analysis of one HTTP(S) URL.' This clearly distinguishes submit_url from report-retrieval siblings like get_url_report and from file-submission siblings like submit_file or submit_local_file.

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?

The description gives explicit routing instructions: after uncertainty, use get_submission(request_id), never a new ID or automatic POST retry; and use the registered analysis_id with get_analysis. It also warns not to submit secrets, giving clear when-not guidance.

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