Skip to main content
Glama
vulnify

Vulnify MCP

Official

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoBind address for the HTTP server.0.0.0.0
PORTNoListen port for the HTTP server.8080
VULNIFY_API_KEYNoVulnify API key (`vln_live_...` or `vln_test_...`). Required by the local stdio process; the HTTP server does not fall back to this variable (send the key on each request instead).
VULNIFY_BASE_URLNoAPI base URL used for every tool call.https://api.vulnify.io
OPENAI_APPS_CHALLENGENoWhen set, `GET /.well-known/openai-apps-challenge` returns this value as `text/plain`. Unset, that path is 404.
OAUTH_INTROSPECTION_SECRETNoBearer secret for `POST /oauth/introspect`, used by the HTTP server to validate `vln_oat_...` tokens for user login (OAuth). Stays on the server. API keys work without it.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
check_actionA

Use for what-if questions when you are not about to act. Dry-run a proposed action against the organization policies (POST /v1/policies/test, one case, stored policies). This skips the PII scan and records nothing: no security event and no audit entry. There is no content field and no DLP scan. The result has no event id and no finalDecision. decide_action is the call that records a decision. Dry runs are limited to 60 requests per minute per key. test_policies covers up to 200 cases in one call.

decide_actionA

Call this before a consequential action with any tool or connector: sending an email or message, exporting or sharing data, deleting data, writing to production or financial records, payments, or external API writes. ALLOW: proceed. REVIEW: hold the action, tell the user it waits for approval in Vulnify, and check again with get_decision. BLOCK: skip the action and explain the reasons. Records a decision for a proposed action (POST /v1/events). This writes a security event and an audit entry, counts toward the organization quota, and may open a human review. The finalDecision field is the authoritative result. decision is what was stored and does not change when a review is resolved. finalDecision stays REVIEW until a human approves, denies, or the review expires. This tool does not approve the review. A REVIEW or BLOCK finalDecision means the action was not allowed. Optional content is scanned in memory and is not stored. An idempotencyKey makes a retry return the same event.

get_decisionA

Read a recorded decision (GET /v1/events/{id}), including a REVIEW. finalDecision is REVIEW while the review is pending, then ALLOW after approval or BLOCK after denial or expiry. decision itself does not change. The finalDecision field is the authoritative result. waitMs polls until finalDecision is ALLOW or BLOCK, or until the bounded wait elapses (30 seconds maximum). waitTimedOut is true when the wait ended and finalDecision is still REVIEW. This does not approve or deny the review.

list_policiesA

List the organization policies as code (GET /v1/policies). Returns apiVersion vulnify.io/v1 and policies sorted by name. Read-only. Any non-revoked API key of the organization may call it. Limited to 60 requests per minute per key.

test_policiesA

Evaluate up to 200 policy cases without recording an event (POST /v1/policies/test). When policies is omitted, the enabled stored policies are used. When policies is set, those proposed policies are evaluated instead and nothing is written. This skips the PII scan: cases have no content field. pass is null when a case omits expect. One call covers up to 200 cases. Limited to 60 requests per minute per key.

plan_policy_changesA

Diff policy creates, updates, and deletes without writing them (POST /v1/policies/apply). dryRun is forced to true and cannot be turned off. Nothing is stored and no audit entry is written. prune only marks missing policies for deletion in the plan. Requires an org-wide LIVE API key; a TEST key or an agent-bound key is refused with 403. This tool does not apply the plan.

check_mcp_tool_callA

Records a decision for a downstream MCP tool call (POST /v1/gateway/mcp). Vulnify maps the tool name to an action by substring and returns the same recorded decision as decide_action, including an id. This writes a security event and an audit entry. The tool arguments are not executed. The finalDecision field is the authoritative result. A REVIEW or BLOCK finalDecision means the downstream tool was not allowed. This server cannot approve the review. An idempotencyKey makes a retry return the same event.

Prompts

Interactive templates invoked by user choice

NameDescription
guard_actionAsk the model to check a proposed action with Vulnify before it runs, and explain ALLOW, REVIEW, and BLOCK.
review_policiesAsk the model to list the organization policies and test them. Nothing is written.

Resources

Contextual data attached and managed by the client

NameDescription
decisionsWhat ALLOW, REVIEW, and BLOCK mean. finalDecision is the authoritative result.

TDQS

A4/5.0

Scored across 7 tools

Disambiguation3/5

Several tools share the same underlying endpoint and near-identical semantics: check_action and test_policies both hit POST /v1/policies/test as dry-runs, and check_mcp_tool_call vs decide_action both record decisions (one keyed to MCP tool names, one to general actions). The descriptions do a good job cross-referencing each other to steer selection, but the boundaries are genuinely blurry in places.

Naming Consistency4/5

Names follow a mostly predictable verb_noun pattern (list_policies, test_policies, check_action, decide_action, get_decision). Minor deviations exist—plan_policy_changes uses a longer noun phrase and plural/singular usage is inconsistent (list_policies vs check_action)—but the convention is readable and consistent overall.

Tool Count5/5

Seven tools is well-scoped for a policy governance and decision-recording server. Each tool maps to a distinct capability (list, test, plan, check, decide, get) without redundancy that would bloat the surface.

Completeness3/5

The read/test/decide/get lifecycle is covered, but there are notable gaps: plan_policy_changes only produces a plan with no corresponding apply tool, and no tool can approve or deny a review (explicitly noted as out of scope). Agents hitting a REVIEW have no resolution path within this server.

Maintenance

ActivityMaintained
ResponsivenessNo issues