Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/ramide1/iol-mcp/agents-mdgit clone --depth 1 https://github.com/ramide1/iol-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/ramide1/iol-mcp/agents-md)<a href="https://agentmods.dev/instructions/ramide1/iol-mcp/agents-md"><img src="https://agentmods.dev/badge/instructions/ramide1/iol-mcp/agents-md.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00607 | $0.00607 |
| Opus 5 | $0.00303 | $0.00303 |
| Sonnet 5 | $0.00121 | $0.00121 |
| Haiku 4.5 | $0.00061 | $0.00061 |
Grade A, and why
iol-mcp AGENTS.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 52 lines — stays where its author put it; the contents beside it link to each section on GitHub.
iol-mcp
MCP server for IOL (InvertirOnline) API — tools for auth, portfolio, operations, and quotes via stdio transport.
Commands
- Install:
bun install - Run:
bun run start(runsbun src/main.ts)
No lint, typecheck, or test commands are configured. The codebase has no test infrastructure.
Architecture
- Runtime: Bun (not Node.js)
- Transport: stdio (not HTTP)
- SDK:
@modelcontextprotocol/sdkv1.29+ - Entry:
src/main.ts→ creates McpServer, callsregisterTools(), connects to stdio - API Base:
https://api.invertironline.com
Single flat package, no monorepo.
Key Files
| File | Role |
|---|---|
src/main.ts |
Entry point — server creation + stdio transport |
src/tool.ts |
All MCP tool definitions in a single registerTools() function |
src/tokenManager.ts |
In-memory token store (Map-based, no persistence) |
src/request.ts |
HTTP helpers with Bearer auth + maintenance error handling |
src/interface.ts |
TypeScript types for all IOL API endpoints |
Token Flow
- Tokens are stored in-memory only (no disk, no DB). Server restart = re-auth required.
ensureToken()(intool.ts) tries: cached access token → refresh token → env password login.IOL_USERNAME+IOL_PASSWORDenv vars enable lazy auto-login. Without them, callget_tokenmanually.IOL_ENABLE_TRADING=trueor=1gates all write operations (buy/sell/cancel/subscribe/rescue/cpd/simplified).
API Gotchas
request.tschecks every response for{ status: "maintenance" }and throwsIOLMaintenanceErrorwith optionalretryAfter.- POST requests that return non-JSON (e.g., empty 200) yield
null— callers must handle this. - Token requests use
application/x-www-form-urlencoded(not JSON). All other API calls use JSON.
Style
- Zod schemas for all tool input validation.
- All tools are registered in one big function (
registerToolsintool.ts). No per-file tool organization. interface.tsdefines response types for all IOL API endpoints (AccountStatus, Portfolio, Operation, Quote, FCI, etc.).request.tsusesanyfor rawfetch()responses — this is the HTTP plumbing layer, not business logic.- Some tools use
z.any()for input schemas (place_cpd, buy_simplified, advisor tools) because the API accepts flexible bodies.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 52 lines · 607 tokens per session scan A d111334e53b5
iol-mcp AGENTS.md is an instructions file published in the GitHub repository ramide1/iol-mcp (0 stars, last pushed 1mo ago), licensed MIT. It adds 607 tokens to every session, about $0.0030 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
razorpay-mcp-server AGENTS.md
Instructions for razorpay/razorpay-mcp-server, covering agent instructions, project overview, key commands, contributing and code style.
copilot-money-mcp CLAUDE.md
Instructions for ignaciohermosillacornejo/copilot-money-mcp, covering copilot money mcp server, quick reference, architecture, data flow and project structure.
calc-mcp CLAUDE.md
Claude Code instructions for coo-quack/calc-mcp, covering project rules, tech stack, commands, project structure and tool architecture.
counterpoise-ledger CLAUDE.md
Instructions for jeffjjohnston/counterpoise-ledger, covering claude.md, project overview, development commands, essential commands and testing.
rosetta extractor-import-side-effects.instructions.md
Every extractor entrypoint must run its side effects only under import.meta.main. Top-level db.ts imports still open a real DB connection, so tests must import extractors safely.
rosetta manual-version-bump.instructions.md
Version bumps and CHANGELOG promotion are a manual, human step for every release channel. CI must not reintroduce an auto-bump/auto-commit job.