VirusTotal intelligence in your agent
Look up existing reports for file hashes, URLs, domains and IPs from your agent. Set up access once, then reuse it across your clients.
VTAI access is free within the limits below and requires a VTAI token. You do not need a VirusTotal API key for basic use. Your client or model provider may have separate account requirements and charges.
1. Choose your access
Keep using your protected credential file. Continue to choose a client below; reconnecting does not require another registration.
Create a new VTAI agent named “VirusTotal MCP”. Its handle and activity totals may appear on the public leaderboard. Registration happens only when you press this button.
Download before leaving this page. The credential is not displayed or placed in client examples. A download starts only when you choose it.
Keep credentials out of prompts, tool arguments and URLs. Enter them only in trusted credential settings or the explicitly labelled fields on this page.
Protect a downloaded credential
A browser cannot verify that a download was saved or set its file permissions. On macOS or Linux, adjust the Downloads path if necessary, then run these commands in your own terminal. The destination must not already exist.
(
set -eu
install -d -m 700 "$HOME/.config/vt-mcp"
test ! -e "$HOME/.config/vt-mcp/token"
test ! -L "$HOME/.config/vt-mcp/token"
install -m 600 "$HOME/Downloads/vtai-token.txt" "$HOME/.config/vt-mcp/token"
)
After confirming the protected file exists, remove the extra copy from Downloads. If you already have a credential at that destination, keep it or choose another path and adjust the configuration below. On Windows, use a protected file location and Windows access permissions; these POSIX commands do not apply.
2. Choose a client and connection
Choose one connection for the virustotal entry. The examples contain
only paths and environment-variable names, so they can be copied without a credential.
Merge this entry into ~/.codex/config.toml, preserving other servers and settings.
[mcp_servers.virustotal]
url = "https://ai.virustotal.com/mcp"
[mcp_servers.virustotal.env_http_headers]
x-apikey = "VTAI_MCP_TOKEN"Merge this entry into ~/.codex/config.toml, preserving other servers and settings.
[mcp_servers.virustotal]
command = "vt-mcp"
[mcp_servers.virustotal.env]
VTAI_TOKEN_FILE = "~/.config/vt-mcp/token"
VTAI_BASE_URL = "https://ai.virustotal.com/api/v3"Merge this entry into a .mcp.json file in your chosen, trusted project, preserving other servers and settings.
{
"mcpServers": {
"virustotal": {
"headers": {
"x-apikey": "${VTAI_MCP_TOKEN}"
},
"type": "http",
"url": "https://ai.virustotal.com/mcp"
}
}
}Merge this entry into a .mcp.json file in your chosen, trusted project, preserving other servers and settings.
{
"mcpServers": {
"virustotal": {
"command": "vt-mcp",
"env": {
"VTAI_TOKEN_FILE": "~/.config/vt-mcp/token",
"VTAI_BASE_URL": "https://ai.virustotal.com/api/v3"
}
}
}
}Merge this entry into ~/.gemini/settings.json, preserving other servers and settings.
{
"mcpServers": {
"virustotal": {
"headers": {
"x-apikey": "${VTAI_MCP_TOKEN}"
},
"httpUrl": "https://ai.virustotal.com/mcp"
}
}
}Merge this entry into ~/.gemini/settings.json, preserving other servers and settings.
{
"mcpServers": {
"virustotal": {
"command": "vt-mcp",
"env": {
"VTAI_TOKEN_FILE": "~/.config/vt-mcp/token",
"VTAI_BASE_URL": "https://ai.virustotal.com/api/v3"
}
}
}
}No local installation of Python or vt-mcp is required for the remote connection.
The client sends x-apikey from its VTAI_MCP_TOKEN environment
variable. In your own Bash terminal, start the selected client from your protected file:
An already open app or one launched from an icon may not inherit this environment. Use the hostname of the test service when validating a staging deployment, retaining the prefix shown in the URL. Do not ask an assistant to inspect your credential file or environment.
Install the reviewed vt-mcp wheel from the
v0.7.0 release, verify its checksum
and follow the release’s Python installation instructions. Set an absolute command path
if your client cannot find vt-mcp. Restart the client after updating its credential file.
These installation instructions target v0.7.0 and apply once that release is published. Use a published release and its checksum manifest; do not install an unverified package with a similar name.
Use the client guide and evidence matrix to choose a configuration supported by your client and version.
Codex CLI is the verified reference client. Check the client matrix for tested versions, workflow scope and remaining checks. Configuration examples alone do not establish a complete connection for other clients.
This connection uses a VTAI API credential; it does not provide OAuth. A client that requires OAuth needs a separate integration. These instructions concern the named local clients, not the hosted ChatGPT or Claude connector screens.
3. Check access
This optional check looks up the report for the SHA-256 of an empty file. It uses your shared query quota, including for an unknown report or an upstream failure. The page does not upload a file or automatically repeat the check.
Then open your client’s MCP tools and confirm that it lists
get_file_report, get_url_report, get_domain_report,
get_ip_report and get_analysis. Ask it to call get_domain_report for
example.com and check the source, analysis date and report link.
That separate tool call also consumes a query.
Access and limits
REST and MCP share 60 admitted queries per fixed 60-second window and 1000 per UTC day, per agent. A lookup that returns unknown or fails upstream still consumes an admitted query. Provider limits may also apply.
A missing report or absence of detections does not establish safety. URL lookup discloses the complete URL to VTAI and VirusTotal. Use a domain lookup when paths, query parameters or fragments contain private information. MCP tools only read reports and analysis status; they do not submit samples or start analyses. File submission is an explicit local CLI operation with consent; see the submission and analysis guide.
Disconnect
Remove or disable the VirusTotal MCP entry in the client’s configuration, restart or reload the client and check that the tools disappear. Remove stored credentials only if no other client needs that file or environment setting. Disconnecting one client does not revoke access from other clients sharing that credential or delete VTAI history. Reconnect with the same credential while it remains active.
Revoke this credential
VTAI currently gives each registered agent one credential. Revoking it disables that agent’s access through REST and MCP. Existing records remain. You can register a new agent to obtain new access. A query admitted before revocation may finish.
Keep your protected copy if revocation is not confirmed, so you can try again.
Advanced API settings and connection problems
The remote MCP URL is https://ai.virustotal.com/mcp and its sole
credential header is x-apikey. The
registration API
is POST /api/v3/agents/register.
401 means a credential is missing; 403 means it was not accepted. For a query
quota error, wait for the supplied retry delay. A service failure is not an
unknown report. A missing /mcp endpoint is a connection problem, not
an unknown indicator. Ask the client to show the structured tool error without exposing
its stored credential.