Artha Council

io.github.akira231097Published by GitHub account akira231097v1.4.0Updated Oct 24, 2026

Auditable equity research and fail-closed broker execution for US and Indian cash equities.

Overview

AI-generated overview

Local MCP server for auditable US and Indian equity research, Council-style analyst debate, portfolio monitoring and gated broker order execution.

What you can do
Screen a broad stock universe, rank candidates and route them by broker feasibility and data quality (funnel, broker router, opportunity scout). Run independent fundamental, technical and risk analyst roles that debate candidates, with CIO synthesis and score audit. Monitor held positions and theses, trigger stop or invalidation reviews and hold/trim/exit sell decisions. Reason about execution in stages and pass orders through deterministic broker review, placement gates, receipts and post-fill reconciliation. Track portfolio capacity, buy pauses, execution quality and health checks, with optional Telegram notifications.
When to use it
For users who want an assistant to help with stateful equity research, thesis tracking and portfolio monitoring on US or Indian cash equities, and who may later enable broker-backed order placement under explicit limits.
Requirements
Runs as a local stdio process (container image provided); README lists Python 3.12+ and Node.js 20+ for the full project. A persistent data directory (ARTHA_MCP_DATA_DIR) and market profile (ARTHA_MCP_MARKET). Optional keys: FINNHUB_API_KEY, FMP_API_KEY, GOOGLE_API_KEY, TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID; broker tokens UPSTOX_ACCESS_TOKEN, UPSTOX_SANDBOX_ACCESS_TOKEN, KITE_API_KEY and KITE_ACCESS_TOKEN only for those adapters. Network access to data providers and brokers.
Before you install
Can place real broker orders once ARTHA_MCP_TRADING_ENABLED and ARTHA_MCP_OPERATIONS_ENABLED are enabled; defaults are read-only with the kill switch (ARTHA_MCP_KILL_SWITCH) engaged. Order caps (ARTHA_MCP_MAX_ORDER_VALUE, ARTHA_MCP_MAX_DAILY_ORDER_VALUE, ARTHA_MCP_MAX_DAILY_ORDERS) and India attestations (ARTHA_INDIA_DEMAT_SELL_AUTHORIZED, ARTHA_INDIA_STATIC_IP_REGISTERED) must be reviewed. Broker and provider tokens are powerful secrets; the README states it is research software, not financial,

Installation

In SourceWeft

  1. Open Artha Council in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Artha Council

[Artha CI] [CodeQL] [OpenSSF Scorecard] [License]

Artha is an AI-assisted equity research and portfolio automation system. It narrows a broad US-stock universe, ranks opportunities, asks independent analyst roles to debate the strongest candidates, monitors active investment theses, and uses deterministic broker gates before an order can proceed.

Version 1.4 hardens the MCP server with source/build provenance for portable local or OAuth-protected remote access. It supports the existing US workflow and market-aware broker adapters for Indian cash equities without treating US research as India data. India adapters provide broker-verified instrument lookup and fail-closed, whole-share delivery limit execution with current static-IP requirements.

Created and maintained by Sarath (@akira231097).

See the design notes and architecture diagram for a visual walkthrough of the research, Council, execution, and audit boundaries.

Artha is research software, not financial advice. Public defaults cannot place live trades. Anyone enabling broker integration is responsible for reviewing the source, their configuration, broker terms, and applicable requirements.

Why Artha Exists

Most stock screeners stop after ranking tickers. Artha treats investing as a stateful operating system:

  1. Find candidates from a large universe.
  2. Verify data quality and execution feasibility.
  3. Give scarce Council attention to the strongest candidates.
  4. Separate investment judgment from order execution.
  5. Monitor every held thesis and send material changes to a sell Council.
  6. Reconcile intended actions against broker state.
  7. Preserve evidence and state transitions for audit.

System Pipeline

text
Market data providers  -> universe and promotion funnel  -> investment sanity checks  -> broker-aware candidate router  -> opportunity scout  -> fundamental / technical / risk analysts  -> CIO synthesis  -> execution officer  -> deterministic broker review and placement gates  -> reconciliation, thesis tracking, Telegram, supervisor

The sell side runs independently of new-buy capacity:

text
Portfolio snapshot  -> position and thesis monitor  -> deterministic stop / invalidation triggers  -> sell Council for judgment decisions  -> execution officer  -> broker review and exact-order placement gate  -> post-fill reconciliation

Important Design Rules

Research is not execution

The Council answers: "Is this investment attractive?"

The execution layer answers: "Can this exact order be placed safely now?"

