Koyeb — the complete, unedited output of the deterministic mcptrustchecker engine v1.13.0, scanned . Every finding, capability tag and score component below is exactly what the engine produced — no AI, no post-processing.
{
"tool": {
"name": "mcptrustchecker",
"version": "1.13.0",
"methodologyVersion": "mcptrustchecker-1.13"
},
"target": {
"id": "@koyeb/mcp-server",
"source": {
"kind": "package",
"origin": "@koyeb/mcp-server"
},
"server": {
"name": "@koyeb/mcp-server"
}
},
"grade": "A",
"score": {
"score": 93,
"threatScore": 100,
"grade": "A",
"band": "A",
"categorySubtotals": {
"injection": 0,
"exfiltration": 0,
"permissions": 0,
"supply-chain": 0,
"network": 0,
"hygiene": 0
},
"vector": [
{
"kind": "client",
"term": "capability-exposure",
"level": "high",
"label": "capability blast radius (high) — client exposure if the model is manipulated",
"appliedPenalty": 6
},
{
"kind": "client",
"term": "verification-discount",
"level": "repo",
"label": "publisher verification (public source) — no provenance, but the source is public and inspectable",
"appliedPenalty": 1
},
{
"kind": "client",
"term": "coverage-honesty",
"level": "source",
"label": "inspection depth (source) — how much of the target the scan could see",
"appliedPenalty": 0
}
],
"gatesFired": [],
"methodologyVersion": "mcptrustchecker-1.13"
},
"capability": {
"level": "high",
"reasons": [
"can send data / act on an external service",
"reads sensitive or local data",
"has a read → egress path (a data-exfiltration surface)",
"can execute shell commands or code"
],
"tags": [
"sensitive-source",
"code-exec",
"external-sink"
]
},
"coverage": {
"level": "source",
"inputs": {
"toolSurface": true,
"implementationSource": true,
"packageMetadata": true,
"liveTransport": false
},
"caveats": [
"Tools were statically extracted from the published source (16 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command \"npx -y <package>\"."
]
},
"findings": [
{
"ruleId": "MTC-FLOW-004",
"title": "Sensitive-source and external-sink co-exist",
"category": "exfiltration",
"severity": "high",
"confidence": "strong",
"description": "Tools that read sensitive data ([get-token]) and tools that can send data out ([exec]) are exposed together. An agent can move private data to the sink.",
"remediation": "Keep secret-reading and egress capabilities on separate, separately-approved servers.",
"location": {
"kind": "flow",
"name": "get-token → exec"
},
"evidence": "sources [get-token] → sinks [exec]",
"owasp": "LLM02:2025 Sensitive Information Disclosure",
"references": [],
"data": {
"sources": [
"get-token"
],
"sinks": [
"exec"
]
}
},
{
"ruleId": "MTC-CAP-001",
"title": "Tool \"exec\" exposes command/code execution",
"category": "permissions",
"severity": "high",
"confidence": "strong",
"description": "Tool \"exec\" appears to run shell commands or evaluate code (keyword \"exec\" in tool name, parameter \"command\"). Arbitrary execution driven by model input is one of the most dangerous MCP capabilities; combined with any untrusted input it becomes RCE.",
"remediation": "Sandbox execution, allowlist commands/arguments, and never pass model output to a shell unescaped.",
"location": {
"kind": "tool",
"name": "exec"
},
"owasp": "LLM05:2025 Improper Output Handling",
"data": {
"tags": [
"code-exec"
]
}
},
{
"ruleId": "MTC-SRC-002",
"title": "Shell/command execution in server code (build/index.js)",
"category": "permissions",
"severity": "high",
"confidence": "strong",
"description": "In the server's implementation (`build/index.js:27`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.",
"remediation": "Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.",
"location": {
"kind": "server",
"name": "build/index.js"
},
"evidence": "deploy(server); exec(server); return server.server; }",
"owasp": "LLM05:2025 Improper Output Handling",
"data": {
"rule": "MTC-SRC-002",
"file": "build/index.js",
"line": 27,
"nonRuntime": false
}
},
{
"ruleId": "MTC-SRC-002",
"title": "Shell/command execution in server code (build/tools/exec.js)",
"category": "permissions",
"severity": "high",
"confidence": "strong",
"description": "In the server's implementation (`build/tools/exec.js:3`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.",
"remediation": "Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.",
"location": {
"kind": "server",
"name": "build/tools/exec.js"
},
"evidence": "ls.js'; export function exec(server) { server.registerTool('exec', { description: 'Execute a command in a ru",
"owasp": "LLM05:2025 Improper Output Handling",
"data": {
"rule": "MTC-SRC-002",
"file": "build/tools/exec.js",
"line": 3,
"nonRuntime": false
}
},
{
"ruleId": "MTC-SRC-003",
"title": "Hardcoded egress to an external endpoint (build/tools/one-click-apps.js)",
"category": "exfiltration",
"severity": "medium",
"confidence": "strong",
"description": "In the server's implementation (`build/tools/one-click-apps.js:6`): A hardcoded outbound call to a fixed external host inside server code is a classic exfiltration/telemetry channel — especially paired with reads of local data. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.",
"remediation": "Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.",
"location": {
"kind": "server",
"name": "build/tools/one-click-apps.js"
},
"evidence": "const response = await fetch('https://koyeb.com/api/one-click-apps.json'); if (!response.ok) { retu",
"owasp": "LLM02:2025 Sensitive Information Disclosure",
"data": {
"rule": "MTC-SRC-003",
"file": "build/tools/one-click-apps.js",
"line": 6,
"nonRuntime": false
}
},
{
"ruleId": "MTC-CAP-006",
"title": "Unconstrained command parameter \"shell\" on \"exec\"",
"category": "permissions",
"severity": "medium",
"confidence": "heuristic",
"description": "Tool \"exec\" takes a command-shaped parameter \"shell\" with no enum/pattern constraint. Free-form, model- or attacker-controlled arguments reaching a shell is the command-injection precondition.",
"remediation": "Constrain the parameter (enum/pattern), or build the command from a fixed template with escaped args.",
"location": {
"kind": "tool",
"name": "exec",
"field": "inputSchema.properties.shell"
},
"owasp": "LLM05:2025 Improper Output Handling",
"data": {
"param": "shell"
}
},
{
"ruleId": "MTC-CAP-006",
"title": "Unconstrained command parameter \"command\" on \"exec\"",
"category": "permissions",
"severity": "medium",
"confidence": "heuristic",
"description": "Tool \"exec\" takes a command-shaped parameter \"command\" with no enum/pattern constraint. Free-form, model- or attacker-controlled arguments reaching a shell is the command-injection precondition.",
"remediation": "Constrain the parameter (enum/pattern), or build the command from a fixed template with escaped args.",
"location": {
"kind": "tool",
"name": "exec",
"field": "inputSchema.properties.command"
},
"owasp": "LLM05:2025 Improper Output Handling",
"data": {
"param": "command"
}
},
{
"ruleId": "MTC-CAP-005",
"title": "Mutating tool \"exec\" declares no destructiveHint",
"category": "hygiene",
"severity": "low",
"confidence": "heuristic",
"description": "Tool \"exec\" can mutate/egress but declares no destructiveHint. Clients that don't default to spec-safe behavior may not prompt before running it.",
"remediation": "Declare accurate annotations, and gate destructive tools on user confirmation regardless.",
"location": {
"kind": "tool",
"name": "exec"
},
"data": {
"tags": [
"code-exec"
]
}
}
],
"toxicFlows": [
{
"id": "flow-1",
"severity": "high",
"confidence": "strong",
"untrustedInput": [],
"sensitiveSource": [
"get-token"
],
"externalSink": [
"exec"
],
"selfContained": false,
"path": [
"get-token",
"exec"
],
"pathWired": false,
"description": "A sensitive-source → external-sink chain exists: get-token → exec."
}
],
"capabilities": [
{
"tool": "get-token",
"tags": [
"sensitive-source"
],
"reasons": {
"sensitive-source": [
"keyword \"get_token\""
]
}
},
{
"tool": "list-apps",
"tags": [],
"reasons": {}
},
{
"tool": "get-app",
"tags": [],
"reasons": {}
},
{
"tool": "create-app",
"tags": [],
"reasons": {}
},
{
"tool": "deploy",
"tags": [],
"reasons": {}
},
{
"tool": "list-deployments",
"tags": [],
"reasons": {}
},
{
"tool": "get-deployment",
"tags": [],
"reasons": {}
},
{
"tool": "exec",
"tags": [
"code-exec"
],
"reasons": {
"code-exec": [
"keyword \"exec\" in tool name",
"parameter \"command\""
]
}
},
{
"tool": "list-instances",
"tags": [],
"reasons": {}
},
{
"tool": "get-instance",
"tags": [],
"reasons": {}
},
{
"tool": "query-logs",
"tags": [],
"reasons": {}
},
{
"tool": "list-one-click-apps",
"tags": [],
"reasons": {}
},
{
"tool": "list-services",
"tags": [],
"reasons": {}
},
{
"tool": "get-service",
"tags": [],
"reasons": {}
},
{
"tool": "create-service",
"tags": [],
"reasons": {}
},
{
"tool": "update-service",
"tags": [],
"reasons": {}
}
],
"surfaceDigest": "a2444d2baf9bd24e92b6b072a07d6208d7ae0d3641d387376410d1ac0f3c5207",
"stats": {
"tools": 16,
"prompts": 0,
"resources": 0,
"findingsBySeverity": {
"critical": 0,
"high": 4,
"medium": 3,
"low": 1,
"info": 0
}
}
}