MCP tool reference

17 tools, generated from crates/mcp/schema/tools.json.

Available over both stdio and Streamable-HTTP transports (loopback-only). See the "connect your AI" guide to wire up Claude Desktop or another MCP-capable client.

add_research_log_entry

Record a search/source context entry in the research log for a session. The research log is what a human later checks to judge whether a search was reasonably exhaustive (GPS component 2) — junk filler is visible, not hidden.

Input schema

fieldrequiredtype
search_contextyesstring
sessionyesstring (uuid)

Output schema

fieldrequiredtype
log_entry_idyesstring (uuid)

attach_evidence

Attach a piece of corroborating evidence (a source blob or an external record id) to an existing assertion. Strengthens — never substitutes for — human confirmation.

Input schema

fieldrequiredtype
assertionyesstring (uuid)
evidenceyes

evidence (tagged union)

kind = external_record

fieldrequiredtype
idyes

id (tagged union)

kind = ancestry_record

fieldrequiredtype
dbidyesstring
kindyesstring [const: ancestry_record]
recordyesstring

kind = doi

fieldrequiredtype
doiyesstring
kindyesstring [const: doi]

kind = family_search_ark

fieldrequiredtype
arkyesstring
kindyesstring [const: family_search_ark]

kind = permalink

fieldrequiredtype
kindyesstring [const: permalink]
urlyesstring
kindyesstring [const: external_record]

kind = source_blob

fieldrequiredtype
blobyesstring
kindyesstring [const: source_blob]

Output schema

fieldrequiredtype
claimyesstring
epistemic_statusyesstring
evidence_classnooptional

evidence_class

fieldrequiredtype
directnessyesstring [enum: direct, indirect]
informantyesstring [enum: primary, secondary]
originalityyesstring [enum: original, derivative]
idyesstring (uuid)
next_stepyesstring
personayesstring (uuid)
sourceyesstring (uuid)

capture_assertion

Capture a new assertion (a claim about a persona, backed by a source). `research_context` is required, not optional metadata: the research log is a byproduct of every capture, per the GPS's reasonably-exhaustive-search component. Agent-origin assertions are always captured in the pending lane (epistemic status `pending confirmation`) — never immediately usable as fact until a human confirms them.

Input schema

fieldrequiredtype
attachednoarray of

AttachedEvidenceInput (tagged union)

kind = external_record

fieldrequiredtype
idyes

id (tagged union)

kind = ancestry_record

fieldrequiredtype
dbidyesstring
kindyesstring [const: ancestry_record]
recordyesstring

kind = doi

fieldrequiredtype
doiyesstring
kindyesstring [const: doi]

kind = family_search_ark

fieldrequiredtype
arkyesstring
kindyesstring [const: family_search_ark]

kind = permalink

fieldrequiredtype
kindyesstring [const: permalink]
urlyesstring
kindyesstring [const: external_record]

kind = source_blob

fieldrequiredtype
blobyesstring
kindyesstring [const: source_blob]
claimyesstring
evidence_classnooptional

evidence_class

fieldrequiredtype
directnessyesstring [enum: direct, indirect]
informantyesstring [enum: primary, secondary]
originalityyesstring [enum: original, derivative]
kindyes

kind (tagged union)

kind = fact

fieldrequiredtype
kindyesstring [const: fact]

kind = transcription_claim

fieldrequiredtype
kindyesstring [const: transcription_claim]
of_blobyesstring
personayesstring (uuid)
research_contextyes

research_context

fieldrequiredtype
search_contextyesstring
sessionyesstring (uuid)
sourceyesstring (uuid)

Output schema

fieldrequiredtype
claimyesstring
epistemic_statusyesstring
evidence_classnooptional

evidence_class

fieldrequiredtype
directnessyesstring [enum: direct, indirect]
informantyesstring [enum: primary, secondary]
originalityyesstring [enum: original, derivative]
idyesstring (uuid)
next_stepyesstring
personayesstring (uuid)
sourceyesstring (uuid)

close_research_question

