← Back to suites
mcp zero-budget semantic-index

MCP server worker

Pin the MCP server's JSON-RPC contract end-to-end: the dispatcher handshake + tools/list completeness vs the TOOLS registry; per-tool happy/error paths with the wsId-required audit (no tool may write without an explicit workspace id); the deterministic process_request id (kind prefix + 16-byte hex digest) so add_job/tailor/evaluate_job dedup on retry; and the focused update_job patch shaping that the agent surface depends on.

Behaviours 0 Tests 151 Graph 152 nodes · 155 edges Runner - CircleCI mcp_vitest Source qa/suites/mcp.yaml

Test witnesses

These tests belong to the suite. Missing implementation links stay visible until a code-backed graph claim records them.

TestStatusImplementationOpen
GET / returns capability summary for humans
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
GET /mcp with SSE accept returns 405 for streamable HTTP without server push
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
notifications (no id) return 202 with empty body
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
responds to initialize with server info + tools capability
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
tools/call with invalid args returns MCP tool error (isError: true)
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
tools/call with unknown tool returns RPC -32602
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
tools/list returns all registered tools
@cv/mcp · vitest · test/dispatcher.test.ts
catalogmissing implementation linkTest
differentiates by kind prefix even when parts collide
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
differentiates by workspace id (defense in depth)
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
differentiates by workspace job id
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
emits 16-byte (32 hex char) digest + prefix
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
is deterministic — same parts produce the same id
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
keys on (workspaceId, job_id)
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
keys on (workspaceId, job_id, stage)
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
tailor and evaluate for same job differ
@cv/mcp · vitest · test/process-request-id.test.ts
catalogmissing implementation linkTest
'add_job' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'add_node' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'add_section' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'claim_process_requests' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'compile_cv_pdf' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'delete_job' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'delete_node' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'evaluate_job' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_cv_typst' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_cvl_tree' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_job' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_job_process_state' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_workspace_intelligence' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'get_workspace_summary' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'list_activity' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'list_jobs' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'list_process_requests' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'list_stage_attempts' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'list_views' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'move_node' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'move_section' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'patch_layout' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'patch_node_data' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'patch_order' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'patch_settings' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'rerun_extract' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'rerun_stage' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'seed_profile' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'set_active_view' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'set_cvl_group_selection' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'set_cvl_section_group' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'set_score_criterion' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'set_selection' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'tailor' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'translate' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'update_job' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'update_node' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'update_process_request' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
'update_section' rejects when wsId is absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
CV and CL for the same job produce two distinct process_requests
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
MCP agents claim and complete queued process requests through the shared worker API
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
add_job with the same URL twice returns the same job_id and dedups
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
can attach a tailored CV PDF through the web file upload path
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
compiles a workspace CV through the Koyeb service and returns base64 bytes
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
covers the MCP LinkedIn URL-to-final-CV path
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits node.create op with provided fields
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits node.delete op
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits node.move op
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits node.update op with patch
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits selection.update op with add delta
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
emits selection.update op with setActive delta
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
enqueues a TAILOR process_request keyed on (workspaceId, job_id, branch_path)
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
enqueues an EVALUATE process_request keyed on (workspaceId, job_id)
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
forwards force:true to the agent write envelope
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
get_job returns JobNotFound for missing job
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
get_job_process_state exposes URL-only jobs as extractable but not ready for evaluation or tailoring
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
get_job_process_state focuses one job and returns JobNotFound when absent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
get_workspace_intelligence returns the process projection
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
get_workspace_summary resolves slug to row id
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path applies a job.create op for the supplied URL
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path dispatches translate op and returns source/target paths
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path emits a minimal settings.update scoring patch
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path emits job.delete
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path emits job.update op
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
happy path returns structured content with paths and langs
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
injects the same fixed-section render context as browser export
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_activity reads filtered activity rows through the web activity API
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_jobs and get_job expose resolved public fields while stripping hidden link fields
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_jobs and get_job include workspace-private origins metadata on the job attributes
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_jobs reports projection failure instead of falling back to D1 jobs
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_jobs returns jobs from the public resolved jobs API without raw sub-doc or D1 job reads
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_jobs surfaces workspace-private attributes on the job shape
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_stage_attempts returns model attempt rows
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_views reports projection failure instead of falling back to D1 settings
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_views resolves slug to row id
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
list_views returns views from the settings sub-doc without D1 settings reads
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
normalizes LinkedIn collection URLs before deriving the workspace job id
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
patch_node_data shallow-merges with current data before emitting node.update
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
reads tailored_cv from the jobs sub-doc, not D1, immediately after tailor
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
reads workspace CVL from the web snapshot instead of stale D1 profile JSON
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved adId attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved ad_id attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved jobId attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved job_id attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved roleId attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved role_id attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved sourceAdId attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved source_ad_id attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved url attribute before queuing work
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when neither branch_path nor target is supplied
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when source and target paths reference the same language tree
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when source_lang equals target_lang (validateTranslateOp)
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when translated_node is missing (wsId audit compliance)
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when url is missing
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when workspace does not exist
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects when wsId is missing (Zod validation)
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects with JobNotFound when job is missing
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
requires the job.create write to succeed
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rerun_extract clears AI-owned fields and records a process activity row
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rerun_stage queues non-extract stage repair commands
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
resolves workspace by slug
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns CvProfileNotFound when workspace has no cv_profile
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns JobNotFound when job is missing
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns JobNotFound when jobId does not exist
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns TailoredCvNotFound when job has no tailored_cv
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns Typst source for per-job tailored CV when jobId is provided
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns WorkspaceNotFound when workspace is missing
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns WorkspaceNotFound when workspace missing
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns a tool error when Koyeb returns diagnostics
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns exact node paths and editable data for a CVL branch
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns insertedId in structuredContent
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns non-empty Typst source for workspace quarry without jobId
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
returns summary with job/view counts from sub-docs without D1 fallbacks
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
scrubs hidden shared ids from Workspace Intelligence output
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
scrubs hidden shared ids from process request list, claim, and update payloads
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
serialises a Node tree without leaking personal-info metadata
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_active_view emits settings.update
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_cvl_group_selection writes through the variant-pool wrapper Node
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_cvl_section_group breakout extracts a wrapped section via cvl.break_out
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_cvl_section_group breakout no-ops when the section is solo
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_cvl_section_group set wraps a solo section into a fresh variant-pool wrapper
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
set_score_criterion uses row id for the workspace snapshot
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
strips nested hidden link fields without dropping real nested ids
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
surfaces realtime worker error as InvalidShape when broker rejects
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
the emitted node.create op carries the same id as insertedId
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
two concurrent add_job calls with the same URL collapse to ONE process_request and ONE job
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
two concurrent evaluate calls for the same job collapse to ONE process_request
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
two concurrent tailor calls for the same job + branch collapse to ONE process_request
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
uses caller-supplied id when provided
@cv/mcp · vitest · test/tools.test.ts
catalogmissing implementation linkTest
rejects reserved update_job patch fields before calling ops
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
routes delete_job through the shared ops endpoint
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
routes evaluate_job through the process_request queue (not job.update)
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
routes tailor through the process_request queue (not job.update)
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
routes update_job patches through the shared ops endpoint
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
strips hidden link fields inside JSON-string update_job patches
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest
strips nested hidden link fields from update_job patches
@cv/mcp · vitest · test/update_job.test.ts
catalogmissing implementation linkTest