Latent Defense MCP Server
OfficialAllows mapping GitHub repositories into an infrastructure graph for attack path analysis and security triage.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Latent Defense MCP Server Map all repositories in our GitHub org"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Latent Defense MCP Server
MCP server that connects Claude Code to your Latent Defense deployment. Map GitHub repositories into an infrastructure graph, discover attack paths with the JEPA energy model, and triage findings — all from your terminal.
Quick start
# 1. Install
pip install git+https://github.com/latent-defense/mcp-server-public.git
# 2. Scaffold config and skills into your project
cd your-project
latent-defense-mcp-init
# 3. Edit .mcp.json — set your API key and portal URL
# 4. Start Claude Code (or restart if already running)
# 5. Type: "Map all repositories in our GitHub org"Related MCP server: GitHub MCP Server
Setup
Step 1 — Install the MCP server
pip install git+https://github.com/latent-defense/mcp-server-public.gitStep 2 — Get your portal URL and API key
Log in to your Latent Defense portal
Go to Settings → API Keys
Click Generate API Key — it starts with
sk_ld_Copy the key (it's only shown once)
Your portal URL is the base URL you use to access the portal (e.g. https://portal.acme.latentdefense.ai).
Step 3 — Add a GitHub PAT to the credential broker
The mapper needs a GitHub Personal Access Token to clone your repositories.
Create a GitHub PAT with
reposcope (or fine-grained with read access to your target repos)In the portal, go to Settings → Credentials
Select a profile from the dropdown (e.g.
github) or create a new oneUnder Source Code, add a GitHub PAT credential and paste your token
Click Verify All — it should show a green verified status
Remember the profile name (e.g. github) — you'll need it when mapping.
Step 4 — Configure Claude Code
Run latent-defense-mcp-init in your project directory:
latent-defense-mcp-initThis creates:
.mcp.json— MCP server configuration.claude/skills/map/— guided mapping workflow skill.claude/skills/research/— interactive JEPA inference skill
Now edit .mcp.json and replace the placeholder values:
{
"mcpServers": {
"latent-defense": {
"command": "latent-defense-mcp",
"env": {
"LATENT_DEFENSE_API_KEY": "sk_ld_your_key_here",
"LATENT_DEFENSE_URL": "https://portal.your-deployment.com"
}
}
}
}If your portal uses a self-signed certificate, add
"LATENT_DEFENSE_VERIFY_SSL": "false"to theenvblock.
If
latent-defense-mcpis not on your PATH, use the full path — runwhich latent-defense-mcpto find it.
Step 5 — Start Claude Code
Start Claude Code (or restart if already running). You should see latent-defense appear in the MCP server list. If it doesn't, check the API key and portal URL in .mcp.json.
Mapping your infrastructure
Start a mapping run
Tell Claude what to map:
Map all repositories in the acme-corp GitHub orgOr use the /map skill for a guided workflow — it will ask you for repositories, credential profile, and scope.
Claude will:
Ask which credential profile to use (the one you set up in Step 3, e.g.
github)Create the mapping run and show you the run ID
Monitor progress — you'll see agent counts and completion status
Report results when done — node count, edge count, and the repository/branch IDs
What gets mapped
The mapper clones each repository and builds a semantic graph of your infrastructure:
IaC (Terraform, CloudFormation, Helm charts) → cloud resources, networking, IAM
Kubernetes manifests → deployments, services, RBAC, network policies
CI/CD pipelines (GitHub Actions, GitLab CI) → workflows, secrets, deployment targets
Application code → HTTP endpoints, service-to-service calls, auth checks
Dockerfiles → container images, base images, exposed ports
Configuration files → environment variables, secret references, database connections
A mapping of ~50 repositories takes 15-30 minutes.
Troubleshooting mapping
Error | Cause | Fix |
"Repository not accessible without a VCS credential" | No GitHub PAT in the credential profile | Add a PAT in Settings → Credentials and verify it |
"No scope target is accessible" | Wrong credential profile name | Check the profile dropdown in Settings → Credentials for the correct name |
401 Unauthorized | Bad or expired API key | Generate a new key in Settings → API Keys |
Run stuck in | Large scope, planner is working | Normal for 50+ repos — wait for it |
Finding attack paths
Once you have a mapped graph, use the /research skill to discover attack paths.
Start a research session
Find attack paths in our infrastructureOr use /research for the guided workflow. Claude will:
Load your graph into the JEPA engine (takes 2-5 minutes for large graphs — Claude will tell you when it's ready)
Survey the attack surface — find entry points, high-value targets, credential stores
Build threat models — hypothetical attack chains targeting your infrastructure
Match against real infrastructure — the JEPA model scores each hop based on the full graph structure
Validate against compensating controls — high-energy hops indicate the model detected a security control blocking that transition
Submit confirmed paths to triage — only paths that survive validation
Understanding results
The JEPA model assigns energy scores to each hop in an attack path:
Energy | Meaning |
< 0.5 | Easy — minimal barriers, attacker can traverse freely |
0.5 - 2.0 | Medium — some controls present but traversable |
> 2.0 | Hard — significant compensating control detected (network policy, RBAC boundary, security group, etc.) |
Lower energy = easier for an attacker = higher risk.
When Claude finds a high-energy hop, it inspects the nodes on both sides to identify the specific control — a network policy, a pod security context, an RBAC binding — and names it in the analysis.
Research modes
Mode | When to use | Example prompt |
Proactive scan | Find the most dangerous paths that exist | "Find attack paths in our infrastructure" |
Detection triage | Investigate a specific CVE or alert | "Is CVE-2024-1234 exploitable in our infrastructure?" |
Query | Answer a security posture question | "Is our production database reachable from the public internet?" |
Example: full workflow
1. "Map all repositories in our GitHub org"
→ Claude creates a mapping run, monitors progress, reports results
2. "Find attack paths in our infrastructure"
→ Claude loads the graph into JEPA, surveys entry points and targets
3. Claude builds threat models and matches them:
→ "CI/CD pipeline → GitHub Actions secrets → Terraform → K8s secret → production database"
→ Path energy: -0.85 (easy traversal)
→ 3/3 nodes matched, all hops confirmed
4. Claude validates each hop:
→ "The deploy workflow writes ANTHROPIC_API_KEY to secrets.tfvars — no environment gate"
→ "K8s secret bundles 4 keys in one object — compromise of any consumer yields all"
5. Claude submits the validated path to triage with remediation guidanceSkills
This repo includes two Claude Code skills:
Skill | Command | What it does |
Map |
| Guided mapping — asks for repos, credential profile, monitors progress, reports results |
Research |
| Interactive JEPA inference — loads graph, builds threat models, matches, validates, submits paths |
Skills are installed by latent-defense-mcp-init into .claude/skills/. They guide Claude through each workflow step by step.
Environment variables
Variable | Required | Default | Description |
| Yes | — | API key from portal (starts with |
| No |
| Portal base URL |
| No |
| Set to |
Tool reference
Mapping
Tool | Description |
| Create a mapping run — accepts repos, cloud accounts, k8s clusters, domains, CIDRs, web endpoints |
| Get run status: routing → planning → running → committing → completed. Shows agent counts and progress |
| List recent mapping runs with status and trigger type |
| List agents spawned by a run (planner, modality agents) with per-agent status |
| Cancel a running or stuck mapping run |
| Trigger a scan via map-trigger (adds dedup + rate limiting — use for production scheduled scans) |
| List recent trigger events (manual scans, webhooks, scheduled) |
| Active runs, rate limiting state, failure counts |
| List cron-based recurring scan schedules |
| Manually trigger a scheduled scan now |
Infrastructure graph
Tool | Description |
| List all InfraDB repositories with node/edge counts |
| Get repository details |
| List branches in a repository (each branch is an independent graph state) |
| Get branch details — head commit, graph stats |
| Get the full materialized graph (all nodes + edges) for a branch |
| Create a new branch (fork from existing for analysis) |
| List commits on a branch (newest first) — each commit is a graph delta |
| Diff two commits — shows added/removed/modified nodes and edges |
| Full-text search for nodes in a repository |
| List raw JEPA attack paths stored on a branch (pre-triage) |
| Overall InfraDB stats — repo count, total nodes/edges, storage |
JEPA inference
Tool | Description |
| Trigger a batch JEPA inference run on a branch — discovers attack paths automatically |
| List recent inference runs |
| Get inference run status and results |
| Ingest a security detection from an external tool (scanner, SIEM) to trigger targeted inference |
| List JEPA inference schedules (cron-based recurring runs) |
| Create a recurring inference schedule (e.g. nightly on all branches) |
| Delete an inference schedule |
Triage
Tool | Description |
| List attack paths — filter by status (new/acknowledged/validated/escalated) and min risk score |
| Get full path details — steps, MITRE ATT&CK mappings, risk score, energy breakdown |
| Update triage status (acknowledge, close, etc.) |
| Dispatch a path for sandbox validation (Parser → Exploit → Grader agents in an isolated container) |
| Escalate a validated path to the ticketing system |
| Triage statistics — counts by status, severity, repository |
Webhooks
Tool | Description |
| Register a webhook for triage events (e.g. Slack notification on new attack paths) |
| List registered webhooks |
| Delete a webhook |
| Send a synthetic test event to verify delivery |
| Get delivery history — success/failure per attempt |
| Validate a Jinja2 webhook template against sample data |
Connectors
Tool | Description |
| List data source connectors (GuardDuty, Inspector, Qualys, Tenable, etc.) |
| Create a new connector for automated artifact ingestion |
| Get connector details — status, last poll time, config |
| Update connector config or enable/disable |
| Delete a connector |
| Trigger an immediate poll (fetch latest data from the source now) |
| Test connectivity without persisting artifacts |
| Health summary across all connectors — sorted unhealthy-first |
| List available connector types and their required config fields |
| Ingestion stats — total artifacts, connector health, last poll times |
Validation & ticketing
Tool | Description |
| Get validation run status — step counts, progress, verdict |
| List remediation tickets |
| Get ticket details — linked attack path, status, external ticket URL |
Graph-oracle (interactive JEPA tools)
These tools power the /research skill. They auto-manage an oracle session — no manual session creation needed.
Tool | Description |
| Load a branch graph into the JEPA engine. Returns immediately — encoding runs in background (2-5 min for large graphs) |
| Check if graph encoding is complete ( |
| Get loaded graph stats — node/edge counts, type distribution, available edge types |
| Browse nodes by type (e.g. all |
| Semantic node lookup — returns best match with full neighbor details |
| Search nodes by text similarity using MiniLM embeddings |
| Add a node to the threat model |
| Add an edge to the threat model |
| View the current threat model (nodes and edges) |
| Clear the threat model and start fresh |
| Match threat model against real infrastructure — returns Mermaid diagram with node matches (cosine scores), BFS paths (energy scores), and implicit edges |
| Iterative energy-scored refinement — returns per-iteration Mermaid diagrams with entry candidates, per-hop transition energy, and convergence status |
| Submit a discovered attack path as a chain of node descriptions (e.g. "API gateway → auth service → database") |
| Submit all matched paths from the current threat model to triage |
| List built-in threat model templates (identity, network, data, supply chain, cloud) |
| Load a template into the threat model (replaces current) |
| Save the current threat model as a reusable template |
| Destroy the oracle session and start fresh |
Available Tools
85 toolscancel_mapping_runB
Cancel a running mapping run.
Inputs: run_id (required). Returns: result
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).
Inputs: provider (required), config, secret_keys, set_active. Returns: result
connector_healthA
Get health summary across all connectors, sorted unhealthy-first. Shows circuit breaker state and consecutive failures.
Inputs: no named parameters. Returns: result
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.
Inputs: repo_id (required), name (required), source_branch_id. Returns: result
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.
Inputs: name (required), connector_type (required), connection_config (required), poll_config, +1 more. Returns: result
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.
Inputs: name (required), cron (required), branch_labels, all_branches. Returns: result
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.
Inputs: description (required), repositories, cloud_accounts, kubernetes_clusters, +7 more. Returns: result
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.
Inputs: path_id (required), repository_id (required), branch_id (required), entry_node (required), +8 more. Returns: result
delete_connectorC
Delete a data source connector.
Inputs: connector_id (required). Returns: result
delete_inference_scheduleC
Delete a JEPA inference schedule.
Inputs: schedule_id (required). Returns: result
delete_webhookC
Delete a triage webhook.
Inputs: webhook_id (required). Returns: result
diff_commitsA
Diff two commits — shows added/removed/modified nodes and edges.
Inputs: commit_a_id (required), commit_b_id (required). Returns: result
escalate_pathC
Escalate a validated attack path to the ticketing system.
Inputs: path_id (required). Returns: result
get_attack_pathA
Get full details of an attack path including steps, MITRE mappings, and risk score.
Inputs: path_id (required). Returns: result
get_branchC
Get branch details including head commit and graph stats.
Inputs: repo_id (required), branch_id (required). Returns: result
get_connectorC
Get connector details including status and last poll time.
Inputs: connector_id (required). Returns: result
get_graphC
Get the full materialized graph (nodes + edges) for a branch.
Inputs: branch_id (required). Returns: result
get_inference_runB
Get status and results of an inference run.
Inputs: run_id (required). Returns: result
get_mapping_runB
Get status and details of a mapping run.
Inputs: run_id (required). Returns: result
get_repositoryC
Get details for an InfraDB repository.
Inputs: repo_id (required). Returns: result
get_ticketC
Get remediation ticket details.
Inputs: ticket_id (required). Returns: result
get_ticket_providerA
Get the active ticketing provider and all configured providers with verification state.
Inputs: no named parameters. Returns: result
get_ticket_stepsB
Get per-iteration remediation steps/progress for a ticket.
Inputs: ticket_id (required). Returns: result
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 schema_version. Fetch this before
authoring or previewing a template with preview_ticket_template.
Inputs: no named parameters. Returns: result
get_trigger_eventB
Get details of a specific trigger event.
Inputs: event_id (required). Returns: result
get_validation_statusA
Get the status of a validation run (step counts, progress).
Inputs: run_id (required). Returns: result
infra_statsA
Get InfraDB stats (repo count, total nodes/edges, storage).
Inputs: no named parameters. Returns: result
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.
Inputs: source (required), severity (required), affected_resource_type (required), affected_resource_id (required), +2 more. Returns: result
ingest_statsA
Get ingestion stats (total artifacts, connector health, last poll times).
Inputs: no named parameters. Returns: result
list_attack_pathsB
List attack paths, optionally filtered by status or risk score.
Status values: new, acknowledged, validating, validated, escalated, ticketed, closed.
Inputs: status, min_risk_score, limit, offset. Returns: result
list_branch_attack_pathsA
List attack paths stored on a branch in InfraDB (pre-triage, raw JEPA output).
Inputs: branch_id (required). Returns: result
list_branchesC
List branches in a repository.
Inputs: repo_id (required). Returns: result
list_commitsC
List commits on a branch (newest first).
Inputs: branch_id (required), limit. Returns: result
list_connectorsA
List all configured data source connectors.
Inputs: no named parameters. Returns: result
list_connector_typesA
List available connector types and their required configuration fields.
Inputs: no named parameters. Returns: result
list_inference_runsC
List recent JEPA inference runs.
Inputs: limit. Returns: result
list_inference_schedulesA
List all JEPA inference schedules.
Inputs: no named parameters. Returns: result
list_mapping_agentsA
List agents spawned by a mapping run (planner, modality agents, etc.).
Inputs: run_id (required). Returns: result
list_mapping_runsC
List recent mapping runs with status, trigger type, and graph stats.
Inputs: limit. Returns: result
list_repositoriesA
List all InfraDB repositories.
Inputs: no named parameters. Returns: result
list_scan_schedulesA
List all scan schedules (cron-based recurring mapping runs).
Inputs: no named parameters. Returns: result
list_ticketsC
List remediation tickets.
Inputs: status, limit. Returns: result
list_trigger_eventsC
List recent trigger events (scans, webhooks).
Inputs: limit. Returns: result
list_webhooksA
List all registered triage webhooks.
Inputs: no named parameters. Returns: result
oracle_get_nodeB
Look up a node by description. Finds the best semantic match with full details.
Inputs: query (required). Returns: result
oracle_graph_infoA
Get node/edge counts, type distribution, and available edge types for the loaded graph.
Inputs: no named parameters. Returns: result
oracle_list_nodesB
Browse nodes in the loaded graph, optionally filtered by type.
Inputs: node_type, limit. Returns: result
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.
Inputs: branch_id (required). Returns: result
oracle_load_statusA
Check whether the graph has finished loading after oracle_load_branch returned 'encoding_started'.
Inputs: no named parameters. Returns: result
oracle_reset_sessionA
Destroy the current oracle session and start fresh on the next tool call.
Inputs: no named parameters. Returns: result
oracle_search_nodesC
Search nodes by text similarity using MiniLM embeddings.
Inputs: node_description (required), node_type, top_k. Returns: result
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.
Inputs: nodes (required), description. Returns: result
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.
Inputs: description. Returns: result
oracle_tm_add_edgeC
Add an edge to the threat model.
Inputs: source (required), target (required), edge_type (required), description (required). Returns: result
oracle_tm_add_nodeC
Add a node to the threat model.
Inputs: name (required), description (required), node_type (required). Returns: result
oracle_tm_clearB
Clear the current threat model.
Inputs: no named parameters. Returns: result
oracle_tm_list_templatesC
List available threat model templates. Categories: identity, network, data, supply_chain, cloud_services.
Inputs: category. Returns: result
oracle_tm_load_templateC
Load a threat model template by name. Replaces the current threat model.
Inputs: name (required). Returns: result
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.
Inputs: top_k. Returns: result
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.
Inputs: top_k, max_iterations. Returns: result
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.
Inputs: name (required), description (required), category (required), source_template. Returns: result
oracle_tm_showA
View the current threat model (nodes and edges).
Inputs: no named parameters. Returns: result
poll_connectorC
Trigger an immediate poll on a connector (fetch latest data from the source).
Inputs: connector_id (required). Returns: result
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). enabled is forced on for the preview render.
stage: Lifecycle slice to render — "initial" (creation), "final"
(resolution), or "failure". Defaults to "final".
provider: Optional provider name; when set, the response includes a
transform hint for how that provider will mutate the rendered body.
Inputs: template (required), stage, provider. Returns: result
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.
Inputs: url (required), events (required), template, secret, +1 more. Returns: result
remove_ticket_providerC
Remove a configured ticketing provider.
Inputs: provider (required). Returns: result
retry_ticketC
Re-run remediation from a failed ticket.
Inputs: ticket_id (required). Returns: result
run_inferenceC
Trigger a JEPA inference run on a branch to discover attack paths.
Inputs: branch_id (required). Returns: result
run_scan_scheduleC
Manually trigger a scan schedule to run now.
Inputs: schedule_id (required). Returns: result
search_nodesC
Search nodes in a repository by text query.
Inputs: repo_id (required), query (required). Returns: result
set_active_ticket_providerB
Switch the active ticketing provider to an already-configured provider.
Inputs: provider (required). Returns: result
sync_ticketB
Force a one-off sync of a ticket's status from its upstream provider.
Inputs: ticket_id (required). Returns: result
test_connectorA
Test a connector's connection without persisting artifacts. Returns record count or error details.
Inputs: connector_id (required). Returns: result
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.
Inputs: provider, config. Returns: result
test_webhookB
Send a synthetic test event to a webhook and return the delivery result with per-attempt status codes.
Inputs: webhook_id (required). Returns: result
ticket_statsA
Get aggregate ticket statistics (counts by status, provider, and outcome).
Inputs: no named parameters. Returns: result
triage_statsB
Get triage statistics (counts by status, severity, repository).
Inputs: repository_id. Returns: result
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.
Inputs: description (required), credentials_profile, cloud_accounts, repositories, +1 more. Returns: result
trigger_statsA
Get trigger service stats (active runs, rate limiting, failures).
Inputs: no named parameters. Returns: result
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.
Inputs: connector_id (required), connection_config, poll_config, enabled. Returns: result
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.
Inputs: path_id (required), status (required), reason. Returns: result
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.
Inputs: ticket_id (required), status (required). Returns: result
validate_pathB
Dispatch an attack path for sandbox validation (Parser → Exploit → Grader).
Inputs: path_id (required). Returns: result
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").
Inputs: template (required), sample_event_type. Returns: result
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.
Inputs: webhook_id (required), limit, status. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 85 tools
Each tool has a clearly distinct purpose, with consistent prefixes (create_, get_, list_, oracle_) and specific domain targets. Even similar-sounding tools like 'list_attack_paths' vs 'list_branch_attack_paths' are differentiated by scope.
All tools follow a consistent verb_noun pattern in snake_case. The oracle_ prefix is used uniformly for oracle operations, and stats tools use noun_verb but remain consistent among themselves.
85 tools is high but well-justified given the broad domain coverage (mapping, attack paths, threat modeling, ticketing, webhooks, connectors). Some consolidation might be possible (e.g., combining oracle operations), but the count is reasonable for the complexity.
The tool suite covers CRUD for most entities (connectors, branches, tickets, webhooks, etc.) and includes advanced operations (validation, escalation, previewing). Minor gaps exist, such as missing update operations for inference schedules and webhooks, and no delete for branches or repositories.
Maintenance
Related MCP Connectors
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
IaC attack-path auditor: finds internet-to-crown-jewel chains in Terraform/CFN/K8s.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
1
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceConnects Claude Desktop to GitHub repositories, enabling users to perform git operations and GitHub API interactions through natural conversation.443 npm-
- AlicenseNot gradedqualityNot gradedmaintenanceConnects Claude Desktop directly to GitHub repositories and git commands, enabling users to clone repos, check status, commit changes, push code, create repositories, and manage GitHub resources through natural conversation.443 npm-
- AlicenseNot gradedqualityDmaintenanceConnects Claude to GitHub repositories for querying repos, reviewing PRs, managing issues, searching code, and automating workflows.MIT
- AlicenseNot gradedqualityBmaintenanceLets Codex delegate coding and repository work to an installed Claude Code CLI with permission-aware inspect/write access, model and effort selection, resumable and cloud-attached sessions, and durable synchronous or asynchronous jobs.MIT