research_finding_add
Record an atomic research claim with evidence from arxiv, wiki, curated, or web sources. Specify source kind, optional reference, evidence URL, confidence level, and notes to build project memory.
Instructions
Record an atomic claim with its evidence into the project. Each finding has a source kind (arxiv|wiki|curated|web), an optional ref/url, a confidence 0-1, and free-text notes. Findings are the building blocks; export consolidates them into a memo.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| claim | Yes | ||
| sourceKind | Yes | "arxiv" | "wiki" | "curated" | "web" | |
| sourceRef | No | ||
| evidenceUrl | No | ||
| confidence | No | 0-1, default 0.7. | |
| notes | No |
Implementation Reference
- The handler function `handleFindingAdd` that executes the research_finding_add tool logic. Inserts a row into the `research_findings` table with project_id, source_kind, source_ref, claim, evidence_url, confidence, and notes.
const handleFindingAdd: McpToolHandler = async (args, ctx) => { const pool = (await ensureSchema(ctx)) as any; const r = await pool.query( `INSERT INTO research_findings (project_id, source_kind, source_ref, claim, evidence_url, confidence, notes) VALUES ($1,$2,$3,$4,$5,$6,$7) RETURNING id`, [String(args.projectId), String(args.sourceKind), args.sourceRef ?? null, String(args.claim), args.evidenceUrl ?? null, args.confidence ?? 0.7, args.notes ?? null], ); return ok(asText({ success: true, finding_id: r.rows[0].id })); }; - The tool definition/registration schema for research_finding_add: defines input properties (projectId, claim, sourceKind, sourceRef, evidenceUrl, confidence, notes) with required fields projectId, claim, and sourceKind.
definition: { name: 'research_finding_add', description: 'Record an atomic claim with its evidence into the project. Each finding has a source kind (arxiv|wiki|curated|web), an optional ref/url, a confidence 0-1, and free-text notes. Findings are the building blocks; export consolidates them into a memo.', inputSchema: { type: 'object', properties: { projectId: { type: 'string' }, claim: { type: 'string' }, sourceKind: { type: 'string', description: '"arxiv" | "wiki" | "curated" | "web"' }, sourceRef: { type: 'string' }, evidenceUrl: { type: 'string' }, confidence: { type: 'number', description: '0-1, default 0.7.' }, notes: { type: 'string' }, }, required: ['projectId', 'claim', 'sourceKind'], }, }, - packages/core/src/mcp/research-tools.ts:302-322 (registration)The registration entry in the RESEARCH_TOOLS array that maps the tool definition (name, description, inputSchema) to the handleFindingAdd handler, categorized under group 'ai'.
{ group: 'ai', definition: { name: 'research_finding_add', description: 'Record an atomic claim with its evidence into the project. Each finding has a source kind (arxiv|wiki|curated|web), an optional ref/url, a confidence 0-1, and free-text notes. Findings are the building blocks; export consolidates them into a memo.', inputSchema: { type: 'object', properties: { projectId: { type: 'string' }, claim: { type: 'string' }, sourceKind: { type: 'string', description: '"arxiv" | "wiki" | "curated" | "web"' }, sourceRef: { type: 'string' }, evidenceUrl: { type: 'string' }, confidence: { type: 'number', description: '0-1, default 0.7.' }, notes: { type: 'string' }, }, required: ['projectId', 'claim', 'sourceKind'], }, }, handler: handleFindingAdd, },