checking system…
Docs / back / src/maf/prompts/anthropic_fs/MAF_TOOL_TRANSLATION.md · line 1
Markdown · 69 lines
 1# Upstream tool name → MAF source binding
 2
 3The vendored prompts reference Claude-side tools. MAF agents have their own
 4source-binding names. This table records the translation so you can re-apply
 5it when re-syncing prompts from upstream.
 6
 7| Upstream (Anthropic FS) | MAF equivalent | Notes |
 8|---|---|---|
 9| `mcp__factset__*`     | `eodhd` (preferred) + `trtools2_api` + `trtools2_news` | EODHD MCP covers ~80% of FactSet's fundamentals/news; trtools2 covers live bars |
10| `mcp__capiq__*`       | `eodhd` + `trtools2_api` | EODHD's `get_fundamentals` + `get_eod_data` substitute for CapIQ snapshot |
11| `mcp__daloopa__*`     | `fomo2_request` + `eodhd` (earnings_calendar) | Deep earnings extracts via fomo2; calendar via EODHD |
12| `mcp__morningstar__*` | `yahoo_finance` + `fred_api` (macro context) + `eodhd_fundamentals` | EODHD covers fund-level metrics MS exposes |
13| `mcp__sp_global__*`   | `trtools2_api` + `eodhd_fundamentals` + `web_search` | Tear sheets: stitch from trtools2 + EODHD + web |
14| `mcp__lseg__*`        | `trtools2_api` + `coingecko` | Rates/FX/crypto |
15| `mcp__pitchbook__*`   | `web_search` + `sec_filings` | Private-markets: free-tier substitute |
16| `mcp__aiera__*`       | `trtools2_news` (filtered) + `eodhd_news` | Earnings transcripts: stitch from both |
17| `mcp__mtnewswires__*` | `trtools2_news` + `eodhd_news` | Wire news from both streams |
18| **anything else**     | `mcp_remote` (generic) | Bind any MCP server URL + tool name; see `mcp_remote.py` |
19| `Read` / `Write` / `Edit` | (n/a) | File-system tools — MAF agents don't write files; they emit AgentSignals |
20
21## EODHD MCP — bind once, get 77 tools
22
23Set `EODHD_API_KEY` in `.env`, then bind the `eodhd` adapter with the
24tool name you want:
25
26```yaml
27sources:
28  - name: fund_metrics
29    adapter: eodhd
30    config: { tool: get_fundamentals }
31  - name: earnings_dates
32    adapter: eodhd
33    config: { tool: get_earnings_calendar }
34```
35
36At runtime the agent calls these like any other source. The MCP shim
37opens a fresh session per call, sends one tool call, closes the
38session — fine for the once-per-arena-run pattern, not for high-frequency
39polling.
40
41## Generic MCP — `mcp_remote`
42
43For non-EODHD MCP servers (FactSet, CapIQ, your own):
44
45```yaml
46sources:
47  - name: factset_company
48    adapter: mcp_remote
49    config:
50      url: "${FACTSET_MCP_URL}"     # secrets read from env
51      tool: get_company_overview
52      headers:
53        Authorization: "Bearer ${FACTSET_TOKEN}"
54```
55
56## Workflow translation
57
58Upstream agents `Invoke` skill names directly (e.g. `Invoke earnings-analysis`).
59MAF skills aren't invoked; they're loaded as the agent's `system_prompt_file`.
60The translation: take the upstream `Invoke X` step, find the corresponding
61MAF source binding, and rewrite the step as "call your `<source>` tool".
62
63## Output translation
64
65Upstream agents produce `.docx` / `.pptx` files via the Office MCP. MAF
66agents emit a single structured [`AgentSignal`](../../core/state.py) JSON.
67The vendored prompts have an appended header that overrides the file-writing
68instructions and asks for the AgentSignal shape instead.