← ClaudeAtlas

fin-skills-as-toolslisted

How to hand this library to an agent as TOOLS rather than as reading - the MCP server, the exported Anthropic and OpenAI tool definitions, the JSON payload conventions, and the four guards that cannot cross a JSON boundary. TRIGGER - expose fin-skills to an LLM agent; run the fin-skills MCP server; "python -m fin_skills.mcp"; fin-skills-mcp; import the guards as function-calling tools; generate tool schemas for the Messages API or the OpenAI Responses API; send a pandas Series or DataFrame through a tool call; check_backtest, bundle_coverage, describe_guard, read_skill; why assert_causal or warmup_probe is missing from the tool list; payload size limits for a tool call; 把 guard 挂成 agent 工具. SKIP for how to design the agent pipeline itself (finance-agent-architectures), which third-party finance MCP servers exist and which can move money (finance-mcp-servers), and whether an LLM strategy makes money at all (llm-finance-agents).
howard-lynn-ye/fin-skills · ★ 1 · AI & Automation · score 77
Install: claude install-skill howard-lynn-ye/fin-skills
# fin-skills as tools an agent can call An agent that can *read* these skills still cannot *run* the guards. Reading a skill about look-ahead bias changes what the model says; running `check_cost_curve` changes what the pipeline is allowed to report. This skill is the second thing: the transport-independent tool layer (`fin_skills.tools`), the MCP server over it (`fin_skills.mcp`), and the exported schemas for the Anthropic and OpenAI APIs. The design rule of the whole layer: **nothing is written down twice.** Every schema is derived at import time from the guard itself — its `required` / `optional` tuples, the annotations on `check()`, the Bundle slot each keyword resolves to, and the `Inputs` block of its docstring. A hand-maintained schema goes stale the first time an argument is added; this one cannot. ## 1. What exists, in numbers ✅ measured 2026-09-09 with `python -m fin_skills.tools --list` and `python -c "from fin_skills.tools import list_tools, exported, excluded; ..."`. | | Count | | |---|---|---| | Tools total | **31** | `python -m fin_skills.tools --list` | | — catalogue tools (need no data) | 7 | `list_skills`, `read_skill`, `search_skills`, `list_guards`, `describe_guard`, `bundle_coverage`, `check_backtest` | | — one per guard | 24 | `check_<guard>` | | Guards in the registry | 28 | `fin_skills.api.registry()` | | — exported as tools | 24 | can be driven entirely from JSON | | — **excluded, with a reason** | **4** | §4 | | Skills readable through `read_ski