Search / io.github.akira231097/artha-council
Artha Council
L0· runs locallyAuditable equity research and fail-closed broker execution for US and Indian cash equities.
v1.4.0 · active · repository · descriptor JSON · versions
Search / io.github.akira231097/artha-council
L0· runs locallyAuditable equity research and fail-closed broker execution for US and Indian cash equities.
v1.4.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"artha-council": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FMP_API_KEY",
"-e",
"FINNHUB_API_KEY",
"-e",
"GOOGLE_API_KEY",
"-e",
"TELEGRAM_BOT_TOKEN",
"-e",
"TELEGRAM_CHAT_ID",
"-e",
"UPSTOX_ACCESS_TOKEN",
"-e",
"UPSTOX_SANDBOX_ACCESS_TOKEN",
"-e",
"KITE_API_KEY",
"-e",
"KITE_ACCESS_TOKEN",
"ghcr.io/akira231097/artha-council-mcp:1.4.0"
],
"env": {
"FMP_API_KEY": "${FMP_API_KEY}",
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}",
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
"TELEGRAM_BOT_TOKEN": "${TELEGRAM_BOT_TOKEN}",
"TELEGRAM_CHAT_ID": "${TELEGRAM_CHAT_ID}",
"UPSTOX_ACCESS_TOKEN": "${UPSTOX_ACCESS_TOKEN}",
"UPSTOX_SANDBOX_ACCESS_TOKEN": "${UPSTOX_SANDBOX_ACCESS_TOKEN}",
"KITE_API_KEY": "${KITE_API_KEY}",
"KITE_ACCESS_TOKEN": "${KITE_ACCESS_TOKEN}"
}
}
}
}claude mcp add artha-council -e "FMP_API_KEY=${FMP_API_KEY}" -e "FINNHUB_API_KEY=${FINNHUB_API_KEY}" -e "GOOGLE_API_KEY=${GOOGLE_API_KEY}" -e "TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}" -e "TELEGRAM_CHAT_ID=${TELEGRAM_CHAT_ID}" -e "UPSTOX_ACCESS_TOKEN=${UPSTOX_ACCESS_TOKEN}" -e "UPSTOX_SANDBOX_ACCESS_TOKEN=${UPSTOX_SANDBOX_ACCESS_TOKEN}" -e "KITE_API_KEY=${KITE_API_KEY}" -e "KITE_ACCESS_TOKEN=${KITE_ACCESS_TOKEN}" -- docker run -i --rm -e FMP_API_KEY -e FINNHUB_API_KEY -e GOOGLE_API_KEY -e TELEGRAM_BOT_TOKEN -e TELEGRAM_CHAT_ID -e UPSTOX_ACCESS_TOKEN -e UPSTOX_SANDBOX_ACCESS_TOKEN -e KITE_API_KEY -e KITE_ACCESS_TOKEN ghcr.io/akira231097/artha-council-mcp:1.4.0[mcp_servers.artha-council]
command = "docker"
args = ["run", "-i", "--rm", "-e", "FMP_API_KEY", "-e", "FINNHUB_API_KEY", "-e", "GOOGLE_API_KEY", "-e", "TELEGRAM_BOT_TOKEN", "-e", "TELEGRAM_CHAT_ID", "-e", "UPSTOX_ACCESS_TOKEN", "-e", "UPSTOX_SANDBOX_ACCESS_TOKEN", "-e", "KITE_API_KEY", "-e", "KITE_ACCESS_TOKEN", "ghcr.io/akira231097/artha-council-mcp:1.4.0"]
env = { "FMP_API_KEY" = "${FMP_API_KEY}", "FINNHUB_API_KEY" = "${FINNHUB_API_KEY}", "GOOGLE_API_KEY" = "${GOOGLE_API_KEY}", "TELEGRAM_BOT_TOKEN" = "${TELEGRAM_BOT_TOKEN}", "TELEGRAM_CHAT_ID" = "${TELEGRAM_CHAT_ID}", "UPSTOX_ACCESS_TOKEN" = "${UPSTOX_ACCESS_TOKEN}", "UPSTOX_SANDBOX_ACCESS_TOKEN" = "${UPSTOX_SANDBOX_ACCESS_TOKEN}", "KITE_API_KEY" = "${KITE_API_KEY}", "KITE_ACCESS_TOKEN" = "${KITE_ACCESS_TOKEN}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"artha-council": {
"type": "local",
"command": [
"docker",
"run",
"-i",
"--rm",
"-e",
"FMP_API_KEY",
"-e",
"FINNHUB_API_KEY",
"-e",
"GOOGLE_API_KEY",
"-e",
"TELEGRAM_BOT_TOKEN",
"-e",
"TELEGRAM_CHAT_ID",
"-e",
"UPSTOX_ACCESS_TOKEN",
"-e",
"UPSTOX_SANDBOX_ACCESS_TOKEN",
"-e",
"KITE_API_KEY",
"-e",
"KITE_ACCESS_TOKEN",
"ghcr.io/akira231097/artha-council-mcp:1.4.0"
],
"enabled": true,
"environment": {
"FMP_API_KEY": "{env:FMP_API_KEY}",
"FINNHUB_API_KEY": "{env:FINNHUB_API_KEY}",
"GOOGLE_API_KEY": "{env:GOOGLE_API_KEY}",
"TELEGRAM_BOT_TOKEN": "{env:TELEGRAM_BOT_TOKEN}",
"TELEGRAM_CHAT_ID": "{env:TELEGRAM_CHAT_ID}",
"UPSTOX_ACCESS_TOKEN": "{env:UPSTOX_ACCESS_TOKEN}",
"UPSTOX_SANDBOX_ACCESS_TOKEN": "{env:UPSTOX_SANDBOX_ACCESS_TOKEN}",
"KITE_API_KEY": "{env:KITE_API_KEY}",
"KITE_ACCESS_TOKEN": "{env:KITE_ACCESS_TOKEN}"
}
}
}
}{
"mcpServers": {
"artha-council": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FMP_API_KEY",
"-e",
"FINNHUB_API_KEY",
"-e",
"GOOGLE_API_KEY",
"-e",
"TELEGRAM_BOT_TOKEN",
"-e",
"TELEGRAM_CHAT_ID",
"-e",
"UPSTOX_ACCESS_TOKEN",
"-e",
"UPSTOX_SANDBOX_ACCESS_TOKEN",
"-e",
"KITE_API_KEY",
"-e",
"KITE_ACCESS_TOKEN",
"ghcr.io/akira231097/artha-council-mcp:1.4.0"
],
"env": {
"FMP_API_KEY": "${FMP_API_KEY}",
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}",
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
"TELEGRAM_BOT_TOKEN": "${TELEGRAM_BOT_TOKEN}",
"TELEGRAM_CHAT_ID": "${TELEGRAM_CHAT_ID}",
"UPSTOX_ACCESS_TOKEN": "${UPSTOX_ACCESS_TOKEN}",
"UPSTOX_SANDBOX_ACCESS_TOKEN": "${UPSTOX_SANDBOX_ACCESS_TOKEN}",
"KITE_API_KEY": "${KITE_API_KEY}",
"KITE_ACCESS_TOKEN": "${KITE_ACCESS_TOKEN}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=artha-council&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCItZSIsIkZNUF9BUElfS0VZIiwiLWUiLCJGSU5OSFVCX0FQSV9LRVkiLCItZSIsIkdPT0dMRV9BUElfS0VZIiwiLWUiLCJURUxFR1JBTV9CT1RfVE9LRU4iLCItZSIsIlRFTEVHUkFNX0NIQVRfSUQiLCItZSIsIlVQU1RPWF9BQ0NFU1NfVE9LRU4iLCItZSIsIlVQU1RPWF9TQU5EQk9YX0FDQ0VTU19UT0tFTiIsIi1lIiwiS0lURV9BUElfS0VZIiwiLWUiLCJLSVRFX0FDQ0VTU19UT0tFTiIsImdoY3IuaW8vYWtpcmEyMzEwOTcvYXJ0aGEtY291bmNpbC1tY3A6MS40LjAiXSwiZW52Ijp7IkZNUF9BUElfS0VZIjoiJHtGTVBfQVBJX0tFWX0iLCJGSU5OSFVCX0FQSV9LRVkiOiIke0ZJTk5IVUJfQVBJX0tFWX0iLCJHT09HTEVfQVBJX0tFWSI6IiR7R09PR0xFX0FQSV9LRVl9IiwiVEVMRUdSQU1fQk9UX1RPS0VOIjoiJHtURUxFR1JBTV9CT1RfVE9LRU59IiwiVEVMRUdSQU1fQ0hBVF9JRCI6IiR7VEVMRUdSQU1fQ0hBVF9JRH0iLCJVUFNUT1hfQUNDRVNTX1RPS0VOIjoiJHtVUFNUT1hfQUNDRVNTX1RPS0VOfSIsIlVQU1RPWF9TQU5EQk9YX0FDQ0VTU19UT0tFTiI6IiR7VVBTVE9YX1NBTkRCT1hfQUNDRVNTX1RPS0VOfSIsIktJVEVfQVBJX0tFWSI6IiR7S0lURV9BUElfS0VZfSIsIktJVEVfQUNDRVNTX1RPS0VOIjoiJHtLSVRFX0FDQ0VTU19UT0tFTn0ifX0%3D"
}{
"servers": {
"artha-council": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FMP_API_KEY",
"-e",
"FINNHUB_API_KEY",
"-e",
"GOOGLE_API_KEY",
"-e",
"TELEGRAM_BOT_TOKEN",
"-e",
"TELEGRAM_CHAT_ID",
"-e",
"UPSTOX_ACCESS_TOKEN",
"-e",
"UPSTOX_SANDBOX_ACCESS_TOKEN",
"-e",
"KITE_API_KEY",
"-e",
"KITE_ACCESS_TOKEN",
"ghcr.io/akira231097/artha-council-mcp:1.4.0"
],
"env": {
"FMP_API_KEY": "${FMP_API_KEY}",
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}",
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
"TELEGRAM_BOT_TOKEN": "${TELEGRAM_BOT_TOKEN}",
"TELEGRAM_CHAT_ID": "${TELEGRAM_CHAT_ID}",
"UPSTOX_ACCESS_TOKEN": "${UPSTOX_ACCESS_TOKEN}",
"UPSTOX_SANDBOX_ACCESS_TOKEN": "${UPSTOX_SANDBOX_ACCESS_TOKEN}",
"KITE_API_KEY": "${KITE_API_KEY}",
"KITE_ACCESS_TOKEN": "${KITE_ACCESS_TOKEN}"
}
}
}
}{
"mcpServers": {
"artha-council": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"FMP_API_KEY",
"-e",
"FINNHUB_API_KEY",
"-e",
"GOOGLE_API_KEY",
"-e",
"TELEGRAM_BOT_TOKEN",
"-e",
"TELEGRAM_CHAT_ID",
"-e",
"UPSTOX_ACCESS_TOKEN",
"-e",
"UPSTOX_SANDBOX_ACCESS_TOKEN",
"-e",
"KITE_API_KEY",
"-e",
"KITE_ACCESS_TOKEN",
"ghcr.io/akira231097/artha-council-mcp:1.4.0"
],
"env": {
"FMP_API_KEY": "${FMP_API_KEY}",
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}",
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
"TELEGRAM_BOT_TOKEN": "${TELEGRAM_BOT_TOKEN}",
"TELEGRAM_CHAT_ID": "${TELEGRAM_CHAT_ID}",
"UPSTOX_ACCESS_TOKEN": "${UPSTOX_ACCESS_TOKEN}",
"UPSTOX_SANDBOX_ACCESS_TOKEN": "${UPSTOX_SANDBOX_ACCESS_TOKEN}",
"KITE_API_KEY": "${KITE_API_KEY}",
"KITE_ACCESS_TOKEN": "${KITE_ACCESS_TOKEN}"
}
}
}
}extensions:
"artha-council":
enabled: true
name: "artha-council"
type: stdio
cmd: "docker"
args:
- "run"
- "-i"
- "--rm"
- "-e"
- "FMP_API_KEY"
- "-e"
- "FINNHUB_API_KEY"
- "-e"
- "GOOGLE_API_KEY"
- "-e"
- "TELEGRAM_BOT_TOKEN"
- "-e"
- "TELEGRAM_CHAT_ID"
- "-e"
- "UPSTOX_ACCESS_TOKEN"
- "-e"
- "UPSTOX_SANDBOX_ACCESS_TOKEN"
- "-e"
- "KITE_API_KEY"
- "-e"
- "KITE_ACCESS_TOKEN"
- "ghcr.io/akira231097/artha-council-mcp:1.4.0"
envs:
"FMP_API_KEY": "${FMP_API_KEY}"
"FINNHUB_API_KEY": "${FINNHUB_API_KEY}"
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}"
"TELEGRAM_BOT_TOKEN": "${TELEGRAM_BOT_TOKEN}"
"TELEGRAM_CHAT_ID": "${TELEGRAM_CHAT_ID}"
"UPSTOX_ACCESS_TOKEN": "${UPSTOX_ACCESS_TOKEN}"
"UPSTOX_SANDBOX_ACCESS_TOKEN": "${UPSTOX_SANDBOX_ACCESS_TOKEN}"
"KITE_API_KEY": "${KITE_API_KEY}"
"KITE_ACCESS_TOKEN": "${KITE_ACCESS_TOKEN}"
timeout: 300
Placeholders to fill from your own secret store: ${FMP_API_KEY}, ${FINNHUB_API_KEY}, ${GOOGLE_API_KEY}, ${TELEGRAM_BOT_TOKEN}, ${TELEGRAM_CHAT_ID}, ${UPSTOX_ACCESS_TOKEN}, ${UPSTOX_SANDBOX_ACCESS_TOKEN}, ${KITE_API_KEY}, ${KITE_ACCESS_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured ~updated-69d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/akira231097/artha-council-mcp:1.4.0 | oci | unpinned | – | FMP_API_KEY, FINNHUB_API_KEY, GOOGLE_API_KEY, TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID, UPSTOX_ACCESS_TOKEN, UPSTOX_SANDBOX_ACCESS_TOKEN, KITE_API_KEY, KITE_ACCESS_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.akira231097/artha-council",
"title": "Artha Council",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "1.4.0",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/akira231097/artha-council-mcp:1.4.0",
"registryType": "oci",
"environmentVariables": [
{
"name": "ARTHA_MCP_MARKET",
"format": "string",
"description": "Market profile: US or IN."
},
{
"name": "ARTHA_MCP_BROKER",
"format": "string",
"description": "Broker adapter: snapshot, upstox, zerodha, none, or plugin."
},
{
"name": "ARTHA_MCP_RESEARCH_MODE",
"format": "string",
"description": "Research boundary: embedded, host_orchestrated, or plugin. India should use host_orchestrated or a market-native plugin."
},
{
"name": "ARTHA_MCP_DATA_DIR",
"format": "string",
"description": "Persistent directory for journals, receipts, jobs, portfolio state, and audit artifacts."
},
{
"name": "ARTHA_MCP_ACCESS_MODE",
"format": "string",
"description": "Capability mode: read_only, operator, or trading. Defaults to read_only."
},
{
"name": "ARTHA_MCP_OPERATIONS_ENABLED",
"format": "string",
"description": "Explicit operations switch. Defaults to false."
},
{
"name": "ARTHA_MCP_TRADING_ENABLED",
"format": "string",
"description": "Explicit live-trading switch. Defaults to false."
},
{
"name": "ARTHA_MCP_KILL_SWITCH",
"format": "string",
"description": "Final MCP placement kill switch. Defaults to true."
},
{
"name": "ARTHA_MCP_MAX_ORDER_VALUE",
"format": "string",
"description": "Maximum value of one order in the selected market currency. Defaults to 25 USD or 2500 INR."
},
{
"name": "ARTHA_MCP_MAX_DAILY_ORDER_VALUE",
"format": "string",
"description": "Maximum total daily order value in the selected market currency. Defaults to 50 USD or 5000 INR."
},
{
"name": "ARTHA_MCP_MAX_DAILY_ORDERS",
"format": "string",
"description": "Maximum number of broker placements per market day. Defaults to 2."
},
{
"name": "ARTHA_MCP_MAX_PENDING_JOBS",
"format": "string",
"description": "Maximum queued or running allowlisted workflows. Defaults to 8 and prevents an unbounded work queue."
},
{
"name": "FMP_API_KEY",
"format": "string",
"isSecret": true,
"description": "Optional Financial Modeling Prep key for embedded US research."
},
{
"name": "FINNHUB_API_KEY",
"format": "string",
"isSecret": true,
"description": "Optional Finnhub key for embedded US research enrichment."
},
{
"name": "GOOGLE_API_KEY",
"format": "string",
"isSecret": true,
"description": "Optional Google Gemini key for embedded Council roles and web-grounded research."
},
{
"name": "TELEGRAM_BOT_TOKEN",
"format": "string",
"isSecret": true,
"description": "Optional Telegram bot token for Artha notifications."
},
{
"name": "TELEGRAM_CHAT_ID",
"format": "string",
"isSecret": true,
"description": "Optional Telegram destination used with TELEGRAM_BOT_TOKEN."
},
{
"name": "UPSTOX_ACCESS_TOKEN",
"format": "string",
"isSecret": true,
"description": "Upstox live account/read token used for portfolio, quote, margin, and fee proof."
},
{
"name": "UPSTOX_SANDBOX_ACCESS_TOKEN",
"format": "string",
"isSecret": true,
"description": "Separate Upstox sandbox token, required only when ARTHA_UPSTOX_SANDBOX=true."
},
{
"name": "ARTHA_INDIA_STATIC_IP_REGISTERED",
"format": "string",
"description": "Operator attestation that this deployment IP is registered with the selected Indian broker."
},
{
"name": "ARTHA_INDIA_DEMAT_SELL_AUTHORIZED",
"format": "string",
"description": "Operator attestation that required demat authorization is valid for Indian delivery sells."
},
{
"name": "ARTHA_UPSTOX_ALGO_NAME",
"format": "string",
"description": "Optional exchange-approved algo name configured in the Upstox app."
},
{
"name": "KITE_API_KEY",
"format": "string",
"isSecret": true,
"description": "Required only for the Zerodha adapter."
},
{
"name": "KITE_ACCESS_TOKEN",
"format": "string",
"isSecret": true,
"description": "Required only for the Zerodha adapter."
}
]
}
],
"repository": {
"url": "https://github.com/akira231097/artha-council",
"source": "github"
},
"description": "Auditable equity research and fail-closed broker execution for US and Indian cash equities."
}