Latent Defense MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LATENT_DEFENSE_URL | No | Portal base URL | https://portal.latentdefense.ai |
| LATENT_DEFENSE_API_KEY | Yes | API key from portal (starts with sk_ld_) | |
| LATENT_DEFENSE_VERIFY_SSL | No | Set to false for self-signed certs | true |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_repositoriesA | List all InfraDB repositories. |
| get_repositoryC | Get details for an InfraDB repository. |
| list_branchesC | List branches in a repository. |
| get_branchC | Get branch details including head commit and graph stats. |
| get_graphC | Get the full materialized graph (nodes + edges) for a branch. |
| list_branch_attack_pathsA | List attack paths stored on a branch in InfraDB (pre-triage, raw JEPA output). |
| create_branchA | Create a new branch in a repository. Args: repo_id: Repository ID. name: Branch name. source_branch_id: Branch to fork from. If empty, forks from the repo's default branch. |
| list_commitsC | List commits on a branch (newest first). |
| diff_commitsA | Diff two commits — shows added/removed/modified nodes and edges. |
| search_nodesC | Search nodes in a repository by text query. |
| infra_statsA | Get InfraDB stats (repo count, total nodes/edges, storage). |
| trigger_scanA | Trigger a manual infrastructure mapping scan. Args: description: What to scan and why. credentials_profile: Credential profile to use (default: "default"). cloud_accounts: JSON array of {"provider", "account_id", "regions"} objects. repositories: JSON array of repo URL strings. domains: JSON array of domain strings. |
| list_trigger_eventsC | List recent trigger events (scans, webhooks). |
| trigger_statsA | Get trigger service stats (active runs, rate limiting, failures). |
| list_scan_schedulesA | List all scan schedules (cron-based recurring mapping runs). |
| run_scan_scheduleC | Manually trigger a scan schedule to run now. |
| get_trigger_eventB | Get details of a specific trigger event. |
| get_mapping_runB | Get status and details of a mapping run. |
| list_mapping_runsC | List recent mapping runs with status, trigger type, and graph stats. |
| create_mapping_runA | Create a mapping run directly on the mapper, bypassing map-trigger. Use this instead of trigger_scan when you need full control over scope or when map-trigger is returning errors. Args: description: What to map and why. repositories: JSON array of repository URL strings. cloud_accounts: JSON array of {"provider", "account_id", "regions"} objects. kubernetes_clusters: JSON array of kubeconfig context strings. domains: JSON array of domain strings to probe. web_endpoints: JSON array of web endpoint URLs to probe. cidrs: JSON array of CIDR strings to probe. exclude_patterns: JSON array of glob patterns to exclude. credentials_profile: Credential broker profile (default: "default"). model: LLM model for mapping agents (default: "claude-sonnet-4-6"). dry_run: If true, validate the request without executing. |
| list_mapping_agentsA | List agents spawned by a mapping run (planner, modality agents, etc.). |
| cancel_mapping_runB | Cancel a running mapping run. |
| run_inferenceC | Trigger a JEPA inference run on a branch to discover attack paths. |
| list_inference_runsC | List recent JEPA inference runs. |
| get_inference_runB | Get status and results of an inference run. |
| ingest_detectionB | Ingest a security detection from an external tool (scanner, SIEM, etc.). Args: source: Detection source (e.g. "vulnerability_scanner", "config_audit"). severity: One of "critical", "high", "medium", "low", "info". affected_resource_type: Resource type (e.g. "ec2_instance", "pod"). affected_resource_id: Resource identifier. title: Detection title. cve: CVE identifier if applicable. |
| list_inference_schedulesA | List all JEPA inference schedules. |
| create_inference_scheduleA | Create a recurring JEPA inference schedule. Args: name: Schedule name. cron: Cron expression (e.g. "0 2 * * *" for 2 AM daily). branch_labels: JSON array of branch label strings to target. Ignored if all_branches is true. all_branches: Run on all branches if true. |
| delete_inference_scheduleC | Delete a JEPA inference schedule. |
| list_attack_pathsB | List attack paths, optionally filtered by status or risk score. Status values: new, acknowledged, validating, validated, escalated, ticketed, closed. |
| get_attack_pathA | Get full details of an attack path including steps, MITRE mappings, and risk score. |
| update_path_statusB | Update an attack path's triage status. Args: path_id: Attack path ID. status: Target status (acknowledged, closed, etc.). reason: Optional reason for the status change. |
| validate_pathB | Dispatch an attack path for sandbox validation (Parser → Exploit → Grader). |
| escalate_pathC | Escalate a validated attack path to the ticketing system. |
| triage_statsB | Get triage statistics (counts by status, severity, repository). |
| register_webhookA | Register a triage webhook to receive notifications on attack path events. Args: url: Webhook endpoint URL. events: JSON array of event types (e.g. '["new_path", "status_change", "validated"]'). template: Optional Jinja2 template for the POST body. Variables: path, event, timestamp. secret: Optional HMAC-SHA256 secret for request signing. headers: Optional JSON object of extra headers to send. |
| list_webhooksA | List all registered triage webhooks. |
| delete_webhookC | Delete a triage webhook. |
| get_validation_statusA | Get the status of a validation run (step counts, progress). |
| list_ticketsC | List remediation tickets. |
| get_ticketC | Get remediation ticket details. |
| ticket_statsA | Get aggregate ticket statistics (counts by status, provider, and outcome). |
| create_remediation_ticketA | Create a remediation ticket for an attack path and start two-step remediation. Creates the upstream ticket on the active provider immediately (~seconds), then runs the LLM+JEPA remediation loop in the background and updates the ticket. Poll get_ticket_steps for per-iteration progress. Provider-agnostic: the ticket lands on whichever provider is currently active (see get_ticket_provider). Args: path_id: Attack path ID (from triage / validation tools). repository_id: InfraDB repository ID the path belongs to. branch_id: InfraDB branch ID. entry_node: Path entry node ID. target_node: Path target node ID. steps: JSON array of path-step objects (source_node/target_node/...). step_count: Number of steps in the path. risk_score: Path risk score (0.0-1.0). mitre_techniques: JSON array of MITRE ATT&CK technique IDs. difficulty: Path difficulty ("low"/"medium"/"high"). source: Optional origin tag for the ticket. validation_verdict: Optional JSON object with the validation verdict. |
| get_ticket_stepsB | Get per-iteration remediation steps/progress for a ticket. |
| update_ticket_statusA | Update a ticket's status. Args: ticket_id: Ticket ID. status: New status. One of: pending, analyzing, remediating, verifying, creating_ticket, created, failed. |
| sync_ticketB | Force a one-off sync of a ticket's status from its upstream provider. |
| retry_ticketC | Re-run remediation from a failed ticket. |
| get_ticket_providerA | Get the active ticketing provider and all configured providers with verification state. |
| configure_ticket_providerA | Register or update a ticketing provider configuration. One tool configures any supported provider (jira, linear, github, servicenow, pagerduty, airtable, asana, custom) — the REST surface is provider-agnostic. Secrets must be written out-of-band via the credential broker; pass secret_keys to point at which Secret key holds each credential. Do NOT pass raw secret values. Args: provider: Provider name (jira, linear, github, servicenow, pagerduty, airtable, asana, custom). config: JSON object with provider-specific non-secret config (base_url, project, etc.). secret_keys: Optional JSON object mapping credential roles to Secret keys. set_active: Make this the active provider after configuring (default true). |
| test_ticket_providerA | Test a ticketing provider's auth without making it active. Args: provider: Provider name to test. Leave empty to test the currently-configured provider. config: Optional JSON object with config overrides to test. |
| set_active_ticket_providerB | Switch the active ticketing provider to an already-configured provider. |
| remove_ticket_providerC | Remove a configured ticketing provider. |
| get_ticket_template_variablesA | List the variables a ticket template can reference (Jinja2 cheatsheet). Returns every {{ variable }} available to a TicketTemplate — dotted path,
type, and description — plus the template |
| preview_ticket_templateA | Dry-render a ticket template against synthetic content — no state touched. Shows what a TicketTemplate will produce before it's saved on a provider. Returns rendered_title / rendered_description, plus fell_back + warning when a template fails to render (the hard-coded body is used instead), and a provider transform_hint (e.g. Jira flattens markdown into ADF). Does NOT modify the saved template on the active provider. Args:
template: JSON object for the TicketTemplate. Common fields:
description_template, title_template (Jinja2 source strings); optional
per-stage overrides description_template_{initial,final,failure} and
title_template_{initial,final,failure}; field_defaults (dict of scalar
custom-field defaults). |
| list_connectorsA | List all configured data source connectors. |
| create_connectorA | Create a data source connector for automated artifact ingestion. Args: name: Connector display name. connector_type: Type (use list_connector_types to see available). E.g. "aws_guardduty", "aws_inspector", "qualys", "tenable". connection_config: JSON object with type-specific connection params (credentials, regions, etc.). poll_config: Optional JSON object with polling settings (interval_minutes, enabled, etc.). mapping_config: Optional JSON object with field mapping overrides. |
| get_connectorC | Get connector details including status and last poll time. |
| update_connectorA | Update a connector's configuration. Args: connector_id: Connector ID. connection_config: JSON object with updated connection params (merged, not replaced). poll_config: JSON object with updated polling settings. enabled: Set to "true" or "false" to enable/disable. Leave empty to keep current. |
| delete_connectorC | Delete a data source connector. |
| poll_connectorC | Trigger an immediate poll on a connector (fetch latest data from the source). |
| list_connector_typesA | List available connector types and their required configuration fields. |
| ingest_statsA | Get ingestion stats (total artifacts, connector health, last poll times). |
| test_connectorA | Test a connector's connection without persisting artifacts. Returns record count or error details. |
| connector_healthA | Get health summary across all connectors, sorted unhealthy-first. Shows circuit breaker state and consecutive failures. |
| test_webhookB | Send a synthetic test event to a webhook and return the delivery result with per-attempt status codes. |
| webhook_deliveriesA | Get recent delivery history for a webhook. Args: webhook_id: Webhook ID. limit: Max records to return (default 20). status: Filter by "success" or "failed". Leave empty for all. |
| validate_webhook_templateA | Validate a Jinja2 webhook template against a synthetic event. Returns rendered output or parse error. Args: template: Jinja2 template string. sample_event_type: Event type for the sample data (default "new_path"). |
| oracle_load_branchA | Load an InfraDB branch graph into the oracle session. Must be called before any graph exploration or threat-model matching. For large graphs (1000+ nodes), encoding takes 2-5 minutes. This tool returns immediately once encoding has started. Use oracle_graph_info() to check when loading is complete. |
| oracle_load_statusA | Check whether the graph has finished loading after oracle_load_branch returned 'encoding_started'. |
| oracle_graph_infoA | Get node/edge counts, type distribution, and available edge types for the loaded graph. |
| oracle_list_nodesB | Browse nodes in the loaded graph, optionally filtered by type. |
| oracle_get_nodeB | Look up a node by description. Finds the best semantic match with full details. |
| oracle_search_nodesC | Search nodes by text similarity using MiniLM embeddings. |
| oracle_tm_add_nodeC | Add a node to the threat model. |
| oracle_tm_add_edgeC | Add an edge to the threat model. |
| oracle_tm_showA | View the current threat model (nodes and edges). |
| oracle_tm_clearB | Clear the current threat model. |
| oracle_tm_matchB | Match the threat model against the real infrastructure graph. Returns a Mermaid diagram with node matches (cosine scores), BFS paths (energy scores), and implicit edges. |
| oracle_tm_match_refineC | Iterative energy-scored refinement of the threat model match. Returns Mermaid diagrams per iteration showing entry candidates, path transitions, and convergence. |
| oracle_submit_attack_pathA | Submit a discovered attack path as a chain of node descriptions (separated by ' -> '). The path is energy-scored and forwarded to triage. Args: nodes: Node descriptions separated by ' -> '. Example: "public API gateway -> auth service -> database credentials -> production DB" description: Optional description of the attack path. |
| oracle_submit_matched_pathA | Submit attack paths from the current threat model's matched nodes. Requires tm_match or tm_match_refine to have been run first. |
| oracle_tm_list_templatesC | List available threat model templates. Categories: identity, network, data, supply_chain, cloud_services. |
| oracle_tm_load_templateC | Load a threat model template by name. Replaces the current threat model. |
| oracle_tm_saveC | Save the current threat model as a reusable template. Args: name: Template name (kebab-case, e.g. 'refined-iam-escalation-aws-prod'). description: What this attack pattern does. category: One of: identity, network, data, supply_chain, cloud_services. source_template: Name of the seed template this was refined from, if any. |
| oracle_reset_sessionA | Destroy the current oracle session and start fresh on the next tool call. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/latent-defense/mcp-server-public'
If you have feedback or need assistance with the MCP directory API, please join our Discord server