Inderes Mcp Agent System

finance MCP Server

Personal research project — multi-agent Nordic stock research on Microsoft Agent Framework + Google Gemini, querying Inderes Premium MCP. Not affiliated with Inderes.

Verified
financefinancegcp
3 views0 stars0 forks

Why This Matters

Discovered via github-topic:mcp and last synced 3mo ago.

Verified
Source
github-topic:mcp
Stars
0
Last synced
3mo ago
Install
Check source

Install

Install instructions not detected yet

Check the source repository for the latest setup steps.

View source instructions
10
Tools
0
Resources
0
Prompts
Standard I/O
Transport

Available Tools (10)

aino-quant

Numerical analysis: P/E, ROE, target prices, recommendations

aino-sentiment

Insider trades, forum, calendar

aino-research

Inderes' analyst content, transcripts, filings

Command

Action

Requirement

Details

Model

Requests/day

aino-lead

Synthesizes subagent outputs (no tools)

Role

MCP tools

aino-portfolio

Inderes' own model portfolio

Quit

### Programmatic use ```python import asyncio from inderes_agent.cli.repl import ConversationState, handle_query async def main(): state = ConversationState() await handle_query("Mikä on Konecranesin P/E?", state) asyncio.run(main()) ``` See [`examples/`](examples/) for a single-question script and a multi-turn conversation example. --- ## Per-run logs Every query writes a complete forensic record to `~/.inderes_agent/runs/<timestamp>/`: ``` 20260501-205122-776/ ├── query.txt # the user's question ├── routing.json # which subagents the router picked, plus reasoning ├── subagent-01-quant.json ├── subagent-02-research.json ├── subagent-03-sentiment.json ├── synthesis.txt # lead's final synthesized answer ├── meta.json # duration, fallback events, error counts ├── console.log # raw HTTP/MCP/fallback log lines with timestamps └── narrative.md # human-readable timeline (auto-generated) ``` `narrative.md` is the single best file to inspect afterward. It includes: 1. **Routing decision** with the router's reasoning 2. **Tool-call timeline** with offsets and per-call duration, attributed by agent 3. **Each subagent's full output** (the structured response it returned to the lead) 4. **Lead's synthesis** (what the user saw) 5. **Statistics footer** — agents · tool calls · errors · 503 retries · fallbacks · total duration You can regenerate the narrative for any past run via: ```bash python scripts/explain.py # latest run python scripts/explain.py 20260501-205122-776 # specific run ``` In the REPL: `/explain` does the same for the current session's last run. --- ## Architecture at a glance ``` User question │ ▼ ┌─────────────┐ │ Router LLM │ Gemini, structured-output JSON └─────┬───────┘ │ ┌─────────┼─────────┬──────────┬──────────┐ ▼ ▼ ▼ ▼ ▼ aino-quant aino-research aino-sentiment aino-portfolio aino-valuation │ │ │ │ │ └─────────┴─────────┴──────────┴──────────┘ │ ▼ bounded by MAX_CONCURRENT_AGENTS Inderes MCP (16 tools, partitioned) │ ▼ ┌─ valuation/ ──── deterministic engine │ │ (pure Python, Greenwald-Gordon │ │ formulas, no LLM dependency) │ └─ runs after agent emits JSON ▼ ┌──────────────────────┐ │ Conflict detector │ flags disagreements between │ (Gemini, JSON output)│ subagents before synthesis └─────────┬────────────┘ ▼ ┌─────────────┐ │ aino-lead │ reads subagent outputs + └─────┬───────┘ conflict report, synthesizes ▼ Final answer ``` ### Subagent → MCP tool mapping