{"name":"io.github.sekhar14/torus","slug":"sekhar14-torus","title":"Torus","description":"Stock research memory for Claude: theses, sourced claims and SEC filing alerts in a local graph","url":"https://mcp.market/server/sekhar14-torus","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"finance","tags":["finance"],"presence":{"score":33,"stars":1,"forks":0,"downloads_week":273,"last_push_at":"2026-10-24T13:28:32.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/sekhar14/torus","website":"https://github.com/sekhar14/torus","version":"0.4.1","remotes":[],"packages":[{"registryType":"pypi","identifier":"torus-kg","version":"0.4.1","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"value":"serve","type":"positional"}],"environmentVariables":[{"description":"Folder for the research graph and caches (default ~/.torus)","format":"filepath","name":"TORUS_HOME"},{"description":"Which tools to expose: analyst hides queue and maintenance tools (default full)","choices":["analyst","full"],"name":"TORUS_TOOLSET"},{"description":"How eagerly research is recorded","choices":["live","balanced","curator"],"name":"TORUS_CAPTURE_MODE"}]}],"tools":[{"name":"add_event","description":"Record an event and raise alerts on theses it may affect (through the companies involved and their suppliers, customers and competitors).","write_action":false,"price_micros":0,"input_schema":null},{"name":"alert_stats","description":"How useful alerts have been: verdicts, and the share judged related (precision) by source, form, hops and materiality.","write_action":false,"price_micros":0,"input_schema":null},{"name":"audit","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"brief","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_distillation","description":"Finish a leased distillation job (or hand it back if it failed).","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_mapping","description":"Finish a leased mapping job (or hand it back if it failed).","write_action":false,"price_micros":0,"input_schema":null},{"name":"digest","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"filing_diff","description":"What changed in a section of a company's latest filing against the previous one of the same form: new, dropped and reworded sentences.","write_action":false,"price_micros":0,"input_schema":null},{"name":"filing_text","description":"Read a company's SEC filing as text, by section, from EDGAR (cached). Long sections come in pages: pass `next_offset` back as `offset`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_paths","description":"How two entities are connected, e.g. ASML -SUPPLIES-> TSMC -SUPPLIES-> AMD. Shortest and most confident paths first.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_entity","description":"Resolve an entity and list its current relations.","write_action":false,"price_micros":0,"input_schema":null},{"name":"impact","description":"Dry run: which theses would an event on these entities affect, and why? Records nothing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_alerts","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_watches","description":"What the watchers follow: the watchlist, open-thesis entities, feeds.","write_action":false,"price_micros":0,"input_schema":null},{"name":"merge_entities","description":"Fold a duplicate entity into the one to keep; its links move over.","write_action":false,"price_micros":0,"input_schema":null},{"name":"neighbors","description":"The entity's neighbourhood: companies within `hops` links (suppliers, customers, competitors...), the links among them, and theses about them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"next_distillation","description":"Lease the oldest research session waiting to be distilled into the graph.","write_action":false,"price_micros":0,"input_schema":null},{"name":"next_mapping","description":"Lease the next onboarded company to map from its annual report. Until `complete_mapping`, links you record are marked as curator links.","write_action":false,"price_micros":0,"input_schema":null},{"name":"onboard","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"open_explorer","description":"Write the interactive graph explorer HTML file (under TORUS_HOME/explorer.html) and open it in the user's browser.","write_action":true,"price_micros":0,"input_schema":null},{"name":"recall","description":"Prior theses, claims and rejected hypotheses about entities and/or a question.","write_action":false,"price_micros":0,"input_schema":null},{"name":"recent_records","description":"What the most recent research sessions recorded, newest first, and which records can still be undone.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_claim","description":"Record a finding. Facts and metrics need evidence_ids.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_evidence","description":"Record a source. Re-recording the same URI returns the existing record.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_rejected_hypothesis","description":"Record an idea that was checked and ruled out, so it isn't re-explored.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_relation","description":"Link two entities, e.g. TSMC SUPPLIES NVIDIA. Re-recording an existing link updates it (confidence, backing claim, dates) instead of duplicating it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_thesis","description":"Record a conclusion and the claims it rests on.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_alert","description":"Judge an alert after reading the event and the thesis's claims; the thesis is updated accordingly and the change logged with the alert.","write_action":false,"price_micros":0,"input_schema":null},{"name":"retract_claim","description":"Withdraw a claim that turned out to be wrong (kept in history).","write_action":false,"price_micros":0,"input_schema":null},{"name":"scorecard","description":"How tracked theses have done against their benchmarks, their outcomes, and calibration: did the user's confidence match how often they were right?","write_action":false,"price_micros":0,"input_schema":null},{"name":"search","description":"Keyword search over current claims, evidence and theses.","write_action":false,"price_micros":0,"input_schema":null},{"name":"seed_starter_pack","description":"Add a curated starter pack of companies and supplier/competitor links. Never overrides links research recorded.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_thesis_outcome","description":"Record whether a thesis turned out right, wrong or unclear (overrides the automatic outcome; used for calibration).","write_action":false,"price_micros":0,"input_schema":null},{"name":"supersede_claim","description":"Correct a claim: the old version stays in history, the new one is current.","write_action":false,"price_micros":0,"input_schema":null},{"name":"thesis_memo","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"thesis_weak_points","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"timeline","description":"Chronological claims and thesis changes for one entity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"track_thesis","description":"Put a thesis on the scorecard: its return against a benchmark from an entry price and date, in the direction of its stance.","write_action":true,"price_micros":0,"input_schema":null},{"name":"undo_records","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"unwatch","description":"Remove a company from the explicit watchlist.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_thesis","description":"Revise a thesis: status, confidence, the claims it rests on, and its triggers, in one atomic step. Everything is kept in its history.","write_action":true,"price_micros":0,"input_schema":null},{"name":"upsert_entity","description":"Create an entity (or merge into the one with the same canonical_key).","write_action":true,"price_micros":0,"input_schema":null},{"name":"watch","description":"Watch a company: its new SEC filings become events (on the next `torus watch run`). Subjects of open theses are watched automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"what_changed","description":"Everything recorded or revised across the graph since a point in time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"whatif","description":"What if this happened? Which theses would it reach, through which links, and would it raise alerts. Records nothing.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-24T16:17:06.315Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-24T16:17:06.282Z","components":{"code":{"score":25,"max":25,"notes":["78 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 0 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"torus-kg","version":"0.4.1","found":true,"weeklyDownloads":273,"license":"Apache-2.0","dependencyCount":6,"publishedAt":"2026-10-23T12:38:32.311487Z","repositoryUrl":"https://github.com/sekhar14/torus"}],"repo":{"found":true,"owner":"sekhar14","repo":"torus","archived":false,"pushedAt":"2026-10-24T13:28:32Z","stars":1,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/12625861?v=4","ownerCreatedAt":"2015-05-27T11:24:43Z","license":"Apache-2.0"},"icon":{"url":null,"source":"none"},"presence":{"stars":1,"forks":0,"downloadsWeek":273,"license":"Apache-2.0","lastPushAt":"2026-10-24T13:28:32.000Z","score":33}}}},"grade_history":[],"reviews":[]}