{"name":"io.github.longsizhuo/openinvest","slug":"longsizhuo-openinvest","title":"openInvest","description":"Investment runtime for AI agents — LLM investment committee, portfolio ledger, decision accounting","url":"https://mcp.market/server/longsizhuo-openinvest","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"finance","tags":["finance","ai"],"presence":{"score":34,"stars":85,"forks":13,"downloads_week":null,"last_push_at":"2026-09-24T15:00:04.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/longsizhuo/openInvest","website":null,"version":"0.34.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"openinvest","version":"0.34.0","runtimeHint":"uvx","transport":{"type":"stdio"},"packageArguments":[{"description":"Run the stdio MCP server (18 tools)","value":"mcp","type":"positional"}],"environmentVariables":[{"description":"Data directory for portfolio/ledgers/.env (default: ~/openInvest)","format":"string","name":"INVEST_HOME"}]}],"tools":[{"name":"add_news_source","description":"Add an RSS/Atom feed to the crawler's source list. The URL is live-probed before saving — a URL that doesn't parse as a feed is rejected. Idempotent: re-adding an existing URL returns the existing entry. Capped so the list can't grow unbounded.","write_action":false,"price_micros":0,"input_schema":null},{"name":"buy","description":"Record a buy in the local ledger: adds to an existing position with weighted-average cost, or opens a new position for an unseen symbol. This bookkeeps a trade the user already placed with their broker — openInvest never places real orders.","write_action":true,"price_micros":0,"input_schema":null},{"name":"decisions","description":"Get the unified decision ledger: every committee verdict joined with rule interventions, the user's actual executions or refusals (with reasons), and post-hoc outcome data — plus an adoption-rate summary.","write_action":false,"price_micros":0,"input_schema":null},{"name":"deposit","description":"Record a cash deposit into the ledger, in any currency. Bookkeeping only — no real payment system is connected.","write_action":false,"price_micros":0,"input_schema":null},{"name":"discipline","description":"Get the committee's discipline ledger: how often it chose inaction (HOLD ratio), how many impulsive user trades its rules intercepted, and the counterfactual money saved/lost by those interventions (ADR-023: the system's proven value is discipline and transparency, not alpha).","write_action":false,"price_micros":0,"input_schema":null},{"name":"explain_decision","description":"Get the full reasoning behind one committee verdict: the complete 4-role debate transcript with the CIO memo, plus the path-probability snapshot the CIO saw at decision time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"history","description":"Get the most recent trade records and committee verdict history.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ingest_event","description":"Feed a finance news item you (the host agent) found into the event ledger. The backend LLM normalizes it, grades severity, maps affected symbols, and stores it for committee RAG recall.","write_action":false,"price_micros":0,"input_schema":null},{"name":"live_prices","description":"Fetch a one-shot market backdrop: spot gold (USD/oz and CNY/gram), USDCNY and AUDCNY FX rates, the NDQ.AX ETF price, the VIX volatility index, and the 10-year US Treasury yield (TNX).","write_action":false,"price_micros":0,"input_schema":null},{"name":"news_sources","description":"List the news feed sources the crawler pulls from: the built-in default feeds plus user-added extra feeds. Extra feeds can be added/removed with add_news_source / remove_news_source; defaults are fixed.","write_action":false,"price_micros":0,"input_schema":null},{"name":"record_execution","description":"Record whether the user executed or declined a committee verdict, with their reason. Appends to the execution ledger; idempotent — replaying the same record is a no-op, so retries are safe.","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_news_source","description":"Remove a user-added news feed by name or URL. Built-in default feeds cannot be removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_committee","description":"Run the 4-role LLM investment committee on a symbol (Direct path): Macro Strategist, Quant Analyst, and Risk Officer debate from isolated evidence, then a CIO synthesizes one calibrated BUY/HOLD/SELL-style verdict with a written memo.","write_action":true,"price_micros":0,"input_schema":null},{"name":"sell","description":"Record a sell in the local ledger: reduces the position's units (average cost unchanged) and credits cash in the holding's cost currency. Bookkeeps a trade already executed at the user's broker — openInvest never places real orders.","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_allocations","description":"Update the strategy's target stock/cash allocation ratio. The two values must sum to ≈1.0; schema validation rejects and rolls back any write that would corrupt the strategy file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"status","description":"Get a full snapshot of the user's portfolio: cash balances per currency, every holding with units / average cost / live price, and unrealized P&L per position and in total.","write_action":false,"price_micros":0,"input_schema":null},{"name":"strategy","description":"Get the user's investment strategy: target stock/cash allocation, the list of tracked assets (per-asset investment cap, purchase channel, fee settings), and long-term insights distilled by the nightly Dreaming memory-consolidation job.","write_action":false,"price_micros":0,"input_schema":null},{"name":"track_asset","description":"Add a symbol to the tracked-asset list, or update an existing entry (idempotent upsert: only the fields you pass are changed). The tracked list decides which symbols the committee and DCA jobs cover.","write_action":false,"price_micros":0,"input_schema":null},{"name":"untrack_asset","description":"Remove a symbol from the tracked-asset list — the committee and DCA jobs stop covering it. Holdings and trade history are untouched; schema validation guarantees at least one tracked asset remains.","write_action":true,"price_micros":0,"input_schema":null},{"name":"what_if","description":"Simulate portfolio P&L for a hypothetical price move: \"what happens to my portfolio if <symbol> moves ±pct% / reaches <price>\". Pure arithmetic over current holdings — no LLM call, instant, free.","write_action":false,"price_micros":0,"input_schema":null},{"name":"withdraw","description":"Record a cash withdrawal from the ledger, in any currency. Fails if the balance is insufficient. Bookkeeping only — no real payment system is connected.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-24T21:43:39.240Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T21:43:38.914Z","components":{"code":{"score":25,"max":25,"notes":["169 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":"openinvest","version":"0.34.0","found":true,"license":"MIT","dependencyCount":21,"publishedAt":"2026-07-24T05:31:37.425291Z","repositoryUrl":"https://github.com/longsizhuo/openInvest"}],"repo":{"found":true,"owner":"longsizhuo","repo":"openInvest","archived":false,"pushedAt":"2026-09-24T15:00:04Z","stars":85,"forks":13,"openIssues":13,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/114939201?v=4","ownerCreatedAt":"2022-10-03T15:41:27Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/114939201?v=4&s=128","source":"github"},"presence":{"stars":85,"forks":13,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-24T15:00:04.000Z","score":34}}}},"grade_history":[],"reviews":[]}