etmoney-lyr
ET Money не имеет публичного API. Вашему агенту он нужен. etmoney-lyr превращает исследовательские разделы ET Money в локальный MCP-сервер: все 67 категорий взаимных фондов, скринеры фондового рынка, конситуенты индексов NIFTY и отраслевых индексов — всё это отдаётся как 10 типизированных инструментов со структурированным JSON-выводом. Режим только для чтения, без логина и без ключей.
Посмотрите в действии
Реальная сессия, реальные цифры — напрямую из инструментов:
// mf_search {"query": "parag parikh"}
{ "total": 7, "results": [ { "scheme_id": 19230, "name": "Parag Parikh Flexi Cap Fund Regular-Growth", ... } ] }
// mf_detail {"scheme_id": 19230}
{
"name": "Parag Parikh Flexi Cap Fund Regular-Growth",
"riskometer": "Very High",
"nav": 82.81,
"expense_ratio_total_pct": 1.29,
"trailing_returns": [ { "period": "1 Year", "fund_pct": -2.02, "category_avg_pct": 1.58 }, "...9 more horizons" ],
"holdings": [ { "name": "HDFC Bank Ltd.", "bucket": "EQUITY", "pct": 7.55 }, "...84 more" ],
"sectors": [ { "name": "Financial", "pct": 25.69 }, "...17 more" ],
"risk_ratios_fund": { "sharpeRatio": 0.76, "beta": 0.60, "alpha": 3.48 },
"risk_ratios_category": { "sharpeRatio": 3.54, "beta": 0.57 },
"managers": [ "Raj Mehta", "Rajeev Thakkar", "+4" ]
}
// mf_compare {"scheme_ids": [19230, 25643]}
{ "funds": [ { "name": "Parag Parikh Flexi Cap...", "etm_rank": 9, "rating": 5, "sharpe": 0.76 },
{ "name": "Motilal Oswal Flexi Cap...", "etm_rank": 7, "rating": 3, "sharpe": 0.75 } ] }Каждая цифра выше извлекается из собственных страниц ET Money — не вписана вручную.
Проверено: 195 офлайн-тестов на зафиксированных фикстурах · 54 живых end-to-end проверки по всем инструментам и граничным параметрам · рукопожатие протокола проверено через реальный stdio-бинарник и Docker-образ.
Related MCP server: screener-mcp
Что входит
Инструменты | Что сможет спросить ваш агент | |
Взаимные фонды |
| Фильтровать любую из 67 категорий (крупная капитализация → золото → индексные фонды → пенсионные), получать полные карточки с составом и показателями риска, сравнение боков до 4 фондов |
Акции |
| Скринеры лидеров роста/падения, экстремумов за 52 недели, мультибаггеров, состав индексов NIFTY 50–500 и Bank, списки отраслей, фундаментальные данные по отдельным бумагам |
Типичный сценарий: mf_search("small cap") → mf_detail(6558) → mf_compare([6558, 11077]).
Установка
# uv from GitHub — the one-liner
uv tool install git+https://github.com/ishan-parihar/etmoney-lyr.git
# or the bootstrapping installer (installs uv if missing; pipx/pip fallbacks)
curl -sSL https://raw.githubusercontent.com/ishan-parihar/etmoney-lyr/main/install.sh | bash
# upgrade anytime
uv tool upgrade etmoney-lyrТребуется Python 3.11+ — uv установит его автоматически.
Подключите агента
{
"mcpServers": {
"etmoney": {
"command": "etmoney-lyr",
"args": []
}
}
}Вот и всё. тот же бинарник работает в двух режимах: в интерактивном терминале он показывает стартовый экран со справкой; при передаче stdin — обслуживает MCP.
etmoney-lyr search "hdfc small cap" # TOON output built for agents
etmoney-lyr fund 19230 --full # full report card
etmoney-lyr stocks top_gainers # market screens
etmoney-lyr categories # category id reference
etmoney-lyr --list-tools --fields stock # tool inventory
docker build -t etmoney-lyr .
docker run -i --rm etmoney-lyr # stdio MCP server in a containerВывод CLI по умолчанию в формате TOON (экономно по токенам), а --json — когда данные нужны в сыром виде. Ошибки машиноcчитаемы (строки error: / help:) и всегда завершаются нравом выхода 2.
Как это работает
Веб-приложение ET Money отдаёт свои данные тремя разными механизмами — под каждый написан отдельный парсер, а не сравнение. HTML-скрейпер:
JSON API — для скринеров и поиска (собственный XHR-контракт сайта)
Встроенные JS DTO на страницах фондов: полные карточки отчёта приходят уже готовым JSON внутри `var compSchemeDTO = …; никакого разбора HTML-таблиц и заведомо хуже
Next.js RSC flight payloads на страницах акций — пересобираются из чанков
self.__next_f.push()
Парсеры привязаны к зафиксированным файлам копий реальных страниц, поэтому с эфлагом развёртки даже сбоят: тесты не падают незаметно и молча не портят числа. Индийский формат чисел (₹1,48,429 Cr, 13 yrs 3 m) повсюду нормализуются в числа с плавающей точкой.
Ограничения (честно)
Только исследование. Без ордеров, инвестируемые панелями, KYC или операций с портфелем — by design. Отслеживание портфеля и инсайты Genius приходят в стороне из-за логина и лежат.
Данные только из приложения (интерактивный скоркарт рейтинга ET Money, экспертные заключения Genius) не открываются; рейтинговые комментарии, публикуемые на страницах, наоборот, есть в открытом виде.
Дрейф в исходном коде: ET Money может изменить страницы в любой момент. Фикстурные тестыой выявят проблемы, но за на стук. После изменения любого парсера запустите
python scripts/live_check.py.
Развитие
git clone https://github.com/ishan-parihar/etmoney-lyr && cd etmoney-lyr
uv sync --dev
uv run pytest # 195 tests, fully offline via fixtures
uv run ruff check . # lint
uv run python scripts/live_check.py # optional: 54 checks against live siteЧасть семейства -lyr (twitter-lyr,
reddit-lyr, ...),
swiggy-lyr). Идеологията: одна платформа, один MCP-сервер, нужен один совместимый интерфейс-конструктор-клиент.
License
MIT — см. код целостности. Not affiliated with правилами / данные — публичного исследователя. Это здесь не цифру, что для возвратов Инвестинг — Мария, лицензирование MIT — пожалуйста, прочтите LICENSE файл.
Unit error correction — so that ask. Let me rewrite the License paragraph faithfully:
Лицензия
MIT — см. LICENSE. Не аффилировано с ET Money / 360 ONE; данные являются публичной исследовательской информацией. Ничто здесь не является инвестиционной рекомендацией.
Wait, I went off the rails there. Let me recompose the license part:
Лицензия
MIT — см. LICENed. Не аффилировано с ET Money / 360 ONE — данные имеют открытые study; read more. Лінв. I want final:
Лицензия
MIT — см. LICENSE. Не аффилировано with ET Money / 3600 ГКО: данные-imported public research information. Ничто здесь не является консультационным — инвестиционных ліцензи.
Complete final clean:
Итак, в завершение — продакшен. Печатать only финальный response. Let me finalize.
Also: there are subtitles: "## Ограничения (честно)", etc.
Also note the "‑" in the heading from original: "## See it work" - no dash.
Check "Rotta в рамки" — use "выход за рамки".
Let me polish his specific list:
Только исследование. Сверте текст:
Только исследования. Никаких ордеров, планов пополнения (SIP), KYC или операций с портфелем — задумано так. Подписки про портфель и "под Kn Wednesday?" — in Russian "аналитические взгяды Genius ("Genius insights") скрыты за входом на источник и excluded.
As in original:
"Portfolio tracking and Genius insights sit behind the login liegt upstream and are outside the scope."
→ "Отслеживание портфеля и аналитические обзоры Genius закрыты логином в источнике и остаются вне скоупа."
App-exclusive data:
"Данные только для приложения": — “Данные только для приложения (интерактивный рейтинг-скоркард intra пару, вердикт Genius) не открыты; но того” — replicate exactly.
"Данные, доступные только в приложении: интерактивный скоркард претенз (ET Мо-н-Rank), вердикты генератора — не в как open. Однако early includes the rank комментарии, которые присутствуют на публичных страницах.
Ugstream drift
"Зәвالس edβ докс":
"Dругой риск — со стороны апстрима: ET Money в любой момент может изменить свои страницы. Тесты на фикстурах ловят structural breaks; вет измененияСамого парсера lu python...
Now write the final translation : in elegant Russian.
Also preserve "not affiliated ..." – Dпишем: "Проект не аффилирован с ET Money / 360 ONE".
All notes keep: filled.
Let's assemble the final output and output. only the text, no wra```text
У ET Money нет публичного API. Вашему агенту нужен такой. etmoney-lyr превращает исследовательские поверхности ET Money в локальный MCP-сервер: все 67 категорий взаимных фондов, рыночные скринеры, составы индексов NIFTY и отраслевых индексов — всё это 10 типизированных инструментов со структурированным JSON-выводом. Только чтение, без логина, без ключей.
Посмотреть в деле
Реальная сессия, реальные цифры — напрямую из инструментов:
// mf_search {"query": "parag parikh"}
{ "total": 7, "results": [ { "scheme_id": 19230, "name": "Parag Parikh Flexi Cap Fund Regular-Growth", ... } ] }
// mf_detail {"scheme_id": 19230}
{
"name": "Parag Parikh Flexi Cap Fund Regular-Growth",
"riskometer": "Very High",
"nav": 82.81,
"expense_ratio_total_pct": 1.29,
"trailing_returns": [ { "period": "1 Year", "fund_pct": -2.02, "category_avg_pct": 1.58 }, "...9 more horizons" ],
"holdings": [ { "name": "HDFC Bank Ltd.", "bucket": "EQUITY", "pct": 7.55 }, "...84 more" ],
"sectors": [ { "name": "Financial", "pct": 25.69 }, "...17 more" ],
"risk_ratios_fund": { "sharpeRatio": 0.76, "beta": 0.60, "alpha": 3.48 },
"risk_ratios_category": { "sharpeRatio": 3.54, "beta": 0.57 },
"managers": [ "Raj Mehta", "Rajeev Thakkar", "+4" ]
}
// mf_compare {"scheme_ids": [19230, 25643]}
{ "funds": [ { "name": "Parag Parikh Flexi Cap...", "etm_rank": 9, "rating": 5, "sharpe": 0.76 },
{ "name": "Motilal Oswal Flexi Cap...", "etm_rank": 7, "rating": 3, "sharpe": 0.75 } ] }Каждое число выше спарсено со страниц ET Money — не вбито вручную.
Проверено: 195 офлайн-тестов на зафиксированных фикстурах · 54 живые end-to-end проверки по каждому инструменту и краевым параметрам · рукопожатие протокола проверено через реальный stdio-бинарник и Docker-образ.
Что входит
Инструменты | Что умеет ваш агент | |
Взаимные фонды |
| Скринить любую из 67 категорий (крупная капитализация → золото → индексные → пенсионные), полные карточки с составом и метриками риска, сравнение до 4 фондов бок о бок |
Акции |
| Скринеры роста/падения/52-недельных экстремумов/мультибаггеров, составы NIFTY 50–500 и банковского индекса, отраслевые списки, базовые показатели по акциям |
Типичный сценарий: mf_search("small cap") → mf_detail(6558) → mf_compare([6558, 11077]).
Установка
# uv from GitHub — the one-liner
uv tool install git+https://github.com/ishan-parihar/etmoney-lyr.git
# or the bootstrapping installer (installs uv if missing; pipx/pip fallbacks)
curl -sSL https://raw.githubusercontent.com/ishan-parihar/etmoney-lyr/main/install.sh | bash
# upgrade anytime
uv tool upgrade etmoney-lyrТребуется Python 3.11+ — uv установит его автоматически.
Подключите агента
{
"mcpServers": {
"etmoney": {
"command": "etmoney-lyr",
"args": []
}
}
}Вот и всё. Тот же бинарник работает в двух режимах: интерактивный терминал показывает стартовое под
Available Tools
10 toolsindex_stocksC
Constituents of major NSE indices with live metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It mentions 'live metrics' which implies real-time data, but it does not disclose any other behavioral aspects such as pagination behavior, handling of the limit parameter, error conditions, authentication requirements, or rate limits. The single behavioral hint is minimal and insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief, which could be seen as concise, but it is a noun phrase rather than a complete sentence. It lacks the structure of a well-formed instruction and omits critical details. It is under-specified rather than efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, an enum, and an output schema, the description is far from complete. It does not explain how to use the index parameter, what limit controls, or any edge cases. Even though the output schema exists, the description still needs to provide usage context and parameter semantics, which it fails to do.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It does not mention the 'index' parameter or its enum values, nor does it explain the 'limit' parameter or its default. The description provides no added meaning beyond the raw parameter names in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific resource (constituents of NSE indices) and a distinguishing feature (live metrics). The implied action is retrieval, and it is not a tautology of the tool name. It differentiates from siblings like sector_stocks (which focuses on sectors) and stock_detail (which focuses on a single stock), though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. No mention of comparison with stock_screen, sector_stocks, or mf_* tools. The description is purely definitional and provides no context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_categoriesA
All fund categories with ids (use with mf_list's category param).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It states it returns 'all' categories, implying completeness, but doesn't disclose whether there is any filtering, sorting, or pagination. For a simple read-only enumeration this is acceptable but not richly detailed; it doesn't mention side effects or authentication requirements, which is fine for a public list but still minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that conveys purpose and usage without any filler. It's appropriately sized for a trivial no-parameter tool and front-loads the key fact (all categories with ids) before the usage hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and an output schema exists (noted in context), the description fully covers what an agent needs: it identifies the resource, its content, and its intended integration point. There are no gaps in guidance for a tool this simple.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes zero parameters, so the description need not elaborate on parameter semantics. The baseline for 0 parameters is 4, and the description appropriately focuses on the output and usage context. No additional parameter guidance is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states exactly what the tool provides: all fund categories with their ids. It mentions the intended use with mf_list's category parameter, which also distinguishes it from sibling tools that operate on funds or stocks rather than categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'use with mf_list's `category` param', giving a clear context for when to call this tool. This is a direct, actionable usage directive that leaves no ambiguity about where the returned categories should be applied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_compareA
Side-by-side compare of 2-4 funds (returns, risk ratios, expense, rank).
| Name | Required | Description | Default |
|---|---|---|---|
| scheme_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It does not disclose whether the tool is read-only, any side effects, error behavior, or rate limits. 'Compare' implies a read operation, but this is not made explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words. The core action and scope are front-loaded, and the attributes are listed efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description need not explain return values. It adequately conveys the purpose and parameter usage, though it could benefit from stating that it is a read-only operation given no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the schema: it clarifies that scheme_ids refer to funds and enforces a constraint of 2-4 elements, which is not present in the schema. This compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (compare), resource (funds), and scope (2-4 funds) with the attributes compared (returns, risk ratios, expense, rank). It clearly distinguishes from siblings like mf_detail (single fund) and mf_search (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for comparing 2-4 funds side-by-side, but does not explicitly state when to use this tool over alternatives (e.g., mf_detail for a single fund). No exclusions or 'when not to use' guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_detailA
Full fund report card by scheme id: NAV, returns vs category, expense breakdown, holdings, sectors, risk ratios, peers, managers, tax treatment.
| Name | Required | Description | Default |
|---|---|---|---|
| scheme_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It clearly conveys that the tool returns a detailed report (read-only), but it does not mention potential side effects, authentication needs, performance implications, or error conditions. It is reasonably transparent about the output scope but lacks depth on operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the primary purpose ('Full fund report card') followed by a concise enumeration of contents. It is efficient and each listed item contributes meaning, though the colon-separated list is somewhat dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (which presumably details return fields), the description covers the key aspects of what is returned. It does not mention potential errors, required permissions, or limits, but for a retrieval tool of a single fund, the description is largely complete. The missing details are minor and not critical for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the single parameter. It only says 'by scheme id' without explaining what a scheme_id is, how to obtain it, or any constraints (e.g., positive integer, required format). This is insufficient to guide an agent on how to fill the parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Full fund report card') and a clear resource ('by scheme id'), enumerating the exact contents (NAV, returns, expense breakdown, holdings, sectors, risk ratios, peers, managers, tax treatment). This distinguishes it from sibling tools like mf_search (search) and mf_compare (compare) without confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for retrieving a comprehensive report for a specific fund when a scheme_id is known, which is clear context. However, it does not explicitly state when not to use it or name alternatives, so it falls short of full explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_featuredD
ET Money curated lists: best_mutual_funds, best_sip_funds, best_index_funds, best_gold_funds, low_risk, high_return, retirement, beginners, better_than_fd...
| Name | Required | Description | Default |
|---|---|---|---|
| theme | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'curated lists' and does not state whether the operation is read-only, what it returns (a list of funds, fund metadata, etc.), or any side effects. The description is essentially a noun phrase without behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but is essentially a list of theme names with a trailing ellipsis. It is not front-loaded with a purpose statement, and the list style is more enumeration than an informative explanation. It is under-specified rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and so return values needn't be explained, the description still fails to convey the tool's core function (e.g., retrieving a curated mutual fund list based on a theme) and the meaning of the 'theme' parameter. Given a single required parameter and no annotations, this description is not sufficient for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for the 'theme' parameter (0% coverage), so the description must explain it. It lists several example values (best_mutual_funds, best_sip_funds, etc.) but does not clarify whether these are exhaustive, what format is expected, or what selecting a theme does. The examples give a hint but insufficient semantics for correct use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool provides 'ET Money curated lists' and lists example themes, which hints it returns curated mutual fund lists. However, it does not specify a verb or resource clearly (e.g., 'get' or 'fetch'), and it's ambiguous whether the tool returns the actual funds or just the list of themes. It is more than a tautology but lacks a clear action and object.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus siblings like mf_search, mf_list, or mf_categories. There is no mention of alternatives, exclusions, or typical scenarios, leaving the agent to infer usage entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_listB
Browse/screen funds across all 67 categories (index, gold, silver, FoF, sectoral, debt durations, hybrid, retirement, international...).
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No | ||
| group | No | ||
| sort_by | No | returns | |
| category | No | ||
| duration | No | 1y | |
| sort_order | No | desc | |
| investment_mode | No | lumpsum |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states only the purpose and does not disclose any behavioral traits such as pagination behavior, filtering capabilities, or read-only nature. It does not mention what the tool returns or any constraints. This is a significant gap for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly communicates the tool's core purpose. It is efficient and front-loaded, with no wasted words. It scores high on conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, 4 enums, and many siblings, the description is woefully incomplete. It does not explain how to use the tool, what filters are available, or how it relates to other mf_* tools. The existence of an output schema helps, but the description does not aid the agent in selecting this tool over alternatives or understanding its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides zero information about the 8 parameters. It does not mention filtering, sorting, pagination, or any of the parameter names. Since schema coverage is 0%, the description should compensate but fails to do so. The agent would have to rely solely on the schema, which is insufficient for understanding the semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: browsing and screening mutual funds across 67 categories. It uses specific action verbs (browse/screen) and a clear resource (funds), and gives concrete examples of categories. This distinguishes it from siblings like mf_search (searching) and mf_categories (listing categories).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for browsing funds by category, but it does not explicitly state when to use it over alternatives. For example, it does not mention that mf_search should be used for specific fund lookups or mf_categories for category lists. There is no guidance on exclusions or conditions, so the agent must infer usage from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mf_searchB
Search mutual funds by name (e.g. 'parag parikh flexi', 'small cap').
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits itself. It only states a read operation (search) with example queries, but does not mention match semantics (exact, fuzzy, partial), pagination, default limit behavior, or whether results are sorted. It gives no context on the nature of the search results, leaving the agent to guess how 'search' behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with relevant examples, front-loaded with the core action and resource. Every word earns its place; there is no redundancy or verbose phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with an output schema, the description is minimally adequate. It covers the primary parameter (query) but omits details on limit usage, match behavior, or result ordering. The presence of an output schema mitigates return-shape concerns, but the description still lacks enough behavioral context for an agent to fully anticipate tool behavior beyond 'returns matching funds'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies the 'query' parameter with examples and implies it expects a name or keyword. However, the 'limit' parameter is not described at all, and the description does not mention acceptable formats, case sensitivity, or whether the query is substring-based. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'mutual funds by name', with examples. It effectively distinguishes from siblings like mf_detail or mf_list by emphasizing name-based search, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you want to find funds by name or category keywords) but does not explicitly contrast it with mf_list, mf_categories, or mf_featured. No alternative tools or exclusion conditions are mentioned, leaving the agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sector_stocksC
Stocks grouped by ET Money sector pages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sector | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It says 'grouped' but does not mention ordering, pagination, authentication, rate limits, or whether the operation is read-only. It does not contradict annotations, but it provides minimal transparency for a data retrieval tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and to the point, which is concise. However, it lacks structure and depth – it does not front-load key details like parameters or use cases. It is efficient but under-specifies, earning a middle score on this dimension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has two parameters (one an enum) and an output schema, yet the description provides almost no context about expected results or behavior. It does not clarify how 'grouped' works, whether limit applies to each page, or what the output structure contains. Compared to sibling tools, this is incomplete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% – the description does not mention limit or sector at all. While the schema has an enum for sector, the description adds no meaning beyond that. For a tool with no parameter documentation, this is a significant gap that the description should have filled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource (stocks) and a grouping action by sector pages. It implies the tool returns sector-wise stock lists, which distinguishes it from index_stocks and stock_screen, though it doesn't explicitly name those alternatives. The purpose is understandable but lacks precision about 'grouped' semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus its siblings like stock_screen or index_stocks. The description mentions 'sector pages' which hints at sector-based lists, but there is no explicit context about preferred use cases or exclusions. An agent would have to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_detailB
Stock overview by numeric id or '/stocks//' path: price, day change, returns across horizons, scores, peer fundamentals.
| Name | Required | Description | Default |
|---|---|---|---|
| stock_ref | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not explicitly state that this is a read-only operation, nor does it mention any side effects, rate limits, authentication requirements, or error behavior. It only describes the returned data, leaving potential behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the purpose and lists the data included. It is concise and free of fluff, though the run-on structure with multiple commas could be slightly clearer. Overall, it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the return values need not be described in detail. The tool handles one parameter with an explained format, and the core functionality is clear. However, it lacks any mention of usage context, restrictions, or safety profile (since annotations are absent), leaving gaps for an agent evaluating invocation behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no description for the sole parameter `stock_ref` (coverage 0%). The description compensates by specifying the accepted formats: either a numeric id or a path of the form '/stocks/<slug>/<id>'. This adds crucial semantics beyond the raw schema, though it does not provide examples or clarify the exact syntax of the path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as retrieving a stock overview, likely for a single stock, and enumerates the key data fields returned (price, day change, returns, scores, peer fundamentals). It distinguishes itself from sibling tools like stock_screen or index_stocks by focusing on a single stock detail, though it does not explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. The name 'detail' implies it complements screening or listing tools, but no guidance is provided about choosing it over stock_screen or sector_stocks. An agent would need to infer the use case from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_screenC
ET Money market-data screens (gainers/losers/52w extremes/multibagger/ bluechip/most active/dividend yield) with price, PE, market cap per stock.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| screen | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the data fields returned (price, PE, market cap) but does not disclose how the limit parameter affects results, whether pagination exists, if the tool is read-only, or any other behaviors beyond the raw purpose. The description is too sparse to fully inform the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is efficient and front-loaded with the main concept. However, it lacks any structural aids such as bullet points or parameter notes, and the crowding of multiple screen types into a parenthetical makes it slightly harder to parse. It is acceptable but not exemplary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with two parameters and an output schema, but the description omits key operational details like how limit modifies the result set and the exact enumeration values expected. The agent may struggle to correctly set the screen parameter given the informal naming. The presence of an output schema reduces the need to document return fields, but this description still leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists screen categories but uses informal names ('52w extremes' instead of exact enum values like '52w_high'/'52w_low') and does not explain the 'limit' parameter at all. The mapping between the description and the actual schema enum is loose, and limit usage is completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names the resource (ET Money market-data screens) and lists the screen types (gainers/losers/52w extremes/multibagger/bluechip/most active/dividend yield), which distinguishes it from sibling tools like stock_detail or index_stocks. However, it lacks an explicit action verb like 'retrieve' or 'list', leaving the exact operation slightly implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as stock_detail, index_stocks, or sector_stocks. There is no mention of preferred use cases, exclusions, or prerequisites, forcing the agent to infer based solely on the tool name and list of screens.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
index_stocks - First observed
mf_categories - First observed
mf_compare - First observed
mf_detail - First observed
mf_featured - First observed
mf_list - First observed
mf_search - First observed
sector_stocks - First observed
stock_detail - First observed
stock_screen
TDQS
Scored across 10 tools
Each tool targets a distinct resource and operation. Mutual fund tools (mf_*) are separated by action (search, detail, list, compare, featured, categories) and stock tools (stock_screen, index_stocks, sector_stocks, stock_detail) cover distinct data views. No two tools appear to do the same thing.
Mutual fund tools share a consistent 'mf_' prefix pattern. Stock tools are slightly inconsistent: 'stock_screen' and 'stock_detail' use 'stock_', while 'index_stocks' and 'sector_stocks' embed the resource type before 'stocks'. This is a minor deviation from a uniform pattern but still predictable and readable.
With 10 tools, the server is well-scoped for covering two asset classes (mutual funds and stocks). Each tool serves a clear purpose, and the count is within the optimal 3-15 range, neither bloated nor insufficient.
Mutual fund coverage is strong (search, detail, list, compare, featured, categories), but stock coverage has a notable gap: no tool for searching stocks by name, requiring users to already know stock IDs or slugs. This limits discovery and may cause agent failures when trying to locate a specific stock.
Maintenance
Related MCP Connectors
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
SmartMoney77 MCP v0.6.0 — 14 public tools that turn financial questions into exact numbers and citable links. New: historical_investment_return and compare_investments, which compute "what if I had invested" results from real yearly price data. Also compound interest, FIRE number, credit-card payoff, emergency fund, inflation, latte factor, investment fees, cost of waiting, plus discovery/deep-link/share-pack tools for a catalog of calculators in 6 languages (he/en/ar/es/pt/in). Public, no login. Endpoint: https://smartmoney77.com/mcp
SEC & financial-data MCP: filings, financials, ownership, factors, fund letters, prompts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAI equity-research analyst for Indian NSE/BSE markets with 28 MCP tools enabling sector screens, valuations, SWOTs, and forensic audits using Claude Agent SDK.Apache 2.0
- AlicenseBqualityBmaintenanceExposes Screener.in data for Indian stocks (NSE/BSE) — fundamentals, financial statements, peers, and price/EPS time-series — as tools any MCP client can call.646 npm5MIT
- AlicenseAqualityAmaintenanceProvides live financial data for any LLM agent, including stock quotes, crypto prices, SEC filings, XBRL financials, FX rates, and macro indicators, through ten MCP tools.21177 npm1MIT
- AlicenseAqualityAmaintenanceEnables AI agents to fetch Indian mutual-fund NAVs and NSE market data, calculate GST and income-tax amounts, and look up RBI policy rates, with provenance blocks for citations. Works with any MCP client over stdio or HTTP.1728 PyPIMIT