Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Torus

PYPI · TORUS-KG

Stock research memory for Claude: theses, sourced claims and SEC filing alerts in a local graph

Available components

−15 this week 65 Trust /100

Last scanned (11 hours ago)

Scores higher than 62% of PyPI servers

Category Memory and Knowledge

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 28 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to sekhar14/torus). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 12 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Tool/resource definitions use about 3874 tokens (~84/item across 46 items; 45 tools + 1 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage88
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 57% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 47 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

What we tested

Checks we ran (14)

  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Checks we could not complete (2)

These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.

  • Malware scan in Supply Chain SecurityMalware scan not yet available for this package.
  • Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 1 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 26 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 25 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/torus-kg@0.4.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo sekhar14/torus
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/sekhar14/torus/.github/workflows/release.yml@refs/tags/v0.4.1
Rekor log index 3420202961
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:2d6066bc05dbbe80295bc4c3cf8684d44897ae86b864ec2714a6e333ed97c0ac

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 28 packages
Packages resolved 28
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 45 exposed · ~3,354 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_event ~117

Record an event and raise alerts on theses it may affect (through the companies involved and their suppliers, customers and competitors).

NameTypeReqDescription
entitiesarrayyesEntities the event is about
kind–––
materiality––How much it matters (default 1.0)
occurred_atstringyesWhen it happened (UTC if no zone)
summary–––
titlestringyesWhat happened, e.g. 'TSMC 8-K: CoWoS ramp delayed'
uri–––
NameTypeReqDescription
alertsarrayyes–
createdbooleanyesFalse if this event was already recorded
event–yes–

No examples provided.

alert_stats ~45

How useful alerts have been: verdicts, and the share judged related (precision) by source, form, hops and materiality.

NameTypeReqDescription
since––Only alerts raised since
NameTypeReqDescription
alertsintegeryes–
by_formarrayyes–
by_hopsarrayyes–
by_materialityarrayyes–
by_sourcearrayyes–
by_verdictobjectyes–
judgedintegeryes–
openintegeryes–
precision–yes–
unrelatedintegeryes–

No examples provided.

audit ~63

Health check of the research graph: expired or thinly sourced assumptions, theses past their horizon or gone stale, claims that may conflict, unconfirmed starter links, orphans. Each finding suggests a fix.

NameTypeReqDescription
stale_daysinteger–Flag open theses unchanged this long
NameTypeReqDescription
countsobjectyes–
findingsarrayyes–
generated_atstringyes–
markdownstring––

No examples provided.

brief ~66

One-call briefing at the start of a turn: spots known companies in `text`, recalls prior theses, claims, open alerts and ruled-out ideas about them, and returns the graph digest.

NameTypeReqDescription
textstring–The user's question or company names (leave blank for the digest only)
NameTypeReqDescription
contextstringyesPrior theses, claims and open alerts on those companies (markdown)
detected_entitiesarrayyesKnown companies spotted in `text`, as 'Name (id)'
digeststringyesGraph overview: open alerts, theses at risk, 7-day changes, audit summary
recall–––

No examples provided.

complete_distillation ~68

Finish a leased distillation job (or hand it back if it failed).

NameTypeReqDescription
failedboolean–True if the job couldn't be done; it will be retried
queue_idstringyes–
summarystringyesWhat was added, in a sentence or two
NameTypeReqDescription
queue_idstringyes–
remainingintegeryes–
status–yes–

No examples provided.

complete_mapping ~64

Finish a leased mapping job (or hand it back if it failed).

NameTypeReqDescription
failedboolean–True if it couldn't be done; it will be retried
queue_idstringyes–
summarystringyesLinks and claims added, in a sentence
NameTypeReqDescription
queue_idstringyes–
remainingintegeryes–
status–yes–

No examples provided.

digest ~63

What happened in the research over the last days: new alerts by thesis, thesis status and confidence changes, theses coming due, audit counts, scorecard moves and activity. ``markdown`` is ready to show.

NameTypeReqDescription
since_daysinteger–How far back to look
NameTypeReqDescription
activityobjectyes–
audit_countsobjectyes–
coming_duearrayyes–
markdownstring––
movesarrayyes–
new_alertsarrayyes–
older_open_alertsintegeryes–
sincestringyes–
thesis_changesarrayyes–
top_findingsarrayyes–
untilstringyes–

No examples provided.

filing_diff ~101

What changed in a section of a company's latest filing against the previous one of the same form: new, dropped and reworded sentences.

NameTypeReqDescription
companystringyesTicker, CIK, company name, canonical key or id
formstring–10-K, 10-Q or 20-F
max_itemsinteger––
sectionstring–e.g. risk_factors, business, mdna
NameTypeReqDescription
addedarrayyesNew sentences
changedarrayyesReworded sentences, most rewritten first
companystringyes–
latest–yes–
previous–yes–
removedarrayyesDropped sentences
sectionstringyes–
total_addedintegeryes–
total_changedintegeryes–
total_removedintegeryes–
unchangedintegeryes–

No examples provided.

filing_text ~151

Read a company's SEC filing as text, by section, from EDGAR (cached). Long sections come in pages: pass `next_offset` back as `offset`.

NameTypeReqDescription
companystringyesTicker, CIK, company name, canonical key or id
formstring–10-K, 10-Q, 20-F, 8-K...
indexinteger–0 = latest, 1 = previous
max_charsinteger––
offsetinteger––
section––business, risk_factors, mdna, legal, market_risk, financials, or an item id like 1A; omit for the whole document
NameTypeReqDescription
accessionstringyes–
cikstringyes–
companystringyes–
filedstringyes–
formstringyes–
next_offset–yesPass as offset to read on; None at the end
offsetintegeryes–
section–yes–
sectionsarrayyesSections this filing can be read by
textstringyes–
total_charsintegeryes–
urlstringyesCite this as the evidence URI (kind: filing)

No examples provided.

find_paths ~97

How two entities are connected, e.g. ASML -SUPPLIES-> TSMC -SUPPLIES-> AMD. Shortest and most confident paths first.

NameTypeReqDescription
max_hopsinteger––
relationsarray––
sourcestringyesTicker, CIK, company name, canonical key or id
targetstringyesTicker, CIK, company name, canonical key or id
NameTypeReqDescription
pathsarrayyes–
sourcestringyes–
targetstringyes–
textsarrayyes–

No examples provided.

get_entity ~37

Resolve an entity and list its current relations.

NameTypeReqDescription
entitystringyesTicker, CIK, company name, canonical key or id
NameTypeReqDescription
entity–yes–
relationsarrayyes–
resolved_bystringyes–

No examples provided.

impact ~44

Dry run: which theses would an event on these entities affect, and why? Records nothing.

NameTypeReqDescription
entitiesarrayyesEntities a hypothetical event touches
occurred_at–––
NameTypeReqDescription
hitsarrayyes–

No examples provided.

list_alerts ~71

Alerts raised by events on theses, highest score first. Each shows how its score was built: graph score x event materiality x (1 + trigger match).

NameTypeReqDescription
groupedboolean–Also group the alerts by thesis, to judge each once
status–––
thesis_id–––
NameTypeReqDescription
alertsarrayyes–
groupsarray–The same alerts grouped by thesis (when grouped=true)

No examples provided.

list_watches ~25

What the watchers follow: the watchlist, open-thesis entities, feeds.

Input schema present but exposes no named parameters.

NameTypeReqDescription
entitiesarrayyes–
feedsarrayyes–

No examples provided.

merge_entities ~70

Fold a duplicate entity into the one to keep; its links move over.

NameTypeReqDescription
duplicatestringyesTicker, CIK, company name, canonical key or id
keepstringyesTicker, CIK, company name, canonical key or id
reasonstringyes–
NameTypeReqDescription
aliasesarrayyes–
attrsobjectyes–
canonical_key–yes–
created_atstringyes–
idstringyes–
kind–yes–
namestringyes–
updated_atstringyes–

No examples provided.

neighbors ~90

The entity's neighbourhood: companies within `hops` links (suppliers, customers, competitors...), the links among them, and theses about them.

NameTypeReqDescription
entitystringyesTicker, CIK, company name, canonical key or id
hopsinteger––
relationsarray–Only these relation types (default all)
valid_at––Only links true at this date
NameTypeReqDescription
edgesarrayyes–
focusarrayyes–
nodesarrayyes–

No examples provided.

next_distillation ~73

Lease the oldest research session waiting to be distilled into the graph. Returns its transcript digest, what was already recorded (don't duplicate it), the sources the agent looked at, and existing theses on its entities. Until `complete_distillation`, new records are attributed to that session.

NameTypeReqDescription
transcript_charsinteger––
NameTypeReqDescription
job–yes–
remainingintegeryesJobs still waiting after this one

No examples provided.

next_mapping ~36

Lease the next onboarded company to map from its annual report. Until `complete_mapping`, links you record are marked as curator links.

Input schema present but exposes no named parameters.

NameTypeReqDescription
job–yes–
remainingintegeryesJobs still waiting after this one

No examples provided.

onboard ~81

Start covering companies: add them, watch their filings, suggest starter packs, and queue a mapping job for each (run by the company-mapper subagent, which reads their annual reports and records suppliers, customers and competitors).

NameTypeReqDescription
tickersarrayyesTickers or company names to cover
watchboolean–Watch their SEC filings
NameTypeReqDescription
companiesarrayyes–
mapping_jobs_queuedintegeryes–
suggested_packsarrayyes–
unresolvedarrayyes–

No examples provided.

open_explorer ~72

Write the interactive graph explorer HTML file (under TORUS_HOME/explorer.html) and open it in the user's browser.

NameTypeReqDescription
focusarray–Companies to centre on (default: whole graph)
hopsinteger––
open_browserboolean–Open the HTML file in the default browser
NameTypeReqDescription
companiesintegeryes–
eventsintegeryes–
linksintegeryes–
openedbooleanyes–
pathstringyes–
thesesintegeryes–

No examples provided.

recall ~79

Prior theses, claims and rejected hypotheses about entities and/or a question. Call this before starting research so you build on earlier work.

NameTypeReqDescription
as_of––Show what was believed at this time
entitiesarray–Entity refs to focus on
limitinteger––
query––Free-text question; entities in it are detected
NameTypeReqDescription
alertsarray––
as_of–yes–
claimsarrayyes–
entitiesarrayyes–
query–yes–
rejected_hypothesesarrayyes–
thesesarrayyes–
total_claimsintegeryes–

No examples provided.

recent_records ~38

What the most recent research sessions recorded, newest first, and which records can still be undone.

NameTypeReqDescription
sessionsinteger–Most recent sessions
NameTypeReqDescription
sessionsarrayyes–

No examples provided.

record_claim ~123

Record a finding. Facts and metrics need evidence_ids.

NameTypeReqDescription
claim_type–yes–
confidencenumberyes0 = guess, 1 = certain
contradicting_evidence_idsarray––
derived_fromarray–Claim ids an inference builds on
entitiesarray–Entities the claim is about
evidence_idsarray––
mentionedarray–Entities only mentioned in passing
textstringyesOne atomic, self-contained statement
valid_from–––
valid_to–––
NameTypeReqDescription
change_reason–yes–
claim_type–yes–
confidencenumberyes–
derived_fromarrayyes–
entitiesarrayyes–
evidencearrayyes–
idstringyes–
lineage_idstringyes–
recorded_atstringyes–
session_id–yes–
status–yes–
superseded_at–yes–
supersedes_id–yes–
textstringyes–
valid_from–yes–
valid_to–yes–

No examples provided.

record_evidence ~67

Record a source. Re-recording the same URI returns the existing record.

NameTypeReqDescription
kind–––
published_at–––
publisher–––
quote––Short verbatim excerpt supporting claims
title–––
uristringyesURL or document path
NameTypeReqDescription
content_hash–yes–
idstringyes–
kind–yes–
published_at–yes–
publisher–yes–
quote–yes–
recorded_atstringyes–
retrieved_atstringyes–
source_path–yes–
title–yes–
uristringyes–

No examples provided.

record_rejected_hypothesis ~56

Record an idea that was checked and ruled out, so it isn't re-explored.

NameTypeReqDescription
entitiesarray––
reasonstringyesWhy it was ruled out
textstringyes–
NameTypeReqDescription
entity_idsarrayyes–
idstringyes–
reasonstringyes–
recorded_atstringyes–
session_id–yes–
textstringyes–
withdrawn_at–––

No examples provided.

record_relation ~130

Link two entities, e.g. TSMC SUPPLIES NVIDIA. Re-recording an existing link updates it (confidence, backing claim, dates) instead of duplicating it.

NameTypeReqDescription
claim_id––Claim that backs this link
confidencenumberyes0 = guess, 1 = certain
rel–yes–
sourcestringyesTicker, CIK, company name, canonical key or id
targetstringyesTicker, CIK, company name, canonical key or id
valid_from–––
valid_to–––
NameTypeReqDescription
claim_id–yes–
confidencenumberyes–
dst_idstringyes–
idstringyes–
lineage_idstringyes–
recorded_atstringyes–
rel–yes–
sourcestring––
src_idstringyes–
superseded_at–yes–
supersedes_id–yes–
valid_from–yes–
valid_to–yes–

No examples provided.

record_thesis ~122

Record a conclusion and the claims it rests on.

NameTypeReqDescription
assumption_claim_idsarray–Claims the thesis depends on
confidencenumberyes0 = guess, 1 = certain
horizon––e.g. 12m, FY27
risk_claim_idsarray––
stance–yes–
statementstringyes–
subject––Main entity of the thesis
supporting_claim_idsarray––
titlestringyes–
triggersarray–Conditions that would invalidate it
NameTypeReqDescription
alert_threshold–––
benchmark–––
claimsarrayyes–
confidencenumberyes–
created_atstringyes–
entry_at–––
entry_price–––
horizon–yes–
horizon_date–––
idstringyes–
instrument–––
session_id–yes–
stance–yes–
statementstringyes–
status–yes–
subject_entity_id–yes–
titlestringyes–
triggersarrayyes–
updated_atstringyes–

No examples provided.

resolve_alert ~96

Judge an alert after reading the event and the thesis's claims; the thesis is updated accordingly and the change logged with the alert.

NameTypeReqDescription
alert_idstringyes–
confidence––New thesis confidence
rationalestringyesWhy, citing the event and evidence
status––Override the default status change
verdict–yessupports | weakens (active -> at_risk) | breaks | unrelated
NameTypeReqDescription
alert–yes–
event–yes–
thesis_confidencenumberyes–
thesis_status–yes–
thesis_titlestringyes–

No examples provided.

retract_claim ~38

Withdraw a claim that turned out to be wrong (kept in history).

NameTypeReqDescription
claim_idstringyes–
reasonstringyes–
NameTypeReqDescription
change_reason–yes–
claim_type–yes–
confidencenumberyes–
derived_fromarrayyes–
entitiesarrayyes–
evidencearrayyes–
idstringyes–
lineage_idstringyes–
recorded_atstringyes–
session_id–yes–
status–yes–
superseded_at–yes–
supersedes_id–yes–
textstringyes–
valid_from–yes–
valid_to–yes–

No examples provided.

scorecard ~51

How tracked theses have done against their benchmarks, their outcomes, and calibration: did the user's confidence match how often they were right?

NameTypeReqDescription
refreshboolean–Fetch the latest prices first (Yahoo Finance)
NameTypeReqDescription
calibration–yes–
generated_atstringyes–
markdownstring––
thesesarrayyes–

No examples provided.

search ~40

Keyword search over current claims, evidence and theses.

NameTypeReqDescription
limitinteger––
querystringyes–
typesarray–Object types
NameTypeReqDescription
hitsarrayyes–

No examples provided.

seed_starter_pack ~47

Add a curated starter pack of companies and supplier/competitor links. Never overrides links research recorded.

NameTypeReqDescription
packstringyessemis, software, banks, energy or pharma
NameTypeReqDescription
companies_addedintegeryes–
links_addedintegeryes–
links_already_presentintegeryes–
packstringyes–

No examples provided.

set_thesis_outcome ~53

Record whether a thesis turned out right, wrong or unclear (overrides the automatic outcome; used for calibration).

NameTypeReqDescription
note––Why
outcome–yes–
thesis_idstringyes–
NameTypeReqDescription
decided_atstringyes–
methodstringyes–
note–yes–
outcome–yes–
stance_return–yes–
thesis_idstringyes–

No examples provided.

supersede_claim ~64

Correct a claim: the old version stays in history, the new one is current.

NameTypeReqDescription
claim_idstringyes–
confidence–––
evidence_ids––Replaces the evidence list if given
reasonstringyes–
text–––
NameTypeReqDescription
change_reason–yes–
claim_type–yes–
confidencenumberyes–
derived_fromarrayyes–
entitiesarrayyes–
evidencearrayyes–
idstringyes–
lineage_idstringyes–
recorded_atstringyes–
session_id–yes–
status–yes–
superseded_at–yes–
supersedes_id–yes–
textstringyes–
valid_from–yes–
valid_to–yes–

No examples provided.

thesis_memo ~64

Write a thesis up as a memo (Markdown and a standalone HTML page): what it rests on with sources and quotes, triggers, events and verdicts, ruled-out ideas and history. Saved under TORUS_HOME/memos.

NameTypeReqDescription
thesis_idstringyes–
NameTypeReqDescription
html_pathstringyes–
markdownstringyes–
markdown_pathstringyes–

No examples provided.

thesis_weak_points ~63

Where a thesis is weakest: thin or expiring assumptions, strong supplier or customer dependencies it never mentions, triggers that can't fire on events, and opposing views already in the graph. Input for /torus:challenge.

NameTypeReqDescription
thesis_idstringyes–
NameTypeReqDescription
assumptionsarrayyes–
confidencenumberyes–
opposing_viewsarrayyes–
retracted_linksintegeryes–
stance–yes–
statementstringyes–
subject–yes–
text_only_triggersarrayyes–
thesis_idstringyes–
titlestringyes–
unwatched_dependenciesarrayyes–

No examples provided.

timeline ~47

Chronological claims and thesis changes for one entity.

NameTypeReqDescription
entitystringyesTicker, CIK, company name, canonical key or id
since–––
until–––
NameTypeReqDescription
changesarrayyes–
entity_id–yes–
since–yes–
until–yes–

No examples provided.

track_thesis ~107

Put a thesis on the scorecard: its return against a benchmark from an entry price and date, in the direction of its stance.

NameTypeReqDescription
benchmark––Default: SPY
entry_date––Default: when the thesis was recorded
entry_price––Default: the close on the entry date
stopboolean–Stop tracking this thesis
thesis_idstringyes–
ticker––Instrument to track (default: the subject's ticker)
NameTypeReqDescription
alert_threshold–––
benchmark–––
claimsarrayyes–
confidencenumberyes–
created_atstringyes–
entry_at–––
entry_price–––
horizon–yes–
horizon_date–––
idstringyes–
instrument–––
session_id–yes–
stance–yes–
statementstringyes–
status–yes–
subject_entity_id–yes–
titlestringyes–
triggersarrayyes–
updated_atstringyes–

No examples provided.

undo_records ~84

Revert records the user doesn't want: claims are retracted (corrections go back to the earlier version), theses the session created are archived, links retired, ruled-out ideas withdrawn. History keeps everything.

NameTypeReqDescription
reasonstring––
recordsarrayyesWhat to revert
session_idstringyesThe session, from recent_records
NameTypeReqDescription
outcomesarrayyes–

No examples provided.

unwatch ~37

Remove a company from the explicit watchlist.

NameTypeReqDescription
entitystringyesTicker, CIK, company name, canonical key or id
NameTypeReqDescription
entitiesarrayyes–
feedsarrayyes–

No examples provided.

update_thesis ~242

Revise a thesis: status, confidence, the claims it rests on, and its triggers, in one atomic step. Everything is kept in its history. Also tunes its alerts: a threshold of its own, and mutes (e.g. no alerts for a supplier's routine 10-Qs).

NameTypeReqDescription
add_claimsarray–Claims to link (e.g. newer, better-sourced assumptions)
add_mutesarray–Stop alerts from matching events
add_triggersarray–New conditions that would invalidate it
alert_threshold––Minimum alert score for this thesis
confidence–––
horizon––New horizon, e.g. 12m or FY2027 (counted from now)
reasonstringyesWhy; kept in the thesis history
remove_claim_idsarray–Claims the thesis no longer rests on
remove_mute_idsarray––
remove_trigger_idsarray––
reset_alert_thresholdboolean–Go back to the global alert threshold
status–––
thesis_idstringyes–
NameTypeReqDescription
alert_threshold–––
benchmark–––
claimsarrayyes–
confidencenumberyes–
created_atstringyes–
entry_at–––
entry_price–––
horizon–yes–
horizon_date–––
idstringyes–
instrument–––
session_id–yes–
stance–yes–
statementstringyes–
status–yes–
subject_entity_id–yes–
titlestringyes–
triggersarrayyes–
updated_atstringyes–

No examples provided.

upsert_entity ~76

Create an entity (or merge into the one with the same canonical_key).

NameTypeReqDescription
aliasesarray–Other names, abbreviations
canonical_key––Stable id such as cik:0001045810; merges on match
kind–––
namestringyes–
tickersarray––
NameTypeReqDescription
aliasesarrayyes–
attrsobjectyes–
canonical_key–yes–
created_atstringyes–
idstringyes–
kind–yes–
namestringyes–
updated_atstringyes–

No examples provided.

watch ~61

Watch a company: its new SEC filings become events (on the next `torus watch run`). Subjects of open theses are watched automatically.

NameTypeReqDescription
entitystringyesTicker, CIK, company name, canonical key or id
note–––
NameTypeReqDescription
entitiesarrayyes–
feedsarrayyes–

No examples provided.

Install

How do I install the Torus MCP server?

Torus runs locally as a PyPI package, launched with uvx torus-kg serve. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · torus-kg

# add to Claude Code
claude mcp add sekhar14-torus -- uvx torus-kg serve
Common questions

What is the Torus MCP server?

Torus is an MCP server listed in the public MCP registry as io.github.sekhar14/torus. Stock research memory for Claude: theses, sourced claims and SEC filing alerts in a local graph. This page covers its PyPI package (torus-kg).

Is the Torus MCP server safe to use?

Torus scores 65 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Torus MCP server expose?

Torus exposes 45 tools: brief, recall, get_entity, search, timeline, and 40 more. Their descriptions and schemas cost roughly 3,354 tokens of context every time the server is loaded.

Is the Torus MCP server still maintained?

Torus is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Torus MCP server under?

Torus declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the Torus MCP server?

VerifyMCP ran 14 checks on Torus, covering Known CVEs, Install scripts, Dependency health, Source repository and 10 more. 2 items could not be completed, a gap on our side rather than a finding about Torus: Malware scan and Stability. One category scores 0 for that reason, because we only credit what we can confirm. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.