⚠️ This snapshot is over 30 days old — treat the grade as stale until the next refresh. Re-scan locally to verify.
Trust Card · Static snapshot
pinecone-io__pinecone-mcp U
Ungraded — insufficient static coverage · 0 findings (0 critical) · scope minimal · Not ranked: insufficient static coverage.
Scanned 2026-10-19 · engine v0.1.3 (8 regex rules, OWASP-mapped) · upstream pinecone-io/pinecone-mcp @ a15d4b9 (2026-08-14)
Score breakdown
No numeric score or breakdown: insufficient static coverage. Findings remain actionable; absence of findings is not evidence of safety.
Insufficient static coverage: Unsupported source present. Findings remain actionable; absence of findings is not evidence of safety.
Coverage: limited
Static-heuristic scope: 59 analyzed / 82 discovered files; 2 unsupported source files; 24 excluded; 0 read errors; 0 truncations. This is not a semantic coverage percentage or proof of safety.
- Unsupported source present
- Coverage describes the files read and regex rules applied, not semantic, runtime, or dependency coverage.
- Supported code is JavaScript, TypeScript, and Python; JSON/YAML receive only the credential rule.
- Skill instructions and other prose are not code-analyzed; declared controls are not verified enforcement.
- Ignored directories, declarations, and non-implementation assets are outside rule scope.
File coverage, applied rules and scan limits
{
"mode": "static-heuristic",
"status": "limited",
"reasons": [
"Unsupported source present"
],
"limitations": [
"Coverage describes the files read and regex rules applied, not semantic, runtime, or dependency coverage.",
"Supported code is JavaScript, TypeScript, and Python; JSON/YAML receive only the credential rule.",
"Skill instructions and other prose are not code-analyzed; declared controls are not verified enforcement.",
"Ignored directories, declarations, and non-implementation assets are outside rule scope."
],
"discoveredFiles": 82,
"analyzedFiles": [
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"scope": "data",
"bytes": 174,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/actions/npm-release/action.yml",
"scope": "data",
"bytes": 957,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/actions/setup/action.yml",
"scope": "data",
"bytes": 836,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/dependabot.yml",
"scope": "data",
"bytes": 497,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/workflows/ci.yml",
"scope": "data",
"bytes": 737,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/workflows/integration.yml",
"scope": "data",
"bytes": 734,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": ".github/workflows/release.yml",
"scope": "data",
"bytes": 4639,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": "eslint.config.js",
"scope": "code",
"bytes": 711,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "gemini-extension.json",
"scope": "data",
"bytes": 169,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": "package-lock.json",
"scope": "data",
"bytes": 133164,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": "package.json",
"scope": "data",
"bytes": 1844,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": "src/constants.ts",
"scope": "code",
"bytes": 259,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/error.test.ts",
"scope": "code",
"bytes": 3267,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/error.ts",
"scope": "code",
"bytes": 2525,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/index.test.ts",
"scope": "code",
"bytes": 2085,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/index.ts",
"scope": "code",
"bytes": 444,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/integration/database.integration.test.ts",
"scope": "code",
"bytes": 4281,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/server.test.ts",
"scope": "code",
"bytes": 1265,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/server.ts",
"scope": "code",
"bytes": 1812,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/test-utils/mock-pinecone.ts",
"scope": "code",
"bytes": 844,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/test-utils/mock-server.ts",
"scope": "code",
"bytes": 1004,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/common/format-error.test.ts",
"scope": "code",
"bytes": 3296,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/common/format-error.ts",
"scope": "code",
"bytes": 2839,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/cascading-search.test.ts",
"scope": "code",
"bytes": 8642,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/cascading-search.ts",
"scope": "code",
"bytes": 4462,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/messages.ts",
"scope": "code",
"bytes": 394,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/pinecone-client.test.ts",
"scope": "code",
"bytes": 4306,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/pinecone-client.ts",
"scope": "code",
"bytes": 1610,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/register-tool.test.ts",
"scope": "code",
"bytes": 6314,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/register-tool.ts",
"scope": "code",
"bytes": 2716,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/rerank-model.ts",
"scope": "code",
"bytes": 695,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/rerank-options.ts",
"scope": "code",
"bytes": 1084,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/schemas.test.ts",
"scope": "code",
"bytes": 2616,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/common/search-query.ts",
"scope": "code",
"bytes": 1060,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/create-index-for-model.test.ts",
"scope": "code",
"bytes": 4833,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/create-index-for-model.ts",
"scope": "code",
"bytes": 4200,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/describe-index-stats.test.ts",
"scope": "code",
"bytes": 2300,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/describe-index-stats.ts",
"scope": "code",
"bytes": 1133,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/describe-index.test.ts",
"scope": "code",
"bytes": 2196,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/describe-index.ts",
"scope": "code",
"bytes": 1139,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/index.test.ts",
"scope": "code",
"bytes": 3024,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/index.ts",
"scope": "code",
"bytes": 1340,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/list-indexes.test.ts",
"scope": "code",
"bytes": 2541,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/list-indexes.ts",
"scope": "code",
"bytes": 825,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/rerank-documents.test.ts",
"scope": "code",
"bytes": 4946,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/rerank-documents.ts",
"scope": "code",
"bytes": 2941,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/schema-composition.test.ts",
"scope": "code",
"bytes": 1889,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/search-records.test.ts",
"scope": "code",
"bytes": 3380,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/search-records.ts",
"scope": "code",
"bytes": 2293,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/upsert-records.handler.test.ts",
"scope": "code",
"bytes": 3115,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/upsert-records.test.ts",
"scope": "code",
"bytes": 3020,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/database/upsert-records.ts",
"scope": "code",
"bytes": 2600,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/docs/index.ts",
"scope": "code",
"bytes": 215,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/docs/search-docs.test.ts",
"scope": "code",
"bytes": 3209,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/tools/docs/search-docs.ts",
"scope": "code",
"bytes": 2352,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "src/version.ts",
"scope": "code",
"bytes": 573,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "tsconfig.json",
"scope": "data",
"bytes": 364,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-002"
]
},
{
"path": "vitest.config.ts",
"scope": "code",
"bytes": 327,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
},
{
"path": "vitest.integration.config.ts",
"scope": "code",
"bytes": 472,
"nonEmpty": true,
"ruleIds": [
"AT-SEC-001",
"AT-SEC-002",
"AT-SEC-003",
"AT-SEC-004",
"AT-SEC-005",
"AT-SEC-006",
"AT-SEC-007",
"AT-COMP-001"
]
}
],
"unsupportedSourceFiles": [
".cursor/rules/best-practices.mdc",
".github/CODEOWNERS"
],
"excludedFiles": [
{
"path": ".git",
"reason": "ignored-directory"
},
{
"path": ".cursor/BUGBOT.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/create-bug.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/create-improvement.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/create-subplan.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/github-triage.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/investigate-github-issue.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/list-github-issues.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/next-action.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/pr-iterate.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/pr-merge.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/commands/pr-open.md",
"reason": "outside-rule-scope"
},
{
"path": ".cursor/rules/best-practices.mdc",
"reason": "unsupported-implementation"
},
{
"path": ".github/CODEOWNERS",
"reason": "unsupported-implementation"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"reason": "outside-rule-scope"
},
{
"path": ".github/ISSUE_TEMPLATE/documentation.md",
"reason": "outside-rule-scope"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"reason": "outside-rule-scope"
},
{
"path": ".github/pull_request_template.md",
"reason": "outside-rule-scope"
},
{
"path": ".gitignore",
"reason": "outside-rule-scope"
},
{
"path": ".prettierrc",
"reason": "outside-rule-scope"
},
{
"path": "CONTRIBUTING.md",
"reason": "outside-rule-scope"
},
{
"path": "LICENSE",
"reason": "outside-rule-scope"
},
{
"path": "README.md",
"reason": "outside-rule-scope"
},
{
"path": "SECURITY.md",
"reason": "outside-rule-scope"
}
],
"readErrors": [],
"truncation": [],
"limits": {
"maxFiles": 4000,
"maxDepth": 12,
"maxFileBytes": 1048576
}
}Fix first (0 critical/high)
No findings in scope of the 8-rule static suite.
Permissions
Scope: minimal · Shell: disabled · Network egress: no · File deletion: none · Human approval: none
Provenance
License: Apache-2.0 · Lockfile: yes · Security policy: yes · Signals: present (documentary, not a safety verdict)
Independently scanned by the OpenTrustBench registry (not self-reported by the project). Static analysis only — no code executed, findings need human triage, counts may include test/example code. Static snapshot; re-scan before relying on it: npx @opentrustbench/cli scan https://github.com/pinecone-io/pinecone-mcp. Scores move with every upstream commit; pages refresh weekly. How scoring works.