{"apiVersion":"v1","directorySlug":"luthersystems-mcp-73dfb96afe","title":"Luther Systems","description":"Luther Systems platform empowers enterprises to automate and run their processes at speed and scale.","pageUrl":"https://www.mcpbundles.com/skills/luthersystems-mcp-73dfb96afe","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://app.luthersystems.com/v1/insideout-mcp","hostedMcpUrl":null,"toolCount":24,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.luthersystems/luthersystems-mcp-73dfb96afe","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"awsinspect","description":"INSPECTION: Inspect AWS infrastructure for a deployed project\n⚠️ **PREREQUISITE**: This tool requires a prior deployment ATTEMPT (successful or failed).\nCheck convostatus for hasDeployAttempt=true before calling. Works even after failed deploys to inspect orphaned resources.","inputSchema":{"type":"object","required":["session_id","service","action","filters","detail","raw"],"properties":{"raw":{"type":"boolean"},"action":{"type":"string"},"detail":{"type":"boolean"},"filters":{"type":"string"},"service":{"enum":["account","acm","alb","apigateway","apprunner","backup","bedrock","cloudfront","cloudwatchlogs","cognito","cost-explorer","dynamodb","ebs","ec2","ecs","eks","elasticache","kms","lambda","msk","opensearch","rds","route53","s3","sagemaker","secretsmanager","sqs","vpc","waf"],"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Inspect AWS Infrastructure","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"awsinspect","displayName":"Inspect AWS Infrastructure"},{"name":"awsinspect_batch","description":"BATCH INSPECTION: run up to 32 AWS inspect probes in one call.\n⚠️ **PREREQUISITE**: Same as awsinspect — deploy attempt required.\nCheck convostatus for hasDeployAttempt=true before calling.","inputSchema":{"type":"object","required":["session_id","subs"],"properties":{"subs":{"type":["null","array"],"items":{"type":"object","required":["service","action"],"properties":{"action":{"type":"string"},"filters":{"type":"string"},"service":{"enum":["account","acm","alb","apigateway","apprunner","backup","bedrock","cloudfront","cloudwatchlogs","cognito","cost-explorer","dynamodb","ebs","ec2","ecs","eks","elasticache","kms","lambda","msk","opensearch","rds","route53","s3","sagemaker","secretsmanager","sqs","vpc","waf"],"type":"string"}},"additionalProperties":false},"maxItems":32,"minItems":1},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Batch-Inspect AWS Infrastructure","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"awsinspect_batch","displayName":"Batch-Inspect AWS Infrastructure"},{"name":"convoawait","description":"Wait for a pending response from Riley after a convoreply timeout.","inputSchema":{"type":"object","required":["session_id"],"properties":{"timeout":{"type":["null","integer"],"maximum":55,"minimum":1},"message_id":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Await Pending Response","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"convoawait","displayName":"Await Pending Response"},{"name":"convoinspect","description":"INSPECTION: View a session's conversation transcript and metadata\nReturns the full message history (user / assistant / tool turns) plus the session's meta — workflow step, cloud, deployment status, drift state.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Inspect Session Transcript","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"convoinspect","displayName":"Inspect Session Transcript"},{"name":"convoopen","description":"WORKFLOW: Step 1 of 4 - Start infrastructure design conversation\nOpen an InsideOut V2 session and receive the assistant's intro message.\nThe response contains a clean message from Riley (the infrastructure advisor) - display it to the user.\n⚠️ Riley will ask questions - forward these to the user, DO NOT answer on their behalf.\nCRITICAL: This tool returns a session_id in the response metadata. You MUST use this session_id for ALL subsequent tool calls (convoreply, tfgenerate, tfdeploy, etc.).\n⚠️","inputSchema":{"type":"object","properties":{"source":{"type":"string"},"github_username":{"type":"string"},"project_context":{"type":"string"}},"additionalProperties":false},"title":"Start Design Session","logicalName":"convoopen","displayName":"Start Design Session","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"convoreply","description":"WORKFLOW: Step 2 of 4 - Continue infrastructure design conversation\nSend a user message to the active InsideOut session and receive the assistant reply.\nThe response contains a clean message from Riley - display it to the user.","inputSchema":{"type":"object","required":["session_id","text"],"properties":{"text":{"type":"string","maxLength":20000,"minLength":1},"retry":{"type":["null","boolean"]},"timeout":{"type":["null","integer"],"maximum":55,"minimum":1},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"project_context":{"type":"string"}},"additionalProperties":false},"title":"Send Message","logicalName":"convoreply","displayName":"Send Message","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"convostatus","description":"INSPECTION: View the current infrastructure stack for a session\nReturns the current state of the user's infrastructure design including:","inputSchema":{"type":"object","required":["session_id"],"properties":{"job_id":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"View Session Stack Status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"convostatus","displayName":"View Session Stack Status"},{"name":"credawait","description":"Wait for the user to securely connect their cloud account and subscribe to Luther Systems.\nPolls until credentials appear on the session.","inputSchema":{"type":"object","required":["session_id"],"properties":{"cloud":{"enum":["aws","gcp"],"type":"string"},"timeout":{"type":["null","integer"],"maximum":600,"minimum":1},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Await Cloud Credentials","logicalName":"credawait","displayName":"Await Cloud Credentials","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"gcpinspect","description":"INSPECTION: Inspect GCP infrastructure for a deployed project\n⚠️ **PREREQUISITE**: This tool requires a prior deployment ATTEMPT (successful or failed).\nCheck convostatus for hasDeployAttempt=true before calling. Works even after failed deploys to inspect orphaned resources.","inputSchema":{"type":"object","required":["session_id","service","action","filters","detail","raw"],"properties":{"raw":{"type":"boolean"},"action":{"type":"string"},"detail":{"type":"boolean"},"filters":{"type":"string"},"service":{"enum":["apigateway","bastion","billing","certificatemanager","cloudarmor","cloudbuild","cloudcdn","clouddeploy","clouddns","cloudfunctions","cloudkms","cloudlogging","cloudmonitoring","cloudrun","cloudsql","compute","firestore","gcs","gke","iam","identityplatform","loadbalancer","memorystore","pubsub","secretmanager","vertexai","vpc"],"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Inspect GCP Infrastructure","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"gcpinspect","displayName":"Inspect GCP Infrastructure"},{"name":"gcpinspect_batch","description":"BATCH INSPECTION: run up to 32 GCP inspect probes in one call.\n⚠️ **PREREQUISITE**: Same as gcpinspect — deploy attempt required.\nCheck convostatus for hasDeployAttempt=true before calling.","inputSchema":{"type":"object","required":["session_id","subs"],"properties":{"subs":{"type":["null","array"],"items":{"type":"object","required":["service","action"],"properties":{"action":{"type":"string"},"filters":{"type":"string"},"service":{"enum":["apigateway","bastion","billing","certificatemanager","cloudarmor","cloudbuild","cloudcdn","clouddeploy","clouddns","cloudfunctions","cloudkms","cloudlogging","cloudmonitoring","cloudrun","cloudsql","compute","firestore","gcs","gke","iam","identityplatform","loadbalancer","memorystore","pubsub","secretmanager","vertexai","vpc"],"type":"string"}},"additionalProperties":false},"maxItems":32,"minItems":1},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Batch-Inspect GCP Infrastructure","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"gcpinspect_batch","displayName":"Batch-Inspect GCP Infrastructure"},{"name":"help","description":"Get workflow guidance for using InsideOut infrastructure tools.\nCall help() for a compact overview, or help(section=...) for a detailed guide.\nSections: workflow, tools, examples, inspect.\nResponses include hints with next_actions and related_tools.","inputSchema":{"type":"object","properties":{"section":{"enum":["workflow","tools","examples","inspect"],"type":"string"}},"additionalProperties":false},"title":"Workflow Guide","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"help","displayName":"Workflow Guide"},{"name":"stackdiff","description":"Structured diff showing what would be deployed if the user ran tfdeploy now.\nReturns component-level changes (added/removed/modified), field-level details, and pricing deltas.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"to_version":{"type":["null","integer"]},"from_version":{"type":["null","integer"]}},"additionalProperties":false},"title":"Compare Stack Versions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"stackdiff","displayName":"Compare Stack Versions"},{"name":"stackrollback","description":"Create a draft version by reverting to a previous version's config.\nCopies components, config, and pricing from the target version. If a draft already exists, updates it in-place (single-draft rule).","inputSchema":{"type":"object","required":["session_id","version"],"properties":{"version":{"type":"integer"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Rollback Stack Version","logicalName":"stackrollback","displayName":"Rollback Stack Version","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"stackversions","description":"List all stack versions for a session (newest first).\nShows version history including version number, status (draft/confirmed/applied), change summaries, and timestamps.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"List Stack Versions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"stackversions","displayName":"List Stack Versions"},{"name":"submit_feedback","description":"FEEDBACK: Submit feedback, bug reports, or feature requests to Luther Systems\nUse this tool to forward user feedback directly to the Luther Systems team. This includes bug reports, feature requests, questions, or general feedback about InsideOut.\nThe agent itself can also use this tool to report issues it encounters during operation.","inputSchema":{"type":"object","required":["session_id","category","message"],"properties":{"source":{"enum":["mcp","cli","web"],"type":"string"},"message":{"type":"string","maxLength":10000,"minLength":1},"category":{"enum":["bug_report","feature_request","general_feedback","question"],"type":"string"},"initiator":{"enum":["user","agent"],"type":"string"},"user_name":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"user_email":{"type":"string","format":"email"}},"additionalProperties":false},"title":"Submit Feedback","logicalName":"submit_feedback","displayName":"Submit Feedback","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tfdeploy","description":"WORKFLOW: Step 4 of 4 - Deploy infrastructure to the cloud\nDeploy infrastructure by starting a Terraform job for an InsideOut session.\nThis tool initiates the actual deployment process after Terraform files have been generated.\nIMPORTANT: This starts a long-running job (15+ minutes). Use tfstatus to monitor progress.\nSINGLE-FLIGHT: only one TF job (apply/plan/destroy/drift) runs per session at a time. If another job is already in flight, tfdeploy returns tf_job_conflict with the live job_id — at","inputSchema":{"type":"object","required":["session_id"],"properties":{"plan_id":{"type":"string"},"sandbox":{"type":["null","boolean"]},"version":{"type":["null","integer"]},"force_new":{"type":["null","boolean"]},"project_id":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"ignore_drift":{"type":["null","boolean"]}},"additionalProperties":false},"title":"Deploy Infrastructure","logicalName":"tfdeploy","displayName":"Deploy Infrastructure","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tfdestroy","description":"DESTROY: Tear down previously deployed infrastructure\nDestroys infrastructure by calling the Oracle destroy endpoint for a session that has a prior successful deployment.\nIMPORTANT: This starts a long-running job. Use tfstatus/tflogs to monitor progress.\nSINGLE-FLIGHT: only one TF job per session at a time. If another job is already in flight, tfdestroy returns tf_job_conflict with the live job_id — attach with tfstatus/tflogs, or pass force_new=true to override.\nREQUIRES: session_id from convoo","inputSchema":{"type":"object","required":["session_id"],"properties":{"force_new":{"type":["null","boolean"]},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Destroy Infrastructure","logicalName":"tfdestroy","displayName":"Destroy Infrastructure","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tfdrift","description":"DRIFT CHECK: Run a read-only drift detection check\nChecks whether deployed infrastructure has drifted from the expected Terraform state.\nThis is a read-only operation — it does NOT modify any infrastructure.\nReturns job_id. Use tflogs to stream the drift check results.\nSINGLE-FLIGHT: only one TF job per session at a time. If another job is already in flight, tfdrift returns tf_job_conflict with the live job_id — attach with tfstatus/tflogs, or pass force_new=true to override.\nREQUIRES: session_i","inputSchema":{"type":"object","required":["session_id"],"properties":{"force_new":{"type":["null","boolean"]},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Check Infrastructure Drift","logicalName":"tfdrift","displayName":"Check Infrastructure Drift","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tfgenerate","description":"WORKFLOW: Step 3 of 4 - Generate Terraform files from completed design\nGenerate Terraform files from an InsideOut session that has completed infrastructure design.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"include_code":{"type":["null","boolean"]}},"additionalProperties":false},"title":"Generate Terraform","logicalName":"tfgenerate","displayName":"Generate Terraform","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tflogs","description":"MONITORING: Fetch Terraform deployment logs with pagination\nFetches logs from a running or completed Terraform deployment job.\nFor **completed jobs**: uses REST endpoint for instant retrieval (supports `tail` for server-side filtering).\nFor **running jobs**: streams via SSE with timeout-based pagination.","inputSchema":{"type":"object","required":["session_id"],"properties":{"tail":{"type":["null","integer"],"maximum":10000,"minimum":0},"job_id":{"type":"string"},"timeout":{"type":["null","integer"],"maximum":55,"minimum":1},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"},"last_event_id":{"type":"string"}},"additionalProperties":false},"title":"Fetch Deploy Logs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"tflogs","displayName":"Fetch Deploy Logs"},{"name":"tfoutputs","description":"INSPECTION: Retrieve Terraform outputs from a completed deployment\nReturns structured output values (VPC IDs, endpoints, cluster names, etc.) after a successful deploy.\nSensitive outputs are redacted (shown as '(sensitive)').","inputSchema":{"type":"object","required":["session_id"],"properties":{"job_id":{"type":"string"},"lifecycle":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Get Deploy Outputs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"tfoutputs","displayName":"Get Deploy Outputs"},{"name":"tfplan","description":"PREVIEW: Run terraform plan to preview infrastructure changes\nRuns a terraform plan for an InsideOut session without applying any changes.\nThis lets the user review what will be created/changed/destroyed before committing.\nReturns job_id, plan_id, and project_id. Use tflogs to stream the plan output.\nAfter the plan completes, use tfdeploy with plan_id to apply the exact plan.\nSINGLE-FLIGHT: only one TF job per session at a time. If another job is already in flight, tfplan returns tf_job_conflict","inputSchema":{"type":"object","required":["session_id"],"properties":{"sandbox":{"type":["null","boolean"]},"force_new":{"type":["null","boolean"]},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Preview Infrastructure Plan","logicalName":"tfplan","displayName":"Preview Infrastructure Plan","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"tfruns","description":"INSPECTION: List all Terraform deployment runs for a session\nReturns job IDs, statuses, types (apply/destroy), and timestamps for every run.\nUse this to see deployment history, find job IDs for log inspection, or check which deployments succeeded or failed.","inputSchema":{"type":"object","required":["session_id"],"properties":{"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"List Deploy Runs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"tfruns","displayName":"List Deploy Runs"},{"name":"tfstatus","description":"MONITORING: Quick status check for Terraform deployments\nCheck the current status of a Terraform deployment job.\nUse this tool to quickly check if a deployment is running, completed, or failed.\nReturns job status, job_id, and other metadata without streaming logs.\nUse tflogs to stream the actual deployment logs.\nREQUIRES: session_id from convoopen response (format: sess_v2_...).\nOPTIONAL: job_id to target a specific deployment (use tfruns to discover IDs).","inputSchema":{"type":"object","required":["session_id"],"properties":{"job_id":{"type":"string"},"session_id":{"type":"string","pattern":"^sess_v2_[0-9A-Za-z]+\\?token=[0-9a-f]+$"}},"additionalProperties":false},"title":"Check Deploy Status","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"tfstatus","displayName":"Check Deploy Status"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Luther-Systems&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcHAubHV0aGVyc3lzdGVtcy5jb20vdjEvaW5zaWRlb3V0LW1jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Luther-Systems%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapp.luthersystems.com%2Fv1%2Finsideout-mcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Luther-Systems%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapp.luthersystems.com%2Fv1%2Finsideout-mcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Luther+Systems&connectorUrl=https%3A%2F%2Fapp.luthersystems.com%2Fv1%2Finsideout-mcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Luther-Systems\" --url \"https://app.luthersystems.com/v1/insideout-mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/luthersystems-mcp-73dfb96afe","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/luthersystems-mcp-73dfb96afe/tools/{tool}","mcpServerUrl":"https://app.luthersystems.com/v1/insideout-mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/luthersystems-mcp-73dfb96afe?live=1"}