Local-first, spec-synced, agent-native API client. Your collection is plain text — your agent, CI, and editor run it and fail the build when code drifts from your OpenAPI spec. Offline, no account.
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 23 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
truspec_codegen
-
truspec_codegen_targets
-
truspec_contract
-
truspec_coverage
-
truspec_create_request
-
truspec_delete_request
-
truspec_docs
-
truspec_drift
-
truspec_environments
-
truspec_format_reference
-
truspec_import_curl
-
truspec_import_har
-
truspec_import_insomnia
-
truspec_lint
-
truspec_list_collections
-
truspec_mock_start
-
truspec_mock_stop
-
truspec_read_request
-
truspec_run_collection
-
truspec_run_request
-
truspec_scaffold_from_spec
-
truspec_update_request
-
truspec_validate_request
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit feb3bf3 · analyzer v33 · 4d ago
skills & prompt files 2
- agent-rules code-with-rashid-truspec-feb3bf3/AGENTS.md
- agent-rules code-with-rashid-truspec-feb3bf3/CLAUDE.md
danger signals1
- dynamic code execution new Function() code-with-rashid-truspec-feb3bf3/packages/core/test/exporters-postman-tests.test.ts :126
expect(() => new Function(script)).not.toThrow();
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 312
filesystem 120
- fs (weak) code-with-rashid-truspec-feb3bf3/e2e/assertions-editor.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/binary-response.spec.ts :2
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/broken-file.spec.ts :1
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/capture-editor.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/docs-editor.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/duplicate-opens-tab.spec.ts :1
import { readdirSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/editor.spec.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/empty-workspace.spec.ts :1
import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/external-edit.spec.ts :1
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/fixtures.ts :2
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/flow-broken-chain.spec.ts :1
import { mkdirSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/flow-dependencies.spec.ts :1
import { writeFileSync } from "node:fs";
show 28 more
- fs (weak) code-with-rashid-truspec-feb3bf3/e2e/history-scope.spec.ts :1
import { rmSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/import-review.spec.ts :1
import { existsSync, mkdtempSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/inline-method-url.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/keyboard-and-copy.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/large-response.spec.ts :2
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/new-folder-modal.spec.ts :1
import { existsSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/new-request-modal.spec.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/order-editor.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/palette-shortcuts.spec.ts :1
import { rmSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/schema-assertion-required.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/script-editor.spec.ts :1
import { readFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/script-output.spec.ts :2
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/security.spec.ts :2
import { existsSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/spec-unasserted.spec.ts :1
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/spec-view.spec.ts :1
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/tab-badges.spec.ts :1
import { writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/tags-options.spec.ts :1
import { readFileSync, writeFileSync } from "node:fs"; - fs (weak) code-with-rashid-truspec-feb3bf3/e2e/var-autocomplete-body.spec.ts :1
import { readFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/deps.ts :1
import { writeFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/docs.ts :1
import { existsSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/env.ts :1
import { existsSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/export.ts :1
import { existsSync, statSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/gen.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/import.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/init.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/lint.ts :1
import { existsSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/mock.ts :1
import { existsSync, readFileSync } from "node:fs"; - fs code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/serve.ts :1
import { existsSync, statSync } from "node:fs";
80 more not shown — this panel samples each group; the count above is the real total.
shell / exec 4
- shell (weak) code-with-rashid-truspec-feb3bf3/packages/cli/test/transport-tls.test.ts :1
import { execFileSync } from "node:child_process"; - shell (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/codegen-fidelity.test.ts :1
import { execFile } from "node:child_process"; - shell (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/source-text.test.ts :1
import { execFileSync } from "node:child_process"; - shell (weak) code-with-rashid-truspec-feb3bf3/packages/desktop/scripts/prepare-sidecar.mjs :5
import { execFileSync } from "node:child_process";
network 30
- net (weak) code-with-rashid-truspec-feb3bf3/e2e/binary-response.spec.ts :1
import { createServer, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/e2e/fixtures.ts :1
import { createServer } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/e2e/large-response.spec.ts :1
import { createServer, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/e2e/mock-latency.spec.ts :24
const res = await fetch(`http://127.0.0.1:${port}/posts`); - net (weak) code-with-rashid-truspec-feb3bf3/e2e/script-output.spec.ts :1
import { createServer, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/e2e/security.spec.ts :1
import { createServer } from "node:http"; - net code-with-rashid-truspec-feb3bf3/packages/cli/src/commands/run.ts :132
// An injected fetch (tests, embedding) always wins over the transport flags. - net code-with-rashid-truspec-feb3bf3/packages/cli/src/transport.ts :3
import { Agent, FormData as UndiciFormData, ProxyAgent, fetch as undiciFetch } from "undici"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/cli/test/cli-branches.test.ts :1
import { createServer } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/cli/test/mock.test.ts :43
const res = await fetch(`${handle?.url}/pets/1`); - net (weak) code-with-rashid-truspec-feb3bf3/packages/cli/test/transport-tls.test.ts :3
import { createServer, type Server } from "node:https"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/cli/test/transport.test.ts :1
import { createServer } from "node:http";
show 18 more
- net code-with-rashid-truspec-feb3bf3/packages/core/src/codegen/targets.ts :216
`const response = await fetch(${dq(s.url)}, {`, - net code-with-rashid-truspec-feb3bf3/packages/core/src/http/close.ts :1
import type { Server } from "node:http"; - net code-with-rashid-truspec-feb3bf3/packages/core/src/mock/server.ts :1
import { createServer, type IncomingMessage } from "node:http"; - net code-with-rashid-truspec-feb3bf3/packages/core/src/runner/transport.ts :107
const response = await opts.fetch(currentUrl, requestInit); - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/codegen-fidelity.test.ts :3
import { createServer } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/http-close.test.ts :1
import { Agent, createServer, get, type RequestListener, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/mock.test.ts :97
const ok = await fetch(`${handle.url}/pets/1`); - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/response-decoding.test.ts :1
import { createServer, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/sse.test.ts :1
import { createServer, type Server } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/core/test/transport.test.ts :1
import { createServer } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/desktop/scripts/prepare-sidecar.mjs :46
const res = await fetch(url); - net (weak) code-with-rashid-truspec-feb3bf3/packages/mcp-server/test/server.test.ts :76
const probe = await fetch(`${started.url}/pets/1`); - net code-with-rashid-truspec-feb3bf3/packages/web/server/index.ts :2
import { createServer, type ServerResponse } from "node:http"; - net code-with-rashid-truspec-feb3bf3/packages/web/src/api.ts :321
const res = await fetch(path, { headers: { "content-type": "application/json" }, ...init }); - net (weak) code-with-rashid-truspec-feb3bf3/packages/web/test/api.test.ts :2
import { createServer } from "node:http"; - net (weak) code-with-rashid-truspec-feb3bf3/packages/web/test/cli-entry.test.ts :31
const res = await fetch(`${handle?.url}/api/state`); - net (weak) code-with-rashid-truspec-feb3bf3/packages/web/test/server.test.ts :1
import { request as httpRequest } from "node:http"; - net code-with-rashid-truspec-feb3bf3/qa/load/load-test.mjs :14
import http from "node:http";
tool registrations 23
- truspec_list_collections code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :25
- truspec_run_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :36
- truspec_run_collection code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :49
- truspec_read_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :62
- truspec_validate_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :73
- truspec_delete_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :84
- truspec_format_reference code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :94
- truspec_create_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :110
- truspec_update_request code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :124
- truspec_drift code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :138
- truspec_coverage code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :153
- truspec_contract code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :163
show 11 more
- truspec_scaffold_from_spec code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :178
- truspec_mock_start code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :192
- truspec_mock_stop code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :212
- truspec_environments code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :224
- truspec_docs code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :242
- truspec_lint code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :257
- truspec_import_curl code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :271
- truspec_import_insomnia code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :286
- truspec_import_har code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :300
- truspec_codegen code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :319
- truspec_codegen_targets code-with-rashid-truspec-feb3bf3/packages/mcp-server/src/server.ts :337
declared dependencies 20
- @axe-core/playwright@^4.11.3
- @playwright/test@^1.61.0
- @stryker-mutator/core@^9.6.1
- @stryker-mutator/vitest-runner@^9.6.1
- @types/node@^22.10.2
- @vitest/coverage-v8@^2.1.8
- tsup@^8.3.5
- turbo@^2.3.3
- typescript@^5.7.2
- vitepress@^1.6.4
- vitest@^2.1.8
- tauri-build@2.6.3
show 8 more
- serde_json@1.0
- serde@1.0
- log@0.4
- tauri@2.11.3
- tauri-plugin-log@2
- tauri-plugin-shell@2
- tauri-plugin-dialog@2
- tauri-plugin-store@2
clipboard 2
- navigator.clipboard code-with-rashid-truspec-feb3bf3/e2e/code-snippets.spec.ts :21
const clipboard = await page.evaluate(() => navigator.clipboard.readText()); - navigator.clipboard code-with-rashid-truspec-feb3bf3/e2e/keyboard-and-copy.spec.ts :41
const clipboard = await page.evaluate(() => navigator.clipboard.readText());
obfuscation 2
- dynamic require()/import() code-with-rashid-truspec-feb3bf3/e2e/empty-workspace.spec.ts :11
const { startWebServer } = (await import(`${ROOT}/packages/web/dist/server/index.js`)) as { - dynamic require()/import() code-with-rashid-truspec-feb3bf3/e2e/fixtures.ts :20
const { startWebServer } = (await import(`${ROOT}/packages/web/dist/server/index.js`)) as {