Skip to content

MCP tools

All six tools are read-only and idempotent, and all return the same response envelope described in Response format.

Shared window parameters

Five of the six tools accept a bounded time window with identical rules:

ParameterTypeRules
fromISO date/time stringOptional. Max 40 characters. Must parse as a date.
toISO date/time stringOptional. Must not be earlier than from.
limitintegerOptional. 1–20. Defaults to 8.

The window must not exceed 90 days. Supplying from after to, or a span wider than 90 days, is a validation error. Omitting both lets the server choose the window and report it back as effectiveWindow.

Query strings, where accepted, are trimmed and must be 2–300 characters. All tool inputs are strict — unknown properties are rejected rather than ignored.


tnl_research_what_changed

Compares a bounded evidence window against its equal-length baseline and identifies material changes with citations.

ParameterTypeRequiredNotes
querystringno2–300 characters. Narrows the comparison to a topic.
fromISO datenoWindow start.
toISO datenoWindow end. Max 90-day span.
limitintegerno1–20, default 8.

The baseline is the equal-length period immediately preceding the window, so a 7-day window is compared against the 7 days before it.


tnl_research_compare_sources

Compares cited publisher coverage, omissions, contradiction states, framing signals, and timing for a bounded topic.

ParameterTypeRequiredNotes
querystringyes2–300 characters.
fromISO datenoWindow start.
toISO datenoWindow end. Max 90-day span.
limitintegerno1–20, default 8.

Use this to answer "who is not reporting this?" — omissions are part of the output, not just coverage.


tnl_research_validate_event

Finds TNL evidence for an event and returns a bounded corroboration state without claiming certainty.

ParameterTypeRequiredNotes
eventstringyes4–500 characters. Describe the event in prose.
fromISO datenoWindow start.
toISO datenoWindow end. Max 90-day span.
limitintegerno1–20, default 8.

The answer arrives as verificationState, not a boolean. insufficient_evidence is a legitimate and common result — treat it as "TNL cannot speak to this", not as "false".


tnl_research_asset_exposure

Maps documented and modeled asset or entity exposure paths, horizons, directions, and counterfactors.

ParameterTypeRequiredNotes
assetstringyes1–32 characters. Ticker or short identifier, e.g. NVDA.
assetNamestringno2–120 characters. Full name, when the ticker is ambiguous.
querystringno2–300 characters. Narrows to a topic.
fromISO datenoWindow start.
toISO datenoWindow end. Max 90-day span.
limitintegerno1–20, default 8.

Output separates documented exposure from modeled exposure. Check evidenceType on each claim before presenting it.


tnl_research_operational_risk

Builds bounded geopolitical or operational-risk scenarios from cited evidence, with assumptions and counterfactors.

ParameterTypeRequiredNotes
querystringyes2–300 characters.
regionstringno2–120 characters.
categorystringno2–120 characters.
horizonenumnoimmediate, short_term, medium_term. Default short_term.
fromISO datenoWindow start.
toISO datenoWindow end. Max 90-day span.
limitintegerno1–20, default 8.

Scenario output lands in scenarios with counterfactors alongside. Presenting scenarios without their counterfactors misrepresents the result.


tnl_research_weekly_consequential

Deduplicates and ranks consequential developments for one bounded week, with cited evidence and stated ranking limitations.

ParameterTypeRequiredNotes
weekStartISO datenoStart of the target week.
querystringno2–300 characters.
regionstringno2–120 characters.
categorystringno2–120 characters.
limitintegerno1–20, default 10.

This tool takes weekStart instead of a from/to pair, and its limit defaults to 10 rather than 8.


Response format

Every tool returns this envelope:

json
{
  "tool": "tnl_research_what_changed",
  "summary": "…",
  "verificationState": "partially_corroborated",
  "confidence": "medium",
  "claims": [
    {
      "claim": "…",
      "evidenceType": "documented_fact",
      "confidence": "high",
      "sourceUrls": ["https://…"]
    }
  ],
  "sources": [
    {
      "title": "…",
      "url": "https://…",
      "publishedAt": "2026-07-20T09:00:00.000Z",
      "sourceType": "publisher",
      "independence": "independent",
      "snippet": "…"
    }
  ],
  "documentedFacts": ["…"],
  "inferences": ["…"],
  "scenarios": ["…"],
  "counterfactors": ["…"],
  "effectiveWindow": { "from": "2026-07-18T00:00:00.000Z", "to": "2026-07-25T00:00:00.000Z" },
  "freshness": { "lastSyncAt": "2026-07-25T07:40:00.000Z", "generatedAt": "2026-07-25T07:46:00.000Z" },
  "pagination": { "returned": 8, "truncated": false },
  "warnings": [],
  "usage": {
    "month": "2026-07",
    "calls": 412,
    "remaining": 9588,
    "monthlyLimit": 10000,
    "resetAt": "2026-08-01T00:00:00.000Z"
  }
}

Field meanings

FieldTypeNotes
toolstringWhich tool produced this.
summarystringProse summary of the finding.
verificationStateenumunverified, partially_corroborated, corroborated, contested, insufficient_evidence.
confidenceenumlow, medium, high. Overall confidence.
claims[]arrayIndividual claims. See below.
sources[]arrayCitations. See below.
documentedFacts[]string[]Statements backed by cited evidence.
inferences[]string[]TNL reasoning, not directly documented.
scenarios[]string[]Forward-looking possibilities. Not predictions.
counterfactors[]string[]Evidence cutting against the analysis.
effectiveWindowobjectfrom/to actually used, which may differ from what you asked for.
freshnessobjectlastSyncAt (corpus recency, nullable) and generatedAt.
paginationobjectreturned count and whether results were truncated.
warnings[]string[]Caveats about this specific result. Surface these.
usageobjectYour monthly position after this call.

claims[]

FieldTypeValues
claimstringThe statement.
evidenceTypeenumdocumented_fact, inference, scenario, counterfactor.
confidenceenumlow, medium, high.
sourceUrlsstring[]URLs supporting this specific claim.

sources[]

FieldTypeValues
titlestringSource title.
urlstringCanonical URL.
publishedAtstring | nullISO timestamp, nullable.
sourceTypeenumpublisher (external) or tnl_record (TNL's own).
independenceenumprimary, independent, tnl_analysis.
snippetstringRelevant excerpt.

Read independence before weighting a source

primary is the actor's own statement, independent is third-party reporting, and tnl_analysis is TNL's own work. Three independent sources carry different weight from one primary source echoed three times.

The Neural Ledger API