Skip to content

English | Русский

TAUSIK MCP — Tool Reference ​

147 tools for AI agents (current actual count, asserted via len(TOOLS)). The MCP surface covers everything an agent does day-to-day. A few CLI-only commands have no MCP equivalent — they are operator / maintenance verbs that don't belong in an agent loop: skill rebuild, skill bundle, fts optimize, db prune, audit vendors/research, config set/show, push-ok, run, doc extract/constants, hud, suggest-model, hygiene archive --confirm. For the agent's working set, prefer MCP tools over shell calls — they are atomic, return structured data, and keep your context cleaner.

Optional codebase-rag server adds 7 tools (search_code, find_symbol, …). It is enabled separately during bootstrap and is NOT part of the main 152 count - total with it is 154 tools.

Two MCP servers live in this project:

  • tausik-project — project-scoped tools (147): tasks, sessions, knowledge, stacks, roles, gates, skills, exploration, audit, doctor, verify, usage logging.

There is also an optional codebase-rag server documented at the bottom.

Verify-First Contract (v1.5) ​

Heavy quality gates (pytest, tsc, cargo, phpstan, javac, js-test, terraform-validate, helm-lint, kubeconform, hadolint, ansible-lint) live on a dedicated verify trigger. The MCP workflow:

tausik_task_start(slug=…, package=true) # QG-0 + bounded context in one result
… work on code …
tausik_verify(task_slug=…)        # heavy: subprocess gates → caches green
tausik_task_done(slug=…, ac_verified=True)   # lightweight: cache lookup

tausik_task_done will refuse to close the task if the verify cache is missing or stale — it returns a structured failure with explicit remediation. Opt-out for CI: set {"task_done": {"auto_verify": true}} in .tausik/config.json so the heavy gates fire inside task_done like in pre-v1.5 releases.

Terminology: Verify / QG glossary distinguishes supported opt-out, QG bypass (not available for task_done), verify-cache bypass, and the pytest test shim.

Status, Health, Metrics ​

ToolDescriptionRequired Parameters
tausik_healthHealth check: version, DB, tables—
tausik_self_checkMCP-server freshness: startup time, watched-module mtime snapshot vs current on-disk mtimes, drift_detected flag, stale modules with delta_seconds, sibling MCP project server count. Call from /start to catch silent-hang precursors (gotchas #77/#79/#80).—
tausik_statusProject overview: tasks, session, epics. Optional compact: true → one-line JSON (default text unchanged).compact (optional)
tausik_doctor4-group health (venv + DB + MCP + skills + drift)—
tausik_metricsSENAR metrics, or compact native usage with host=codex|kilohost?
tausik_usage_event_logAppend manual row to usage_events (does not update session aggregates)tokens_input, tokens_output, tokens_total, cost_usd
tausik_searchFull-text search across tasks, memory, decisionsquery

Tasks ​

ToolDescriptionRequired Parameters
tausik_task_addCreate task (optionally in a story)slug, title
tausik_task_quickQuick creation with auto-slugtitle
tausik_task_startStart work; optionally return bounded context in the same resultslug, optional package
tausik_task_doneComplete (QG-2: ac_verified=true, scoped pytest, verify cache). Returns structured JSON: blocking_failures, per-gate results, cache status.slug
tausik_task_showFull task information, or bounded context with mode=packageslug; optional mode
tausik_task_listList tasks with filters (status enum: planning,active,blocked,review,done)—
tausik_task_updateUpdate fields (title/goal/AC/scope/notes/stack/complexity/role/tier/call_budget)slug
tausik_task_planSet plan stepsslug, steps[]
tausik_task_stepMark step as completedslug, step_num
tausik_task_logAppend journal entryslug, message
tausik_task_logsRead structured logs (filter by phase)slug
tausik_reason_stepRENAR reasoning step (intent|premise|action|verification)slug, kind, content
tausik_task_replayChronological task timeline (logs + reasoning + events + verification)slug
tausik_task_blockBlock taskslug
tausik_task_unblockUnblockslug
tausik_task_reviewMove to reviewslug
tausik_task_deleteDelete taskslug
tausik_task_moveMove to another storyslug, new_story_slug
tausik_task_nextPick next task by score—
tausik_task_claimClaim task (multi-agent)slug, agent_id
tausik_task_unclaimRelease taskslug

tausik_task_done parameters ​

  • ac_verified — required for QG-2
  • evidence — inline AC verification log (replaces a separate task_log call)
  • no_knowledge — confirm no knowledge to capture (suppresses warning)
  • relevant_files[] — files modified; drives scoped pytest gate (basename match → tests/test_<file>.py). Empty list with non-empty original → gate skipped (no false-positive on full suite). Verify cache (10 min TTL) skips re-runs with same files_hash.

There is no --force on task_done — QG-2 cannot be bypassed. task_start does have --force to bypass session capacity, with audit trail.

tausik_task_done structured response ​

tausik_task_done returns JSON for agent workflows:

  • stage flags (plan_complete, ac_verified, gates_passed)
  • per-gate results (gates[])
  • blocking_failures[] with gate, files, output, and remediation hints
  • warnings[], cache_status, and final ok

Pre-1.4 there was a parallel tausik_task_done_v2 alias for the structured-JSON variant. v14b-task-done-rename-drop-v2 consolidated both into the single tausik_task_done returning the structured JSON above — there is no _v2 suffix. The Verify-First Contract is honoured on every path.

Sessions ​

ToolDescriptionRequired Parameters
tausik_session_startStart session—
tausik_session_endEnd session—
tausik_session_extendRaise the active-time advisory threshold (advice, not a gate)—
tausik_session_currentCurrent active session—
tausik_session_listList sessions—
tausik_session_handoffSave handoff datahandoff (object)
tausik_session_last_handoffThe live handoff, or session session_id'ssession_id (opt.)
tausik_session_open (v1.5)Compound RPC: host-context policy + session start + status + handoff + active/blocked tasks + self_check in one envelope. Powers /start Phase 1. host_context reports same-thread reopen state, native usage availability, advisory/hard pressure and the fresh-window prompt. Session and self_check are projected; large handoffs use a 4096-byte UTF-8 summary with explicit omissions and a full-recovery call. If _projection.requires_full_handoff is true, read the full handoff before resuming work. The bound applies to the handoff section, not the whole envelope. Full telemetry: tausik_self_check; full handoff: tausik_session_last_handoff.—

Session time is gap-based active time (paused after 10-min idle gap), not wall clock, and it is advice, never a refusal (1.10). See session-active-time.md.

Hierarchy (Epics and Stories) ​

ToolDescriptionRequired Parameters
tausik_epic_addCreate epicslug, title
tausik_epic_listList epics; (stale: N) — tasks created since the description was last edited (a report, not a gate)—
tausik_epic_updateChange an epic's title and/or description — the group's intent; at least one fieldslug
tausik_epic_doneComplete epicslug
tausik_epic_deleteDelete (cascade: stories + tasks)slug
tausik_story_addCreate story in epicepic_slug, slug, title
tausik_story_listList stories; (stale: N) as for epics—
tausik_story_updateChange a story's title and/or description; at least one fieldslug
tausik_story_doneComplete storyslug
tausik_story_deleteDelete (cascade: tasks)slug
tausik_roadmapTree: epic → story → task—

RENAR substrate — SPEC + ADAPT (17 tools) ​

The RENAR substrate: formal requirements (SPEC) and requirement interpretation (ADAPT, §7) with forward interpretations, backward findings and the architect's signature (§7.5). Used by QG-0 for substantial/deep tasks and by tausik renar export / conformance. See also tausik_reason_step (RENAR trace) under "Tasks".

SPEC (8) ​

ToolDescriptionRequired Parameters
tausik_spec_addCreate a SPEC artifact. type is a closed list (ARCH/API/DATA/INT/PROC/UI/AI/SEC/OPS/TEST/DOC/UC; UC needs a body with role and a statement ref on every step); a new type is an amendment to the standard, not free textslug, type, title, version
tausik_spec_listList SPECs, optionally filtered by type (JSON)—
tausik_spec_showSPEC + linked tasks (JSON)slug
tausik_spec_updatePatch mutable fields (title/version/content_ref/status); type and slug are immutableslug
tausik_spec_deleteDelete a SPEC (cascade: task links)slug
tausik_spec_linkLink a task to a SPEC (both must exist — no silent dangling links)task_slug, spec_slug
tausik_spec_unlinkUnlink task ↔ SPECtask_slug, spec_slug
tausik_spec_searchFTS5 over slug/title/content_ref (JSON)query

ADAPT (9) ​

ToolDescriptionRequired Parameters
tausik_adapt_createCreate an ADAPT header (§7); tz_ref (the source requirement doc) is mandatory; starts in draftslug, title, tz_ref
tausik_adapt_interpretForward interpretation (§7.4.3); tz_ref/citation/interpretation/scope_in/scope_out all requiredtz_ref, citation, interpretation, scope_in, scope_out (+ adapt)
tausik_adapt_findingBackward finding; category is a closed list of 7 (contradiction/gap/hidden-assumption/feasibility/regulatory/terminology/scope)adapt_slug, category, description
tausik_adapt_signArchitect signature (§7.5): signs the body with the project's ed25519 key ⇒ approved (§13.3.3 p.77 — status and signature are separate facts). role=client is REFUSED — ADR-011 withdrew the client signature under ADAPT; what the client approves belongs in an ACTZadapt_slug, role, signed_by
tausik_adapt_showADAPT + forward interpretations, findings, signatures, links (JSON)slug
tausik_adapt_listList ADAPTs, optionally filtered by status (§7.8.1 closed list: draft/review/asked/answered/approved/frozen/superseded)—
tausik_adapt_deltaDelta-ADAPT superseding its parent (§7.6); the parent becomes superseded, and a later link to it is a FATAL dangling link (§7.6.4)parent_slug, new_slug, title, tz_ref
tausik_adapt_linkLink an ADAPT to a task/SPEC; the target must exist; a link to a superseded ADAPT is FATAL (§7.6.4)adapt_slug, target_type, target_slug
tausik_adapt_searchFTS5 over slug/title/tz_ref (JSON)query

ACTZ (15) ​

The contractual clarification protocol (§5A, ADR-011) — client-facing, unlike ADAPT: what the client approves belongs here. Lifecycle draft → sent → signed → superseded, computed from signature-role coverage. One project ed25519 key exists (not one per party): architect signs for real; client records signed_by+signed_at only, no simulated independent signature. final_tz/orphans (§5A.4) are read-only projections over the signed points below — the derived acceptance reference, never a third copy of the text.

ToolDescriptionRequired Parameters
tausik_actz_createCreate an ACTZ header (§5A); tz_ref mandatory; starts in draftslug, title, tz_ref
tausik_actz_pointAdd a numbered point; only while draft (frozen once any signature is recorded). tz_ref names which clause of the original ТЗ (or a prior ACTZ point) this point clarifiesactz_slug, point_no, tz_ref, text
tausik_actz_signRecord a signature (§5.5.3): architect signs the canonical body with the project ed25519 key; client records signed_by+signed_at only. First signature ⇒ sent; both roles ⇒ signedactz_slug, role, signed_by
tausik_actz_verifyVerify the architect ed25519 signature against the current bodyslug
tausik_actz_showACTZ + points, signatures, links (JSON)slug
tausik_actz_listList ACTZ headers, optionally filtered by status (draft/sent/signed/superseded)—
tausik_actz_deltaDelta-ACTZ superseding its parent; the parent becomes superseded, a later link to it is refusedparent_slug, new_slug, title, tz_ref, supersession_rationale
tausik_actz_linkLink an ACTZ to a task/SPEC; target must exist; a link to a superseded ACTZ is refusedactz_slug, target_type, target_slug
tausik_actz_unlinkRemove an ACTZ↔task/SPEC linkactz_slug, target_type, target_slug
tausik_actz_deleteDelete an ACTZ (cascades points/signatures/links/decided-in edges)slug
tausik_actz_searchFTS5 over slug/title/tz_ref (JSON)query
tausik_actz_decided_inRecord that an ADAPT backward finding was decided-in a point of a SIGNED ACTZ, with provenance (linked_by); refuses an unsigned targetadapt_slug, finding_id, actz_slug, actz_point_no, linked_by
tausik_actz_decided_in_removeRemove a decided-in edgeadapt_slug, finding_id, actz_slug, actz_point_no
tausik_actz_final_tzThe derived acceptance reference (§5A.4): per ТЗ clause, the latest both-role-signed point, naming what it overrode. as_of (ISO-8601) shows it at a past moment—
tausik_actz_orphansSigned points no ADAPT reflects — an obligation outside requirements (§5A.4, fatal), found by query—

AT (9) ​

Acceptance Test artifacts (§8A, ADR-012) — the one check traceability (TC → SR → ADAPT → ТЗ) structurally cannot provide, because a wrong interpretation makes every TC pass. These tools RECORD the result of the isolated-generation procedure (docs/en/at-generation-procedure.md) — none of them generate anything. tz_text (verbatim contract quote) and generated_by are mandatory on create; check_freshness compares against the LIVE final_tz_snapshot for each AT's tz_ref and names what changed (§8A property 2 — regenerate before every trial). See also the at_freshness warn gate.

record_result/diagnose/release_readiness implement §8A.4/§10.4.3's routing matrix. TAUSIK has no first-class TC artifact yet (a separate, open task) — diagnose never reads pytest/verification_runs itself; the caller supplies tc_outcome explicitly. release_readiness needs no TC at all: it is ready only when every AT's latest outcome is green and fresh — distinct from QG-4, which is optional and measures business outcome.

ToolDescriptionRequired Parameters
tausik_at_createRecord an AT — the result of the isolated-generation procedure, not a generatorslug, tz_ref, tz_text, scenario, source_as_of, generated_by
tausik_at_showShow an AT record (JSON)slug
tausik_at_listList AT records, optionally filtered by tz_ref (JSON)—
tausik_at_deleteDelete an AT recordslug
tausik_at_searchFTS5 over slug/tz_ref/tz_text/scenario (JSON)query
tausik_at_check_freshnessWhich AT records are stale against the current final-TZ (§8A.2); omit slug to check all—
tausik_at_record_resultRecord one observed trial outcome (append-only — a re-run is a new row)slug, outcome
tausik_at_diagnoseRoute an AT's latest outcome against a caller-supplied tc_outcome (§8A.4/§10.4.3)slug, tc_outcome
tausik_at_release_readiness§8A.4 release gate: ready only when every AT is green and fresh—

Knowledge ​

ToolDescriptionRequired Parameters
tausik_memory_addSave to project memory; provenance observed / inferred (default) / toldtype, title, content
tausik_memory_searchFull-text search in memoryquery
tausik_memory_listList entries (filter by type)—
tausik_memory_showShow entry by IDid
tausik_memory_deleteDelete entryid
tausik_memory_blockCompact markdown: recent decisions + conventions + dead ends (for /start re-injection)—
tausik_memory_compactAggregate recent task_logs (phases + top words + top files)—
tausik_memory_archive (v1.5)Soft-archive memory rows older than a duration (90d / 12w / 2m / 1y). Dry-run unless confirm: true.before (string), confirm (bool, optional)
tausik_memory_dedupe (v1.5)List near-duplicate memory pairs above a similarity threshold (read-only).threshold (float, optional), limit (int, optional)
tausik_decideRecord a decision; optional rejected (list of "option :: why") and supersedes (id, reason in rationale)decision
tausik_decisions_listList decisions—

Memory types: pattern, gotcha, convention, context, dead_end.

Graph Memory ​

ToolDescriptionRequired Parameters
tausik_memory_linkCreate edge between nodessource_type, source_id, target_type, target_id, relation
tausik_memory_unlinkSoft-invalidate edge (never deletes)edge_id
tausik_memory_relatedFind related nodes (1–3 hops)node_type, node_id
tausik_memory_graphList edges with filters—

Relation types: supersedes, caused_by, relates_to, contradicts.

Dead Ends and Explorations ​

ToolDescriptionRequired Parameters
tausik_dead_endDocument a failed approachapproach, reason
tausik_explore_startStart time-boxed investigationtitle
tausik_explore_endEnd investigation—
tausik_explore_currentCurrent investigation—

Quality Gates and Verification ​

ToolDescriptionRequired Parameters
tausik_gates_statusStatus of all gates (by stack)—
tausik_gates_enableEnable gatename
tausik_gates_disableDisable gatename
tausik_verifyv1.5 Verify-First: run heavy gates (pytest, tsc, …) and cache green in verification_runs. After that tausik_task_done reads the cache and closes instantly.task_slug

Available gates: pytest, ruff, mypy, bandit, tsc, eslint, go-vet, golangci-lint, cargo-check, clippy, phpstan, phpcs, javac, ktlint, filesize, class_surface, tdd_order. Stack-scoped gates auto-enable based on detected stack; universal gates (filesize, class_surface, tdd_order) apply to all stacks. class_surface is repo-wide rather than scoped: it caps a class's composed public surface after inheritance, which a per-file line cap cannot see.

tdd_order is disabled by default. Enable with tausik_gates_enable name=tdd_order.

Stacks ​

ToolDescriptionRequired Parameters
tausik_stack_listList built-in + custom stacks—
tausik_stack_showResolved stack: gates per language + override infostack
tausik_stack_exportExport resolved declaration as JSONstack
tausik_stack_diffDiff between built-in and user overridestack
tausik_stack_resetRemove user override at .tausik/stacks/<stack>/stack
tausik_stack_lintValidate user-override stack.json files—
tausik_stack_scaffoldCreate .tausik/stacks/<name>/{stack.json,guide.md} skeletonname

DEFAULT_STACKS: 25 entries (python, fastapi, django, flask, react, next, vue, nuxt, svelte, typescript, javascript, go, rust, java, kotlin, swift, flutter, laravel, php, blade, ansible, terraform, helm, kubernetes, docker). Custom stacks via .tausik/config.json → custom_stacks.

Roles ​

ToolDescriptionRequired Parameters
tausik_role_listList roles—
tausik_role_showShow role profileslug
tausik_role_createCreate role (optionally extends a base profile)slug, title
tausik_role_updateUpdate role metadataslug
tausik_role_deleteDelete roleslug
tausik_role_seedBootstrap rows from harness/roles/*.md + existing task usage—

Role storage is hybrid: SQLite metadata + harness/roles/{role}.md profile markdown. Roles on tasks remain free-text.

Periodic Audit (SENAR Rule 9.5) ​

ToolDescriptionRequired Parameters
tausik_audit_checkCheck whether audit is overdue—
tausik_audit_markMark audit as completed—

Skills ​

ToolDescriptionRequired Parameters
tausik_skill_listList skills: active, vendored, available—
tausik_skill_installInstall skill from repo (clone + copy + deps)name
tausik_skill_uninstallUninstall skill completelyname
tausik_skill_activateActivate installed skillname
tausik_skill_deactivateDeactivate skill (keep files)name
tausik_skill_repo_addAdd TAUSIK-compatible skill repo (third-party URLs need force)url, optional force
tausik_skill_repo_removeRemove skill reponame
tausik_skill_repo_listList repos and available skills—
tausik_skill_catalogDiscovery: list skills offered by configured/cloned repos (name, category, description)optional repo, optional as_json

Cross-Project Queue (CQ) ​

ToolDescriptionRequired Parameters
tausik_cq_publishPublish a cross-project eventpayload
tausik_cq_queryQuery cross-project queue—

Multi-agent and Maintenance ​

ToolDescriptionRequired Parameters
tausik_teamTasks grouped by agent—
tausik_eventsAudit log (events)—
tausik_update_claudemdUpdate dynamic section in CLAUDE.md—
tausik_fts_optimizeOptimize FTS5 indexes—

Codebase RAG (separate optional MCP server) ​

ToolDescriptionRequired Parameters
search_codeSearch project code via RAG indexquery
search_knowledgeSearch project knowledge basequery
reindexReindex the codebasemode (incremental/full), max_seconds (soft limit, full only). v1.5: stderr progress every 100 files; truncated=true on timeout.
rag_statusRAG index status—
archive_doneArchive completed tasks—
cache_web_resultCache web search result for reusequery, content
search_web_cacheSearch cached web resultsquery

These are not part of the main 147 count — they belong to the optional codebase-rag server.

Scoped tool surface (mcp.scope_tools_exposure) ​

Off by default. When you set mcp.scope_tools_exposure: true in config.json, the server narrows the advertised tool-list to what the active task is allowed to use: the union of the task's declared scope_tools (SENAR Rule 2 ACL) and an always-safe core — the whole tausik_task_* and tausik_session_* families plus tausik_status, tausik_verify, tausik_doctor, tausik_self_check, tausik_update_claudemd and the *_search tools. Every other tool is hidden from the list, cutting both the token cost of the tool definitions and the attack surface.

It is fail-open: all tools are exposed whenever no task is active, no active task declared a non-empty scope_tools, or the scope cannot be resolved — so turning it on never strands a project that never declared a scope. Hiding is a UX/token optimization, not the security barrier: a hidden tool called directly still passes the existing scope enforcement, and the write-gate is untouched. The scoped list is recomputed each time the host fetches list_tools — i.e. on every server connect with a task already active.

Measured cost. The full authored surface is 147 tools ≈ 62 KB of tool definitions (~15.9k estimated tokens; tests/test_mcp_tool_token_cost.py pins this and ratchets it). Under Claude Code deferred loading (ENABLE_TOOL_SEARCH) only tool names load eagerly and each description is truncated to 2 KB — a ratchet test keeps every TAUSIK description under that limit so none is silently cut, and asserts names stay unique and searchable so name-based dispatch still resolves.

Launching the Tausik MCP Server ​

The bootstrap step generates IDE-specific MCP launchers under harness/<ide>/mcp/. Claude Code reads .claude/settings.json (auto-generated). To regenerate IDE assets and MCP wiring, run python bootstrap/bootstrap.py from your TAUSIK checkout (or python .tausik-lib/bootstrap/bootstrap.py when using the submodule layout). Use python bootstrap/bootstrap.py --refresh only to rewrite .tausik/config.json (e.g. after setting TAUSIK_MODEL_PROFILE) without copying skills/scripts — it does not regenerate .mcp.json files.

Context economy: schemas on demand ​

mcp.compact_tool_list in .tausik/config.json is enabled by bootstrap unless the project explicitly sets it to false. Without generated config, the server fails open to the full list. When on, full schemas stay with a 23-tool core; the other 124 appear as a name and the first 60 characters of their description. Any of those schemas is one call away: tausik_tool_schema(name=...), with query matching a substring and an empty argument returning the name list.

Measured on a fresh 147-tool stdio surface on 2026-10-02, the minified UTF-8 list drops from 54,566 to 33,752 bytes (-38.1%). The 60-character cut is also a measurement rather than a preference: name-only is smaller, but removes the cue an agent uses to decide whose schema to ask for and can spend the saving on an extra turn. The complete project-controlled inventory is in context-economy.md.

Set the flag to false to opt out after checking turns-per-task in your own logs. Missing, malformed or unreadable config always returns the full list.