a CLI to evaluate MCP servers throughout their lifecycle (dump, document, compare, changelog...)
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit be1d7e5 · analyzer v33 · 4d ago
skills & prompt files 4
- skill cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/SKILL.md
- skill cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/artifacts/profiles/node-npm-lib/.github/skills/release/SKILL.md
- skill cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/release/SKILL.md
- agent-rules cisco-open-mcptoolkit-contract-be1d7e5/AGENTS.md
danger signals1
- suspicious endpoint abc.ngrok.io cisco-open-mcptoolkit-contract-be1d7e5/tests/unit/oauth-manager.test.ts :65
oauthCallbackUrl: 'https://abc.ngrok.io/custom/oauth/callback'
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 59
filesystem 29
- fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/apply.mjs :12
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'node:fs'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/check.mjs :8
import { readFileSync, existsSync } from 'node:fs'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/lib.mjs :2
import { readFileSync, existsSync } from 'node:fs'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/staleness.mjs :7
import { readFileSync } from 'node:fs'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/scripts/sync-badge.mjs :10
import { readFileSync, writeFileSync } from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/breaking.ts :10
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/changelog.ts :10
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/compare.ts :10
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/convert.ts :10
import { readFile, writeFile } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/diff.ts :10
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/document.ts :10
import { readFile, writeFile } from 'fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/dump.ts :10
import { writeFile, readFile } from 'node:fs/promises';
show 17 more
- fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/rules.ts :13
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/split.ts :10
import { writeFile, mkdir } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/commands/validate.ts :10
import { writeFile, readFile } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/index.ts :7
import { readFileSync } from 'node:fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/catalog-discovery.ts :13
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/catalog-validator.ts :15
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/client.ts :9
import { readFileSync } from 'node:fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/config.ts :9
import { readFile } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/dumper.ts :9
import { readFile } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/oauth/client-registration-storage.ts :5
import { mkdir, readFile, writeFile, unlink } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/oauth/token-storage.ts :5
import { mkdir, readFile, writeFile, unlink } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/renderer.ts :10
import { readFile } from 'fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/rules-engine.ts :10
import * as fs from 'fs'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/splitter.ts :9
import { readFile } from 'node:fs/promises'; - fs cisco-open-mcptoolkit-contract-be1d7e5/src/lib/validator.ts :9
import { readFile } from 'node:fs/promises'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/generators/catalog-test-generator.ts :18
import fs from 'fs/promises'; - fs (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/unit/compare.test.ts :13
import * as fs from 'fs';
shell / exec 6
- shell (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/settings.mjs :13
import { execFileSync } from 'node:child_process'; - shell (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/staleness.mjs :9
import { execFileSync } from 'node:child_process'; - shell cisco-open-mcptoolkit-contract-be1d7e5/src/commands/wizard.ts :11
import { spawn } from 'node:child_process'; - shell (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/integration/agents-command.test.ts :10
import { execSync } from 'child_process'; - shell (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/integration/protocol-view-command.test.ts :6
import { execFileSync, spawnSync } from 'node:child_process'; - shell (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/unit/completion.test.ts :9
import { execSync } from 'child_process';
network 5
- net cisco-open-mcptoolkit-contract-be1d7e5/src/lib/client.ts :496
const response = await fetch(url, { - net cisco-open-mcptoolkit-contract-be1d7e5/src/lib/oauth/discovery.ts :75
const response = await fetch(url, fetchInit); - net cisco-open-mcptoolkit-contract-be1d7e5/src/lib/oauth/manager.ts :17
import { createServer, IncomingMessage, ServerResponse } from 'node:http'; - net cisco-open-mcptoolkit-contract-be1d7e5/src/lib/oauth/registration.ts :215
const response = await fetch(endpoint, { - net (weak) cisco-open-mcptoolkit-contract-be1d7e5/tests/unit/oauth-manager.test.ts :6
import { createServer, type Server } from 'node:http';
secrets 1
- secrets (weak) cisco-open-mcptoolkit-contract-be1d7e5/.github/skills/oss-scaffold/scripts/settings.mjs :63
if (process.env.GH_TOKEN || process.env.GITHUB_TOKEN || process.env.GITHUB_ENTERPRISE_TOKEN) {
install hooks 1
- prepack cisco-open-mcptoolkit-contract-be1d7e5/package.json :22
npm run clean && npm run build
declared dependencies 24
- @modelcontextprotocol/client@2.0.0
- @inquirer/prompts@^8.5.2
- @mcpdesc/core@0.11.0
- @mcpdesc/validator@0.12.0
- ajv@^8.20.0
- ajv-formats@^3.0.1
- commander@^15.0.0
- handlebars@^4.7.9
- markdown-it@^14.2.0
- marked@^18.0.5
- omelette@^0.4.17
- openid-client@^6.8.4
show 12 more
- semver@^7.8.5
- snarkdown@^2.0.0
- yaml@^2.9.0
- @jest/globals@^30.4.1
- @swc/core@^1.15.43
- @swc/jest@^0.2.39
- @types/jest@^30.0.0
- @types/node@^26.0.0
- @types/omelette@^0.4.5
- @types/semver@^7.7.1
- jest@^30.4.2
- typescript@^6.0.3