Close a research question once its line of inquiry is settled (answered, abandoned, or superseded). Does not delete anything — the question and its log remain.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
closedyesboolean

end_research_session

End a research session. Does not close the parent research question — a question may span many sessions.

Input schema

fieldrequiredtype
sessionyesstring (uuid)

Output schema

fieldrequiredtype
endedyesboolean

get_assertion

Read a single assertion by id, with its evidence class and epistemic status.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
claimyesstring
epistemic_statusyesstring
evidence_classnooptional

evidence_class

fieldrequiredtype
directnessyesstring [enum: direct, indirect]
informantyesstring [enum: primary, secondary]
originalityyesstring [enum: original, derivative]
idyesstring (uuid)
next_stepyesstring
personayesstring (uuid)
sourceyesstring (uuid)

get_person

Read a single concluded person (identity) by id.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
certaintyyesstring
idyesstring (uuid)
personasyesarray of string (uuid)

get_persona

Read a single persona (a source appearance) by id.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
idyesstring (uuid)
labelyesstring
sourceyesstring (uuid)

get_research_log

Read the full research log for a research question, across all its sessions — the record a human checks for reasonably-exhaustive-search.

Input schema

fieldrequiredtype
questionyesstring (uuid)

Output schema

fieldrequiredtype
entriesyesarray of

LogEntryView

fieldrequiredtype
attestationyesstring
idyesstring (uuid)
search_contextyesstring
sessionyesstring (uuid)

get_research_question

Read a single research question by id.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
idyesstring (uuid)
questionyesstring

get_source

Read a single source by id.

Input schema

fieldrequiredtype
idyesstring (uuid)

Output schema

fieldrequiredtype
blobsyesarray of string
derived_fromno['string', 'null'] (uuid)
idyesstring (uuid)
titleyesstring

list_pending_assertions

List all agent-origin assertions currently awaiting human confirmation (the pending lane). Each result explains its epistemic status and the next step needed before it can support a proof argument.

Input schema

(object, no properties)

Output schema

fieldrequiredtype
itemsyesarray of

AssertionView

fieldrequiredtype
claimyesstring
epistemic_statusyesstring
evidence_classnooptional

evidence_class

fieldrequiredtype
directnessyesstring [enum: direct, indirect]
informantyesstring [enum: primary, secondary]
originalityyesstring [enum: original, derivative]
idyesstring (uuid)
next_stepyesstring
personayesstring (uuid)
sourceyesstring (uuid)

list_proposals

List all proposed operations (redactions, exports) awaiting human disposition. Proposals are never auto-executed — a human must approve or deny each one.

Input schema

(object, no properties)

Output schema

fieldrequiredtype
itemsyesarray of

ProposalView

fieldrequiredtype
idyesstring (uuid)
next_stepyesstring
op_kindyesstring
statusyesstring

open_research_question

Open a new research question — the GPS-reasoning unit of work. Every capture and log entry should trace back to a question; open one before starting a research session.

Input schema

fieldrequiredtype
questionyesstring

Output schema

fieldrequiredtype
research_question_idyesstring (uuid)

propose_export

Propose exporting the full tree. This never executes directly — it only files a Proposal for a human to review and approve or deny. There is no tool that exports directly; this is the only export-adjacent tool available to an agent.

Input schema

fieldrequiredtype
destination_hintno['string', 'null']

Output schema

fieldrequiredtype
messageyesstring
proposal_idyesstring (uuid)

propose_redaction

Propose redacting (tombstoning) an event. This never executes directly — it only files a Proposal for a human to review and approve or deny. There is no tool that redacts directly; this is the only redaction-adjacent tool available to an agent.

Input schema

fieldrequiredtype
reasonyesstring
target_eventyesstring (uuid)

Output schema

fieldrequiredtype
messageyesstring
proposal_idyesstring (uuid)

start_research_session

Start a research session under an existing research question. Sessions group the search/source log entries that justify a reasonably-exhaustive-search claim.

Input schema

fieldrequiredtype
questionyesstring (uuid)

Output schema

fieldrequiredtype
session_idyesstring (uuid)