A good company can be temporarily unbuyable because the quote is stale, the spread is too wide, the price moved above the approved cap, or broker review is incomplete. Those conditions do not rewrite the investment thesis.

Missing broker proof blocks an order

Money-moving paths fail closed. A model statement that a check passed is not enough; Artha requires the decisive structured broker output.

Portfolio monitoring continues when buys pause

Position limits and invested-capacity limits pause new buys only. Monitoring, sell review, reconciliation, health checks, and alerts continue running.

Major Components

  • artha/funnel.py - broad-universe promotion and multi-sleeve ranking.
  • artha/broker_router.py - quote, liquidity, tradability, and data feasibility.
  • artha/opportunity_scout.py - agentic pre-Council evidence review and ranking.
  • artha/council.py - analyst roles, score audit, and CIO synthesis.
  • artha/execution_officer.py - Stage A and Stage B execution reasoning.
  • artha/alpha_shadow.py - non-authoritative alpha experiments and outcome tracking.
  • artha/broker_capacity.py - portfolio and daily buy-capacity calculations.
  • artha/stand_down.py - buy-only pause and next-session reset behavior.
  • artha/sell_engine.py - position triggers and sell-side orchestration.
  • artha/sell_council.py - hold, trim, and exit review.
  • artha/position_classification.py - broker-position sector and industry repair.
  • artha/execution_learning.py - post-trade execution-quality measurements.
  • artha/fill_finalizer.py - broker-fill accounting and idempotent state finalization.
  • artha/robinhood_bridge.py - broker handoff, review, clearance, and reconciliation.
  • artha/scheduler.py - scheduled scans and lifecycle orchestration.
  • artha/supervisor.py - production health and readiness checks.
  • artha_mcp/ - MCP tools, resources, prompts, authorization, jobs, redaction, research adapters, exact-order receipts, and broker reconciliation.
  • dashboard/ - local operator dashboard.

See Architecture for the complete component map.

Quick Start

Requirements: Python 3.12 or newer and Node.js 20 or newer.

bash
git clone https://github.com/akira231097/artha-council.gitcd artha-councilpython -m venv .venvsource .venv/bin/activatepython -m pip install --upgrade pippip install -e .npm cicp .env.example .env

Add your own provider credentials to .env. Keep every Robinhood setting at its safe default while evaluating the system.

bash
python run.py overviewpython run.py analyze AAPL MSFT Vpython run.py broker-router-preview --assume-market-open --no-persistpython run.py superviseartha-mcp --check

MCP

Connect any MCP-compatible host through local stdio using .mcp.json.example, or deploy stateless Streamable HTTP behind OAuth and TLS. The server starts read-only with its kill switch engaged.

bash
artha-mcp

The user supplies their own model subscriptions, data subscriptions, broker credentials, and notification credentials. The MCP server never provides or shares the maintainer's accounts. See Artha MCP and India Support for the exact capability and safety boundary. See MCP Updates for release fingerprints, rolling versus stable channels, and the fail-closed local-source promotion path.

Verification

bash
python -m compileall -q artha artha_mcp dashboard run.pypython -m unittest discover -s tests -t . -vpython scripts/check_release_integrity.pypython -m artha.test_enhancementspython -m artha.test_alpha_pipeline_hardeningpython -m artha.test_production_hardeningpython -m artha.test_feedback_loop_hardening

Tests use synthetic fixtures and must not require real broker credentials.

Docker

The included image supports the core Python research CLI:

bash
docker build -t artha-council .docker run --rm --env-file .env artha-council overview

The broker snapshot helper is intentionally outside this minimal Python image; it requires a separately configured Node.js MCP runtime and broker access.

Dockerfile.mcp builds the non-root MCP image. The main image tag is refreshed after each tested default-branch update; release versions remain immutable.

Public Release Boundary

This repository contains source, tests, documentation, and safe configuration templates. It intentionally excludes:

  • API keys, OAuth tokens, and .env files
  • broker account identifiers and snapshots
  • portfolios, order history, and transaction records
  • SQLite journals and runtime state
  • generated dossiers, traces, reports, and logs
  • Telegram tokens, chat identifiers, and callback tokens
  • local OpenClaw, launchd, and workstation configuration
  • third-party market-data payloads

Third-party data and services remain governed by their own licenses and terms. The Apache license covers Artha's source code, not provider data or broker access.

Project Documents

License and Citation

Artha Council is licensed under Apache License 2.0. Distributed copies and modifications must retain the applicable license, copyright, and attribution notices described in NOTICE.

Use CITATION.cff to cite the project. GitHub exposes it through the repository's Cite this repository control.

Source: README.md at commit bc3ef17

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.4.0LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts