MCP Tools Reference
Complete reference for every tool available through Trovella's MCP server.
Overview
When you connect Trovella to your AI tools, your AI assistant gains access to the twelve tools listed below. These tools are called automatically by your AI assistant as needed — you don't invoke them directly.
The surface is intentionally small: each tool has a single responsibility and rejects payloads that miss its required structural fields, so the right path stays easier than the wrong one. The server's discovery instructions describe the canonical sequence (plan → cycle → gate → critique → synthesize → review) and every tool's response includes a nextRequiredCall or nextRecommendedAction pointing at what comes next.
research_plan
Start a new research plan. This is the atomic entry point — it creates the plan, persists a structured brief artifact, and scaffolds one step per phase in a single call.
Required fields:
- name — short plan name.
- researchQuestion — the verbatim question the plan answers.
- briefTitle — title for the persisted brief artifact.
- briefContent — the full structured brief. Required sub-fields:
successModel(≥40 chars),audienceRegister,scope.inclusions[],outputStructure.{shape, requiredFields[]},antiPatterns[],honestyContract[],seedEntities[],phaseSequence[](≥1 phase withid,type,name,purpose, and round-1iterationGateCriteria), plus eitherclarifyingQuestions[](each with an answer) OR aclarifyingSkipReason(≥40 chars).validationHierarchy[](≥3 tiers) is required when any phase has typeevidence_validation.
The brief is the structural forcing function — every downstream tool reads its phaseSequence, iterationGateCriteria, validationHierarchy, antiPatterns, and outputStructure.
research_brief
Read or extend the brief for an existing plan. Composition happens atomically inside research_plan; this tool covers the post-creation lifecycle.
- read — return the brief and every addendum in chronological order. Use after context compaction to re-anchor the plan's forcing function.
- addendum — append a new addendum with
triggerReason(iteration_gate_continue|critique_route_back|manual),triggerNote, adelta(added phase / updated criteria / scope expansion), andlearnings[].
research_cycle
Close a search-analyze cycle or request an override.
- close — atomic per-cycle persistence. Requires non-empty
facts[],sources[],artifacts[](≥1), andsearchesPerformed[]. Multi-stat sources (≥3 numeric claims in one source) must reference a priorknowledge_extractviaextractionResultIdon the facts citing them, otherwise the close is rejected. - request_override — when there's genuinely no evidence to persist this cycle, submit a substantive ≥40-char reason. The server returns a
decisionId; on user approval (submit_user_decision), pass it asforceOverrideto a subsequentclose. Single-use and time-bounded (24h).
research_gate
Evaluate iteration progress against the brief's criteria, then route the plan forward.
- evaluate — return a snapshot of the current phase's roundN criteria and graph state (facts in phase, artifacts in phase, cycles closed, etc.). Judgment stays with the caller.
- continue_cycle — record a brief addendum with escalated criteria for the next round and loop back to
research_cycle.close. - advance_phase — move
currentPhaseIdto the next phase and write aphase_contextartifact bridging outputs to the next phase's inputs. - proceed_to_critique — persist a
critiqueFailureThresholdspec thatresearch_critique.apply_thresholdconsumes mechanically.
research_critique
Run the adversarial pass on the synthesized plan.
- submit — store critique findings. Requires
structuralFinding(does the analysis answer the original question, and if not what's the scope gap),honestyAudit(thin-validation called out, documented harms integrated, consulting projections excluded), plussensitivityFlags,contraryEvidenceIntegrated,overhypedVsUnderappreciated,tierDowngrades,retractions, and optionalnewContradictsEdges. - apply_threshold — compare findings against the most-recent gate decision's threshold spec. Returns
routeDecision:return_to_search(write a brief addendum and re-open cycles) orproceed_to_synthesize.
research_synthesize
Compose the final deliverable by recombining stored artifacts and graph facts — not by re-deriving from chat context.
- compose — enforces output-to-longest-artifact ratio < 5x and citation coverage (every numeric in the output needs a
factIdwithin 200 chars). Below 60% coverage blocks; 60–80% emits an advisory. ProvideoverrideRatioCheck: <userDecisionId>to bypass the ratio gate after user authorization. - read — fetch the most-recent composed output for a plan.
research_review
Verify the synthesized output before delivery.
- trace — walk every quantitative claim, confirm each resolves to a real fact, and check that the brief's required output-structure fields are populated. Returns a per-dimension pass/fail result with specific findings.
- submit — persist a
reviewartifact recording the trace decision plus reviewer notes.
research_query
Discover plans across the workspace. Filter by status (active | completed | failed | stalled | awaiting_review | all), search plan name + research question text, paginate via limit + offset. Returns per-plan progress, step counts, artifact counts, and fact counts. Call this at the start of a research request to avoid duplicating prior work.
knowledge_query
Query the knowledge graph and stored research content. Three views:
- search — hybrid keyword (BM25) + semantic (vector) search over research artifacts, outputs, and extraction results. Merged via Reciprocal Rank Fusion. Requires
query; filter bysourceTable,artifactType,planId. - related — given a
factId, return all SAME / SUPPORTS / MODIFIES / CONTRADICTS / SUPERSEDES edges in both directions. - cluster — given a
topicId(or afactIdto derive its topics), return the forest-plot data: every fact in the cluster plus typed edges between them. Heterogeneity is rendered explicitly — never averaged.
knowledge_extract
Schema-driven extraction from a raw source using AI. Provide a JSON schema describing what to pull out; Trovella runs structured AI extraction and returns the result with per-field confidence. Results are persisted in extraction_result for later reuse and can be cited by extractionResultId on facts.
This is the only tool that runs fresh AI inference on raw inputs. Call it whenever a single source carries ≥3 atomic statistics — research_cycle.close will reject otherwise.
research_feedback
Record telemetry signals.
- skill_execution — track a research skill invocation lifecycle. Omit
executionIdto create a new record; pass it to update (upsert pattern). - user_satisfaction — capture user feedback on a completed plan. Use at two moments:
initialright after delivery, andclosingwhen the conversation shifts. Includes satisfaction level, free-text feedback, and follow-up flag.
research_retrospective
Optional post-hoc retrospective on a completed plan.
- prepare — return a full plan dump + computed analytics + a structured directive for composing the retrospective.
- create — store a structured retrospective with
failures/whatWentWell/actionItems/trajectoryDeltaand optional sections. Requires the plan to be terminal unlesspartial: true, and requiresblamelessAcknowledgment: true. - fetch — return the retrospective plus a lean
planSummarytable-of-contents (default ~20–30K). Passexpandto selectively pull rows in full. - list — enumerate retrospectives on the workspace.