Zephex
REMOTE · ZEPHEX.DEV · SCANNED AUG 3
MCP gateway with 10 tools for code analysis, architecture, package audit & security.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability19
- AI-judged instruction clarity (poor).Fail
- Context-footprint check failed: tool/resource definitions use about 6579 tokens (~657/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · zephex.dev
claude mcp add --transport http tanbir404-zephex https://zephex.dev/mcp
[mcp_servers.tanbir404-zephex] url = "https://zephex.dev/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tanbir404-zephex": {
"type": "remote",
"url": "https://zephex.dev/mcp",
"enabled": true
}
}
} openclaw mcp add tanbir404-zephex --url https://zephex.dev/mcp --transport streamable-http
mcp_servers:
tanbir404-zephex:
url: "https://zephex.dev/mcp" {
"mcpServers": {
"tanbir404-zephex": {
"type": "http",
"url": "https://zephex.dev/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +8
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 59
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://zephex.dev/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=zephex.dev | CN=YR1,O=Let's Encrypt,C=US | 10 Jul 2026 | 8 Oct 2026 | RSA 2048 | SHA256-RSA | 5824ffc1d351a555c64f8f4376e72a7e021 |
| SANs: zephex.dev | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
DNSSEC insecure
Validation of zephex.dev. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| dev. | present | 60074 | 8 | Verified |
| zephex.dev. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer error="invalid_token", error_description="Authentication required for this tool", resource_metadata="https://zephex.dev/.well-known/oauth-protected-resource", scope="openid profile email offline_access"
Bearer error="invalid_token", error_description="Authentication required for this tool", resource_metadata="https://zephex.dev/.well-known/oauth-protected-resource", scope="openid profile email offline_access" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains; preload |
| content-security-policy | default-src 'self'; base-uri 'self'; frame-ancestors 'none'; object-src 'none'; script-src 'self' 'nonce-B3f3xw26w4GwfNXfkS6/2g==' https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://js.stripe.com https://us.i.posthog.com https://*.posthog.com https://v8.js-dos.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data: https://r2cdn.perplexity.ai; frame-src 'self' http://localhost:5173 https://desktop.zephex.dev https://infinitemac.org https://www.google.com https://www.gstatic.com https://recaptcha.google.com https://js.stripe.com https://checkout.stripe.com https://billing.stripe.com https://www.youtube.com https://www.youtube-nocookie.com https://youtube.com https://open.spotify.com https://embed.spotify.com; connect-src 'self' https://api.stripe.com https://*.supabase.co wss://*.supabase.co https://www.google.com/recaptcha/ https://www.gstatic.com/recaptcha/ https://*.sentry.io https://us.i.posthog.com https://*.posthog.com https://i.copy.sh https:// |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), interest-cohort=(), payment=(self), usb=(), magnetometer=(), gyroscope=(), accelerometer=() |
Protected resource metadata
| Document | https://zephex.dev/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://zephex.dev/mcp |
| Authorisation server | https://zephex.dev |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://zephex.dev/mcp | Verified | 200 | |
| http (plaintext) | http://zephex.dev/mcp | HTTPS enforced | 308 | https://zephex.dev/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
audit_headers Audit HTTP Headers ~646
Audit a public HTTPS URL the user deployed — security grade A–F, SSL, headers, cookies, health (ALIVE/DEGRADED/BROKEN), exposed secrets, tech stack. Read plain_summary first; only drill into security_headers or secrets if grade is poor. quick ~1–3s; scan_depth=deep for secret scan (~8–12s). 6 credits hosted. Call when user pastes a live URL — post-deploy check, is it secure, what framework, exposed keys. Blocks localhost/private IPs. NOT for repo code (find_code), packages (check_package), tests (check_test), or project layout (get_project_context). Example: audit_headers({ url: 'https://myapp.vercel.app' }). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| check_apis | boolean | — | Probe /api/health and common API paths — adds ~1-2s (default: false) |
| check_cookies | boolean | — | Check cookie Secure/HttpOnly/SameSite flags (default: true) |
| check_headers | boolean | — | Grade all security headers and return fix snippets when include_fix_snippets=true (default: true) |
| check_health | boolean | — | Site health: verdict, trust score, load time, page title (default: true) |
| check_network | boolean | — | HTTP network timing table — slow requests, API probes (default: true) |
| check_redirects | boolean | — | Follow and audit the full redirect chain (default: true) |
| check_secrets | boolean | — | Secret scan: HTML/JS keys, exposed .env/.git, GraphQL (default: true; depth via scan_depth) |
| check_ssl | boolean | — | Check SSL certificate validity, expiry, and protocol (default: true) |
| check_tech | boolean | — | Tech stack: framework, hosting, CDN, third-party (default: true) |
| focus | string | — | Trim output layers (default: all) |
| include_fix_snippets | boolean | — | Include Nginx/Vercel/Next fix snippets — token-heavy (default: false) |
| path | string | — | Optional subpath (e.g. /checkout) — appended to url |
| probe_engine | string | — | fetch=HTTP only (default); browser=headless Chrome on Zephex servers for console errors + browser network (falls back to fetch with warning if unavailable) |
| scan_depth | string | — | quick=light scan, 3 bundles (default); deep=full supply URL phase with JWT decode, source maps, verification (~8-12s) |
| scan_mode | string | — | quick=~1-3s (default); thorough=DNS+APIs+secrets ~5-12s |
| security_depth | string | — | basic=fast (default); full adds DNS SPF/DMARC/DKIM + HSTS preload lookup |
| timeout_ms | number | — | Max scan time in ms (default: 8000, max: 15000) |
| url | string | yes | Public https:// URL to audit — e.g. https://myapp.vercel.app or https://zephex.dev |
No output schema declared.
No examples provided.
check_package Check Package ~396
Check a public registry package before install or version bump — frameworks (next, react, vite), payments (stripe), auth (next-auth, clerk), ORMs (prisma, drizzle). task=check: exists, slopsquat, deprecation, CVEs (pass version); task=upgrade|migrate: breaking_changes + migration_steps from release notes; task=security: CVEs for your version. Returns summary, data, next_calls, meta.credits (5 hosted). No project path — just package name + version. Call BEFORE npm install or bumping next/stripe/prisma. NOT for repo layout (get_project_context), import search (find_code), tests (check_test), architecture (explain_architecture), live URLs (audit_headers). Example: check_package({ package: 'next', task: 'upgrade', from_version: '14.2.0' }). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | — | INTERNAL: Zephex terminal CLI only. Agents must omit — returns richer fields than agent-safe JSON. |
| cli_depth | string | — | INTERNAL: CLI terminal depth. Agents must omit. |
| ecosystem | string | — | Registry (default npm, auto-detected). Omit for next/stripe/prisma. |
| from_version | string | — | Version you are upgrading FROM — required for task=upgrade|migrate. |
| package | string | yes | Package name on the public registry — e.g. next, stripe, prisma, express, @supabase/supabase-js. |
| source | string | — | Optional. local = read pinned version from disk (stdio only). Prefer passing version/from_version directly. |
| task | string | — | check=safe to add? upgrade|migrate=bump plan; security=CVEs; debug=advisories+detail. |
| version | string | — | Your installed/pinned version — required for CVE check on task=check|security. |
No output schema declared.
No examples provided.
check_test Test Pulse ~731
Run tests and return structured health — fix_first, broken_areas, failure_clusters, coverage_by_area, blind_spots, deploy probes. Not for finding which files to edit (find_code). Workflow: task=detect (0 credits — framework, command, test file count, missing-test gaps) → task=run once (1 credit hosted on success) → task=failures|missing|why|status|fix_prompt on session_id (0 credits, cached session, no re-run). task=missing scans git diff for source files without tests (0 credits, no suite run). meta.credits and meta.charges_usage show billing. Read summary and fix_first first; detail_level=brief on PASS. Call after every substantive edit, when user asks if tests pass or if tests are missing, or before push. Pass diff_base: main for failures_in_diff. area/file_filter scopes re-runs after a full run. Local stdio: absolute project path (runs on your machine). Hosted: public GitHub URL or inline_files — not local disk paths. NOT for symbols (find_code), packages (check_package), stack brief (get_project_context), URL audit (audit_headers). Example: check_test({ task: "detect", path: "/abs/my-app" }) then check_test({ task: "missing", path: "/abs/my-app" }) then check_test({ task: "run", path: "/abs/my-app" }). Does not modify source.
| Name | Type | Req | Description |
|---|---|---|---|
| area | string | — | Scope to module/area name derived from test paths (e.g. proxy, auth, handlers) |
| command | string | — | Override auto-detected test command |
| coverage_top | number | — | Max files in coverage slice |
| detail_level | string | — | Token budget: brief <500 tokens on PASS; agent default; full=all slices |
| diff_base | string | — | Git branch for patch coverage and failures_in_diff (e.g. main) — use after edits |
| failed_only | boolean | — | Re-run only tests that failed in the prior session |
| file_filter | string | — | Substring or glob fragment to filter test_files (e.g. auth, handlers) |
| include_flaky | boolean | — | Include flaky test hints from local history |
| include_missing | boolean | — | Git-diff scan for source files without matching tests (default true on detect and when diff_base set) |
| inline_files | object | — | Hosted fallback when github is unavailable: { "package.json": "...", "src/foo.test.ts": "..." }. Supports task detect and task run (temp dir on Railway). Include package.json with scripts.test. |
| limit | number | — | Max rows for task:history (1–20) |
| path | string | — | Project root — absolute path (stdio) or public GitHub URL (hosted). Required for run/detect/missing (or session_id for missing). |
| question | string | — | Natural-language follow-up for task:why (e.g. "what failed in proxy?") |
| session_id | string | — | Pass back from prior response (ts_*) for session tasks without re-running |
| task | string | — | detect=0 credits (inventory+gaps); missing=0 credits (test gaps only); run=1 credit hosted; failures|why|status=0 credits on session_id. |
| timeout_ms | number | — | Max run time ms (default 1800000 stdio, capped 600000 hosted) |
| with_coverage | boolean | — | Collect lcov coverage (default true) |
No output schema declared.
No examples provided.
explain_architecture Explain Architecture ~701
Maps how files connect across a subsystem — roles and import edges, not file bodies. Ripgrep + import-graph analyzers; detects framework, language, architecture_type. Envelope: focus, summary, hint, data, related_focus, next_calls, meta (meta.cache_hit, meta.tokens_returned, meta.credits, meta.charges_usage). Hosted: 7 credits per success; failures free. Cheapest path: mode overview + concern or seed_files — ~1.5–4k tokens, replaces 10+ blind read_code file opens. Repeat identical calls hit server cache (meta.cache_hit) until force:true. Expensive: mode deep or audit on whole monorepo — use subpath. >10k files auto-degrades to overview. data: entry_points, layer_map, concern_cluster (with concern or seed_files[]), integration_map, auth_flow, dependency_graph; deep adds request_flows + Mermaid; audit adds anti_patterns + health_score. dimension_confidence per slice; warnings on low confidence. focus: api|auth|integrations|database|security|data_flow|error_handling|full. Pass concern (any label) or seed_files[] (1–20 from find_code). subpath scopes monorepos. Call BEFORE cross-cutting edits — how a feature spans modules, where to patch. Do NOT for stack (get_project_context), search (find_code), bodies (read_code), tests, packages, live URL. After: next_calls → read_code outline on hub files. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| concern | string | — | Any subsystem label (folder name, feature codename, module). Uses find_code concept search + import graph — not a fixed keyword list. Returns roles, edges, symbols (no file bodies). |
| detail_level | string | — | Legacy alias for verbosity |
| exclude | array | — | Optional glob patterns to exclude from ripgrep (vendor, build, etc.). |
| focus | string | — | Wiring slice. Default: api. auth=validation chain, integrations=external SDK touchpoints, database=ORM, security=auth+errors, full=all analyzers. |
| force | boolean | — | Bypass architecture result cache. Default false. |
| inline_files | object | — | Fallback for remote transports. Shape: { "": "" }. Include 10-50 SOURCE files (entry points, routes, middleware, auth, DB setup) plus package.json. For local stdio, prefer 'path'. |
| mode | string | — | overview=fast wiring map (no AST flow trace), deep=request_flows + sequenceDiagram, audit=anti_patterns + health_score. Default: overview |
| path | string | — | Where the project lives. Stdio MCP: absolute path to the project directory on disk. Hosted transport without local disk: use inline_files (10–50 source files + package.json). |
| project_path | string | — | Alias for 'path' (some clients pass this name). Accepts the same values. |
| seed_files | array | — | 1–20 paths from find_code — graph expands to related modules. Use with or without concern. |
| subpath | string | — | Monorepo scope — analyze only this subdirectory (e.g. apps/api). Faster than whole repo. |
| verbosity | string | — | Output size. minimal=core only, standard=default, full=adds constraints + state_management. Alias: detail_level |
No output schema declared.
No examples provided.
find_code Find Code ~481
PREFER over native Grep when location is unknown. Ripgrep + AST ranking across web, mobile, CLI, and monorepos. Envelope: intent, focus, summary, data.matches, files_hit, next_calls, meta.credits (5 hosted). intent: snippet=pasted line; symbol=known name; concept=topic+also_try synonyms; everywhere=rename map (whole_word). include docs|config|data when markdown, JSON, or SQL matter. Call when: where is X, usages, rename prep. DO NOT: known symbol+file (read_code), stack/scripts (get_project_context), wiring (explain_architecture), tests (check_test), packages (check_package), URL audit (audit_headers). After: read summary + next_calls → read_code on top hit. path=absolute dir (stdio) or public Git URL / inline_files (hosted). Token-capped vs raw grep. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| also_try | array | — | Extra keywords merged in parallel. concept=topic synonyms. everywhere=rename variants (crystal, CRYSTAL, crystal-app). |
| case_sensitive | boolean | — | true = match exact casing (Crystal vs crystal). Default false. |
| file_pattern | string | — | Custom glob; overrides include. Examples: src/**/*.ts, **/*.md. |
| include | string | — | Limit file types. code=src. docs=md/readme. config=json/yaml. data=sql/prisma. all=default. |
| inline_files | object | — | Hosted MCP only: {"path/to/file.ts": "file contents"}. Use when path disk is unavailable. |
| intent | string | — | Search mode. snippet=paste exact line. symbol=find definition. concept=topic hunt. everywhere=all hits before rename. |
| path | string | — | Project folder to search. Local MCP: absolute path (/Users/jane/myapp). Hosted MCP: public GitHub URL or inline_files. |
| query | string | yes | Required. Text to find: pasted editor line, symbol name (validateToken), or topic keyword (encrypt). |
| response_format | string | — | concise=line preview per hit. detailed=full function/class block when AST available. |
| whole_word | boolean | — | With intent everywhere. true = whole word only (Crystal not Crystalline). Use before renames. |
No output schema declared.
No examples provided.
get_project_context Project Stack & Scripts ~614
Scans manifests and config — one topic slice per call. Detects stack, scripts, monorepo, API routes, auth/DB providers, integrations, env vars. Secret-sanitized. Workflow: topic=identity first on new repo → follow next_calls (framework, run, structure). Topics: identity, framework, backend, frontend, database, auth, deploy, run, structure, integrations, security, overview. brief ≤500 tokens; standard adds version health; full adds file tree. 7 credits hosted. Every response: topic, focus, summary, data.key_paths, hint, related_topics, next_calls, meta.credits. Use data and next_calls — never invent commands. Call when: new session; user asks stack, scripts, or how to run/test/build. Do NOT: symbol search (find_code), file bodies (read_code), wiring (explain_architecture), tests (check_test). Pass path (absolute project dir) or inline_files (package.json + 2-4 source files). force:true refreshes cache. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| detail_level | string | — | Output tier: "brief" (default, ≤500 tokens), "standard" (full fields), "full" (all fields + file tree) |
| focus_on | string | — | Subdirectory to focus the file tree scan on (e.g. 'src/tools') |
| force | boolean | — | Set true to re-detect even if cached (use when project changed) |
| include_structure | boolean | — | When true, includes file tree in response (also triggered by detail_level: full) |
| inline_files | object | — | Primary way to supply code. Shape: { "": "", ... }. The VALUE is the actual file body — never a filename, path, or placeholder. Example: { "package.json": "{\"name\":\"my-app\",\"dependencies\":{...}… |
| path | string | — | Absolute path to the project root. Stdio MCP reads manifests from disk directly. Omit on stdio when editor cwd is the project root. |
| structure_depth | number | — | Max folder depth for file tree scan (default: 3, max: 6) |
| topic | string | — | Which slice to return (one per call). identity=project name/type + which topics apply; run=dev/test/build/lint commands; framework=language/runtime/package manager; backend=API routes and server entr… |
No output schema declared.
No examples provided.
keep_thinking Structured Reasoning ~588
Structure multi-step debugging and planning across tool calls — not a one-shot think. Tracks hypotheses, observations, plans; detects loops via lastActions; riskLevel high/critical blocks dangerous edits (drop table, prod deploy). Loads projectBrief (stack, key_paths, project_memory recall) on local project. On close, suggestedRemember → call project_memory remember. 4 credits hosted. Hard cap 10 thoughts/session. Call when: stuck after 2+ failed debug attempts, auth/billing/schema change spans 3+ files, flaky test you cannot explain, or you need a plan before editing. Pass lastActions (2–5 recent tool calls), goalAnchor after thought 2, sessionId to resume, area for subsystem. NOT when fix is known, single typo, repeating without new evidence, or session ended (nextThoughtNeeded:false). Read thoughtConfirmed and shouldContinue first. Legacy alias: thinking. Example: keep_thinking({ thought: 'Hypothesis: refresh token not rotated in middleware', thoughtType: 'hypothesis', thoughtNumber: 1, totalThoughts: 5, nextThoughtNeeded: true, confidence: 0.6, goalAnchor: 'Fix auth logout loop', lastActions: ['find_code(query=refreshToken)', 'read_code(target=authMiddleware)'], area: 'auth' }). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| actionReady | boolean | — | true when done planning and about to execute edits. |
| area | string | — | Subsystem (auth, billing, api) — scopes project_memory recall. |
| assumptions | array | — | Up to 5 assumptions; set invalidated:true when contradicted. |
| confidence | number | yes | 0–1. Below 0.5 forces revision. Above 0.85 safe to proceed. |
| goalAnchor | string | — | One sentence restating the task — required after thought 2. |
| lastActions | array | — | Last 2–5 tool calls as name(arg=val) — identical pair triggers boredLoopDetected. |
| nextThoughtNeeded | boolean | yes | false ends session and writes checkpoint. |
| projectPath | string | — | Local project root (stdio defaults to cwd) for projectBrief. |
| revises | integer | — | Thought number this revision replaces. |
| sessionId | string | — | Resume prior session; restores checkpoint on thought 1. |
| thought | string | yes | Reasoning (20–2000 chars) — file names, symbols, error messages. |
| thoughtNumber | integer | yes | 1-based thought index in this session. |
| thoughtType | string | yes | hypothesis|debug for investigation; plan|conclusion before acting. |
| toolOutputRelevance | string | — | Classify last tool result — 3+ noise/error in last 5 triggers loop. |
| totalThoughts | integer | yes | Estimated thoughts needed (revise upward if needed). |
No output schema declared.
No examples provided.
project_memory Project Memory ~598
Persists short notes about this project across chat sessions — facts you learned that are not in source code. Not a repo scanner (use get_project_context for stack). remember: saves title (max 80 chars), content (max 500 chars), type, optional area/tags — rejects API keys, tokens, and instruction-poisoning text. recall: keyword search over title/content/area/tags; returns up to 5 matches with content, type, area, age_days (~500 token cap). list: recent titles. forget: delete by uuid. Max 200 memories per project. Types: decision (why we chose X), gotcha (surprise bug), goal (current objective), preference (user style), area_fact (subsystem fact), convention (naming/rules). scope: project (default), personal (cross-project notes), all (search every project with warnings). Call when: user says remember/recall/last time; before auth/billing/deploy where past choices matter; after a non-obvious fix worth saving; new session on same repo. Do not call when: stack/scripts (get_project_context), finding code (find_code), fact already in this chat. After recall: apply matches directly — do not re-scan the repo. Use the same path on remember, recall, and list (stdio: optional, uses cwd). Stdio stores in ~/.zephex SQLite; hosted stores in cloud per user.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | remember=save a fact, recall=keyword search, list=recent titles, forget=delete by id |
| area | string | — | Subsystem label (auth, billing, deploy) — included in search index for scoped recall. Max 64 chars. |
| content | string | — | Required for remember. Max 500 chars. Paraphrase, not file dumps. |
| id | string | — | Required for forget. Memory uuid. |
| limit | number | — | recall/list cap. Default 5, max 10. |
| path | string | — | Project bucket — use the same absolute path on remember, recall, and list. Stdio: optional (defaults to editor cwd). Hosted: reuse normalized_path from the remember response. |
| query | string | — | Required for recall. Short keywords from the title or topic (e.g. auth middleware stripe). |
| scope | string | — | project=current DB, personal=~/.zephex personal, all=cross-project with warnings. |
| tags | array | — | Optional lowercase tags. Max 10. |
| title | string | — | Required for remember. Max 80 chars. |
| type | string | — | Required for remember. decision=chose an approach; gotcha=non-obvious bug; goal=what we are building toward; preference=user style; area_fact=fact about a subsystem; convention=naming or process rule. |
| written_by | string | — | Who authored this memory. |
No output schema declared.
No examples provided.
read_code Read Code ~929
Extracts code surgically via tree-sitter AST — not repo-wide search. Eight modes; envelope: mode, focus, summary, data, hint, related_modes, next_calls, meta (meta.tokens_returned, meta.credits, meta.charges_usage). Hosted: 5 credits per success; failures free. Cheapest path: mode file or outline with files[] you already have — ~300–2000 tokens vs full-file Read (data.tokens_saved_vs_full_files). Expensive: mode symbol without find_code first on large repos (may scan many files). Free alternative: editor Read on files under ~50 lines. symbol: fuzzy match by name; symbol_id direct lookup; detail_level signature|body|context; targets[] batch (max 8). file: batch 1–20 paths, paginate offset_line. outline: TOC + plain-English overview before 300+ line files. scan/smell: keyword or bug patterns across known files[] only. callers|blast_radius|dead_code: local SQLite call-graph (index builds after first symbol call on that path) — not on hosted without disk; use find_code for remote usage search. Call when: symbol or files[] known (from find_code or explain_architecture next_calls). Do NOT when: location unknown (find_code); stack (get_project_context); wiring map (explain_architecture); repo-wide grep (find_code). Pass path (absolute dir) or inline_files. compact:true saves tokens; session_id dedupes across turns. After: summary + next_calls before paging. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | — | With mode:file|symbol. true = omit line numbers to save tokens. |
| confidence_threshold | number | — | With mode:symbol. Min match confidence 0–1 (default 0.5). Raise 0.8 for exact; lower 0.3 to explore. |
| context_path | string | — | With mode:symbol. File path hint for ranking (e.g. src/auth.ts when repo has many auth symbols). |
| detail_level | string | — | With mode:symbol. signature=~100 tokens. body=full implementation (default). context=body+imports. |
| files | array | — | With mode:file|outline. Relative paths — from find_code hits. File mode: every path returns in one call (truncated per file if large, never dropped). |
| inline_files | object | — | When path disk is unavailable: {"src/auth.ts": ""}. Hosted/private transport fallback. |
| kind | string | — | With mode:symbol. Filter to one symbol kind — disambiguate class vs method with same name. |
| limit_lines | number | — | With mode:file. Max lines per file. Default: budget-based; set for pagination slices. |
| max_results | number | — | mode:symbol — max symbols (default 3, max 10). mode:scan|smell — max hits returned (default 30, max 100). |
| max_tokens | number | — | Response size cap (default 2000, max 8000). File batch auto-shares across paths. Lower only if context is tight. |
| mode | string | — | symbol=AST extract by name (default). file=batch read files[] (all paths return). outline=file TOC. scan=keyword/pattern hits across files[] (use target or targets). smell=bug-pattern pass on files[]… |
| offset_line | number | — | With mode:file. Start line (1-indexed). Use after batch read when data.hint says truncated. |
| path | string | — | Project root. Stdio MCP: absolute path to the directory on disk. Hosted transport without local disk: use inline_files instead. Pair files[] paths from find_code. |
| session_id | string | — | Dedup across turns — symbols already returned get a stub with symbol_id instead of full body. |
| symbol_id | string | — | With mode:symbol. Direct lookup ID from a prior hit (e.g. src/auth.ts::validateUser#function). Skips fuzzy search. |
| target | string | — | mode:symbol|callers|blast_radius — symbol name (fuzzy). mode:scan — keyword or regex to find across files[]. |
| targets | array | — | mode:symbol — batch symbol names (max 8, set max_results:10). mode:scan — multiple keywords in one pass across files[]. |
No output schema declared.
No examples provided.
Zephex_dev_info Zephex Developer Knowledge Base ~289
Expert developer playbooks — not your repo. Stripe webhooks & checkout, Supabase RLS, Next.js auth (clerk, next-auth), payment flows, CSP/HSTS, deploy patterns. operation=search finds entries by question; operation=get returns full guidance by slug from search. Read summary and checklist first. 2 credits hosted. No project path. Call when standard patterns beat guessing — wiring stripe checkout, fixing auth middleware, Supabase RLS policies, hardening after audit_headers. Use AFTER repo tools if code context is still thin. NOT for user's codebase (get_project_context, find_code, read_code), registry packages (check_package), tests (check_test), live URL (audit_headers), or saving decisions (project_memory). Example: Zephex_dev_info({ operation: 'search', query: 'Stripe webhook raw body verification', category: 'payments' }) then get with returned slug. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | Optional search filter — payments, auth, security, databases, etc. |
| operation | string | — | search=find by query (first step); get=full entry by slug from search. |
| query | string | — | Required for search — e.g. 'Supabase RLS for multi-tenant' or 'Next.js middleware auth'. |
| slug | string | — | Required for get — exact slug from a search hit. |
No output schema declared.
No examples provided.