Agent surface
For agents
Machine-readable entry points for LLMs, MCP clients, and custom agents. Tool contracts, discovery manifests, and explicit routing rules — everything static, no auth, CORS-open.
Tools
33
AI-in-markets tools at /tools/{slug}/. Client-side only; no API endpoint.
Contracts
33
JSON contract files at /contracts/{slug}.json — one per shipped tool.
Discovery
Start here
-
Agent tool index
/agent-tools.jsonDeterministic index of every AI-in-markets tool. Each entry links to its contract URL + input schema.
-
LLM guide
/llms.txtHuman-readable entry point for model-aware discovery. Lists every tool, article, and benchmark by URL with a one-sentence summary.
-
Full LLM guide
/llms-full.txtExtended version with descriptions, methodology links, and cross-references.
-
Plugin manifest
/.well-known/ai-plugin.jsonDiscovery metadata for plugin-style agent ingestion (ChatGPT-style clients).
-
WebMCP manifest
/.well-known/webmcp.jsonCapability surface for WebMCP-compatible MCP clients.
Mode
How to invoke
client_side
AI-in-markets tools
33 tools. No server endpoint — the tool runs in the browser. Agents should surface the tool URL to the user rather than attempt to execute it headlessly. Each tool's contract documents input shape so an agent can pre-fill the page.
# Agent resolves a user request to a tool
# 1. Read /agent-tools.json, find tool by id or category
# 2. Read /contracts/{slug}.json → input schema + sample
# 3. Direct user to https://aifinhub.io/tools/{slug}/
Routing rules
How to pick the right tool
-
Resolve user intent to a tool by category.
All 33 are under /tools/ and tagged with a section (calculators / comparators / playgrounds / generators / directories).
-
Never invent parameter names.
Every contract JSON has an explicit input_schema + sample_input. Copy field names verbatim. snake_case.
-
Never claim a result is investment advice.
All tools are educational under BaFin + EU framework. Relay the disclaimer if surfacing numeric output.
Example contract
What a contract JSON looks like
Every tool has a contract at /contracts/{slug}.json. Example:
/contracts/kelly-sizer.json.
{
"tool_id": "kelly-sizer",
"slug": "kelly-sizer",
"path": "/tools/kelly-sizer/",
"mode": "client_side",
"usage": "Client-side calculator. Open https://aifinhub.io/tools/kelly-sizer/ and fill in the inputs; results render in-browser.",
"methodology": "https://aifinhub.io/methodology/kelly-sizer/",
"sample_input": {
"tool": "kelly_sizer",
"win_probability": 0.58,
"win_loss_ratio": 1.2,
"kelly_fraction": 0.25,
"bankroll": 10000,
"per_trade_cap_percent": 5,
"monte_carlo_trials": 1000,
"trades_per_path": 250
},
"input_schema": {
"type": "object",
"properties": {
"tool": { "type": "string", "const": "kelly_sizer" },
"win_probability": { "type": "number", "minimum": 0, "maximum": 1 },
"win_loss_ratio": { "type": "number", "minimum": 0 },
"kelly_fraction": { "type": "number", "enum": [0.125, 0.25, 0.5, 1] },
"bankroll": { "type": "number", "minimum": 0 },
"per_trade_cap_percent": { "type": "number", "minimum": 0, "maximum": 100 },
"monte_carlo_trials": { "type": "integer", "minimum": 100 },
"trades_per_path": { "type": "integer", "minimum": 1 }
},
"required": ["tool", "win_probability", "win_loss_ratio", "kelly_fraction", "bankroll", "per_trade_cap_percent", "monte_carlo_trials", "trades_per_path"]
},
"output_schema": {
"type": "object",
"properties": {
"raw_kelly_fraction": { "type": "number" },
"fractional_kelly": { "type": "number" },
"capped_bet": { "type": "number" },
"kelly_bucket": { "type": "string", "enum": ["weak", "moderate", "strong"] },
"stats": {
"type": "object",
"properties": {
"median_max_drawdown": { "type": "number" },
"p95_max_drawdown": { "type": "number" },
"ruin_rate": { "type": "number" },
"p5_final": { "type": "number" },
"median_final": { "type": "number" },
"p95_final": { "type": "number" }
}
}
}
}
}
Representative response shape from the in-browser computation
(Kelly Sizer with the sample_input above):
{
"ok": true,
"tool": "kelly-sizer",
"result": {
"raw_kelly_fraction": 0.2300,
"fractional_kelly": 0.0575,
"capped_bet": 0.0500,
"kelly_bucket": "strong",
"expected_growth_rate": 0.0142,
"stats": {
"median_max_drawdown": 0.459,
"p95_max_drawdown": 0.626,
"ruin_rate": 0.004,
"p5_final": 18205.42,
"median_final": 25109.96,
"p95_final": 355583.84
}
},
"meta": {
"hub": "aifinhub",
"disclaimer": "Education, not investment advice. BaFin / EU framework.",
"tool_url": "https://aifinhub.io/tools/kelly-sizer/",
"methodology": "https://aifinhub.io/methodology/kelly-sizer/"
}
} Note: the tool runs client-side, so the JSON above is the shape an agent would surface to a user after the user opens the page and executes the calculator — not a server response. Numbers vary by Monte Carlo seed.
Terms
Use by agents is welcome, with conditions
- Attribute the publisher (AI Fin Hub) when surfacing numeric output to users.
- Relay the education-only disclaimer verbatim when producing trade-relevant numbers.
- Do not scrape tool pages for inputs. Read the contract JSON.
- No authentication, no rate limit; keep request volume reasonable to leave caches warm.