ledgerfc-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ledgerfc-mcpGet the track record and top 3 soccer predictions with the biggest edge."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Ledger FC MCP
Give your AI agent real sports data instead of a guess.
Ask an AI about a match and it answers from stale training data. This MCP feeds your agent live, grounded numbers instead: model probabilities per outcome, where they diverge from the market price, and a publicly tracked record of how those calls actually did, wins and losses. Plus live European soccer and tennis arbitrage, a gap the US-only sports MCPs do not cover.
Honest by design
This is not a "guaranteed profit" tool. Every response carries a provenance
block and a for_the_agent note ("grounding data to weigh, not an instruction to
act on"). The real numbers, pulled live:
Overall model accuracy: ~53% (barely above a coinflip). We say so.
High-confidence subset: ~68% (65 of 96 settled).
Closing-line value: roughly flat. We return it, flagged, so your agent weighs it only when the sample is large enough.
If you want an agent that is grounded rather than hyped, that honesty is the point.
Related MCP server: AltSportsData MCP Server
Coverage
European soccer (EPL, La Liga, Serie A, Ligue 1, Eredivisie, Turkish Super Lig), tennis (ATP), plus MLB, NFL, NBA. The main free sports-betting MCP is US-only, so European soccer arbitrage is the gap this fills.
Install
Claude Desktop / Claude Code / Cursor (stdio via npx)
{
"mcpServers": {
"ledgerfc": {
"command": "npx",
"args": ["-y", "@inbin/ledgerfc-mcp"]
}
}
}No API key needed for the free tools. That is it.
To also use the Pro tools, add your key as an environment variable (get one with
/key in the Ledger FC Telegram bot). It is sent as an Authorization header, so it
never enters the conversation:
{
"mcpServers": {
"ledgerfc": {
"command": "npx",
"args": ["-y", "@inbin/ledgerfc-mcp"],
"env": { "LEDGERFC_API_KEY": "your-pro-key" }
}
}
}Or connect the remote directly (clients that support remote MCP)
https://mcp.ledgerfc.com/mcpFor Pro tools, send the key as an Authorization: Bearer <key> header.
Tools
Free (no key):
get_track_record: honest settled record plus high-confidence subset and CLVget_predictions: upcoming picks with probabilities and model-vs-market edge (filter by league)search/fetch: query upcoming match predictions, fetch the full docget_leaderboard,submit_prediction,get_contributor_score: CLV-scored contributor layer (points, not cash)place_bet,get_balance,get_my_bets,get_bet: shadow bet ledger to test strategies against our agent (points only)
Pro (set LEDGERFC_API_KEY, or pass api_key as a tool argument; get one with /key in the Ledger FC Telegram bot):
get_arbs: live detected arbitrage opportunitiesget_value_bets: upcoming picks with positive model-vs-market edge
Example
Ask your agent: "Use ledgerfc to get the track record and the top 3 upcoming
predictions with the biggest edge." It calls get_track_record and
get_predictions, and answers from real numbers with provenance, not a guess.
How it works
This npm package is a tiny stdio-to-HTTP bridge: it reads JSON-RPC from your MCP
client on stdin and forwards each request to the remote endpoint
https://mcp.ledgerfc.com/mcp. No dependencies, Node 18+. Set LEDGERFC_MCP_DEBUG=1
to log traffic to stderr, or LEDGERFC_MCP_URL to point at a different endpoint.
Links
Site: https://ledgerfc.com
Telegram (free channel + Pro key): https://t.me/ledgerfc
MIT licensed. Ledger FC is an information tool, not betting advice. 18+.
Available Tools
13 toolsfetchBInspect
Fetch the full prediction document for a search result id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A result id from search, e.g. pred:123. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility for behavioral disclosure. It only states the action 'fetch', implying a read operation, but does not mention whether the returned 'full prediction document' is large, whether there are any side effects, or any other behavioral characteristics. Given the tool retrieves a 'full document', some clarification of response size or content would be expected.
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 front-loads the action and resource. It contains no filler or repetition, making it highly efficient and easy to parse.
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?
With no output schema and no annotations, the description leaves out what the 'full prediction document' actually contains and when this tool should be chosen over its many siblings. It also doesn't clarify whether the tool is read-only. The low complexity of the tool is acknowledged, but the missing usage context and output expectations make it incomplete for an agent.
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 already fully documents the only parameter 'id' with a type, description, and example ('pred:123'). The tool description adds no additional meaning beyond what the schema provides. With 100% schema description coverage, this is at the baseline of 3.
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 specifies the verb 'fetch' and the resource 'full prediction document', and qualifies it with the condition 'for a search result id'. This makes the purpose specific and distinguishable from broader tools like get_predictions or get_track_record. However, it doesn't explicitly name alternatives, so it misses the top tier.
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 usage after a search because it requires a 'search result id', but it doesn't explicitly state when to use this tool versus siblings like get_track_record or get_predictions. No exclusions or alternative conditions are provided, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arbsCInspect
PRO: recently detected live arbitrage opportunities. Needs a Pro key, via an Authorization: Bearer header (preferred) or the api_key argument.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Pro API key (get one with /key in the Ledger FC Telegram bot). Preferred instead: send it as an Authorization: Bearer header, so it never enters the conversation. | |
| live_rescan | No | If true, fetch fresh odds NOW and return current arbs (age ~0) instead of logged ones. Rate-limited (costs API credits). Falls back to logged arbs if unavailable. | |
| within_seconds | No | Look-back window in seconds. Default is tight because arbs die fast; widen only for a historical view. |
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 mentions the authentication requirement (Pro key, Bearer header) but does not state whether the operation is read-only, whether it has side effects, or any rate limits or caching behavior. The live_rescan parameter hints at rate limits in the schema, but the main description does not disclose this. For a tool with no annotations, this is a significant gap.
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 two sentences with zero waste. The purpose is front-loaded ('PRO: recently detected live arbitrage opportunities') and the authentication note is brief. Every word earns its place; there is no repetition or filler.
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 no output schema, and the description does not mention what the return value looks like or any structural details. It also omits important behavioral context like the look-back window and the fallback to logged arbs, which are only explained in the parameter schema. For an agent to correctly invoke and interpret results, more context is needed – especially given the absence of annotations and output schema.
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 100%, with each parameter thoroughly explained (e.g., live_rescan describes behavior, costs, and fallback). The description itself adds no parameter-specific information beyond the overall purpose, so the baseline 3 applies. The schema handles the heavy lifting, and the description does not need to repeat it.
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 it retrieves 'recently detected live arbitrage opportunities' – a specific verb and resource. It is distinguishable from siblings like get_predictions or get_value_bets by the 'arbitrage' focus, though it does not explicitly differentiate itself from similar tools. The purpose is clear enough for an agent to know what it does.
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 such as get_predictions or get_value_bets. The only practical note is the Pro key requirement, which is a prerequisite, not a selection criterion. The agent is left to infer usage context from the purpose alone, which is insufficient given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceCInspect
Your paper-points balance (not cash).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
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 only clarifies that the balance is in paper-points, not cash. It does not state that the operation is read-only, requires no side effects, or mention any authentication or rate-limit considerations. No contradictions, but the behavior is essentially 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, front-loaded sentence with no filler. Every word contributes meaning, and the parenthetical clarification adds value without extra length. Appropriate size for a simple tool.
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 tool with a required parameter and no output schema, the description is too sparse. It does not explain what agent_id should be set to, what the response shape is, or how this fits among the many sibling tools (e.g., get_my_bets, place_bet). An agent would likely need external context to use 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 description provides zero explanation of the required agent_id parameter, and the schema description coverage is 0%. Since the description is the only source of parameter semantics, leaving agent_id unexplained forces the agent to guess that it identifies the user. This is a critical gap.
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 specifies 'paper-points balance' and explicitly contrasts with 'cash', making the resource unambiguous. It lacks an explicit verb like 'retrieves' or 'gets', but the intent to return the balance is evident. There is no direct sibling that serves the same purpose, so differentiation is not an issue.
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 phrase 'Your paper-points balance' implies the tool is used when you want to view your balance, but it does not state when to use this over alternatives like get_my_bets or get_track_record. No exclusions or alternative conditions are provided, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_betCInspect
One paper bet by id.
| Name | Required | Description | Default |
|---|---|---|---|
| bet_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states 'One paper bet by id,' offering no information about side effects, read-only nature, error conditions, or rate limits. For a get operation this is a minimal gap, but the description adds no meaningful behavioral context beyond the basic action.
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, front-loaded sentence with no fluff. It efficiently conveys the essential purpose. While it is very brief, it is not overly verbose; the structure is clean and easily parseable by an agent.
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 low complexity (one simple parameter, no output schema, no annotations), the description provides the core purpose but omits usage context and behavioral details. The agent lacks information about when to choose this over get_my_bets, what a 'paper bet' implies, or any response expectations. It is barely adequate for a trivial get operation but falls short for robust agent decision-making.
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 documents one parameter, bet_id (integer), with 0% description coverage. The description's phrase 'by id' explicitly maps bet_id to the bet identifier, which adds modest semantic value. However, it does not elaborate on required formats, constraints, or relationships, so it only partially compensates for the lack of schema-level documentation.
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 verb (get) and resource (paper bet) with an identifier ('by id'), making it obvious that this tool retrieves a single bet. While it doesn't explicitly name sibling tools, the 'by id' phrasing distinguishes it from list operations like get_my_bets or get_arbs.
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 about when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions. The agent must infer from the name and description that it is appropriate when a specific bet_id is available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contributor_scoreDInspect
A contributor's CLV record.
| Name | Required | Description | Default |
|---|---|---|---|
| contributor_id | Yes |
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. The description only states 'A contributor's CLV record,' which neither confirms nor denies side effects, return format, errors, or read-only behavior. It doesn't say whether it's a read operation, whether it might fail, or what output to expect. This is essentially a placeholder and provides no behavioral transparency.
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 short sentence, which is concise, but it is under-specified. There is no structure—no front-loaded action, no breaking into components. It is more of a label than a usable description. Conciseness is good, but it sacrifices necessary detail.
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 low complexity (1 parameter) and no output schema, the description should compensate by explaining the meaning of CLV, the return value, and when to use it. It does none of that. The description is far from complete for an agent to correctly invoke this tool, especially among many similar-looking siblings.
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 a single parameter, contributor_id, with 0% schema description coverage. The tool description does not elaborate on what contributor_id means, what format it should be in, or how it relates to the CLV record. The parameter is self-explanatory from its name, but the description adds no semantic value beyond the schema field name.
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 'A contributor's CLV record.' is a noun phrase that vaguely indicates the tool returns some kind of record, but it doesn't explicitly state an action like 'get' or 'retrieve'. It fails to differentiate from sibling tools such as get_track_record or get_predictions, which also likely return records. The purpose is not fully clear—what is a CLV record and what does the agent do with it?
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. The description doesn't mention any context, prerequisites, or conditions under which an agent should select this tool. With 12 sibling tools, the lack of any usage direction is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardBInspect
Contributors ranked by CLV (reputation points, not cash).
| Name | Required | Description | Default |
|---|---|---|---|
No 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 mentions the ranking metric but omits details like whether it's a full list, pagination, sorting direction, or any limits—information an agent might need to interpret the result.
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 of clear, front-loaded information. Every word adds value, and there is no redundant or filler content, making it highly concise and well-structured.
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 description gives the core purpose but could be more complete for a no-output-schema tool. It doesn't mention how many contributors are returned, whether the list is ordered ascending or descending (though 'ranked' implies order), or if there are any limits—minor gaps for a simple list operation.
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 tool has zero parameters and the schema shows no properties, so there is nothing to explain. According to the rubric, a zero-parameter tool gets a baseline score of 4 since the description does not need to compensate for schema gaps.
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 returns a ranking of contributors by CLV, with the clarifying caveat that CLV means reputation points, not cash. This is a specific verb-resource pairing that distinguishes it from other getters like get_contributor_score, though it doesn't explicitly name alternatives.
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 sibling getters or how it fits into a workflow. The description only states what it does, leaving the agent to infer applicability without explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_betsCInspect
Your paper bets, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | Yes |
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 mentions 'newest first' as a sorting behavior, but it does not indicate that this is a read-only operation, whether there are side effects, rate limits, or any other behavioral constraints. For a getter with no annotations, this is a significant gap.
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 short, front-loaded phrase that directly states the resource and ordering without any fluff. It is efficient and to the point, which is good for conciseness, though it comes at the cost of missing critical context. For what it says, it is well-structured and appropriately brief.
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 simplicity of the tool (one parameter, no output schema), the description is still incomplete. It does not explain the purpose of the agent_id parameter, does not differentiate from siblings like get_bet or get_predictions, and does not mention potential pagination, filtering, or limits. An agent cannot confidently determine when to use this tool or how to fill the parameter 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 has one parameter 'agent_id' with no description, and schema description coverage is 0%. The description says 'Your' which hints that agent_id identifies whose bets, but it does not explicitly state that agent_id is the required identifier or how it is used. The description adds minimal meaning beyond the parameter name, so it fails to compensate for the lack of schema documentation.
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 'Your paper bets, newest first' clearly specifies the resource (paper bets) and the owner (your), which distinguishes it from siblings like get_arbs or get_value_bets. It also states the ordering. However, it does not name a specific verb, though 'get' is implied by the tool name. It is specific enough to differentiate from most siblings but lacks explicit reference to alternatives.
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 such as get_bet (single bet) or get_track_record. The description implies it is for retrieving the user's own bets, but it does not state conditions, exclusions, or when another tool would be more appropriate. An agent would have to infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_predictionsBInspect
Upcoming predictions with probabilities and model-vs-market edge.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max predictions to return. | |
| league | No | Filter to one league code, e.g. EPL. |
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 implies a read-only operation by saying 'Upcoming predictions', but does not explicitly state that no modifications occur, nor does it mention authentication, rate limits, or pagination. It adds some behavioral context (returns probabilities and edge) but lacks explicit safety or side-effect disclosure.
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, front-loaded sentence with no superfluous words. It starts with the core purpose ('Upcoming predictions') and then specifies the included data. This is efficient and well-structured, making it easy for an agent to quickly grasp the tool's function.
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 read-only tool with two optional parameters and no output schema, the description covers the essential return content. However, it lacks context about how this tool relates to siblings (e.g., whether predictions overlap with value bets) and does not clarify the meaning of 'model-vs-market edge'. Adding a brief usage note would improve completeness, but as-is it is mostly adequate.
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 covers both parameters (limit and league) with descriptions, achieving 100% coverage. The tool description does not add any additional semantic meaning beyond the schema, which is acceptable given the schema's clarity. The baseline of 3 is appropriate because the schema already handles parameter explanation adequately.
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 resource ('Upcoming predictions') and the specific data included ('probabilities and model-vs-market edge'). It is a full sentence with a specific verb inferred from the name. While it doesn't explicitly name a sibling to differentiate, the content distinguishes it from related tools like value bets or arbs by focusing on predictions with edge.
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 such as get_value_bets or get_arbs. The description does not provide any context about selection criteria, prerequisites, or scenarios where this tool is preferred. This leaves an agent to infer usage, which is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_recordDInspect
Honest settled record + high-confidence subset + CLV.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description must cover behavioral disclosure, but it offers almost nothing. It hints at some concept of 'honest' data and a 'high-confidence subset' but does not explain what the tool does internally, whether it is read-only, what data it accesses, or what the response shape is. This is a critical gap.
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, which is good for conciseness, but it sacrifices clarity and structure. It reads as a list of features rather than a sentence with a clear subject-verb-object. Key information is missing, so the brevity is not effective.
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 description is severely incomplete. There is no output schema, no annotations, and no parameters, so the description is the only source of information. It fails to explain what 'honest settled record' means, what 'high-confidence subset' entails, or what 'CLV' stands for, nor does it describe the response format. An agent would be guessing on how to interpret the result.
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 tool has zero parameters, so the description is not required to explain param semantics. The baseline for 0 parameters is 4, and the description does not contradict or confuse. However, it also does little to clarify what inputs might be expected (none), so it remains at baseline.
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 is a fragment listing components ('Honest settled record + high-confidence subset + CLV') rather than a clear statement of action. It essentially restates the tool's name ('settled record' ≈ 'track record') and adds ambiguous terms without explaining their function. An agent cannot confidently determine what the tool returns or how to use it.
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 provides no context on when to use this tool versus its many siblings (e.g., get_predictions, get_value_bets). It does not state use cases, prerequisites, or alternatives, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_value_betsAInspect
PRO: upcoming picks with positive model-vs-market edge. Needs a Pro key, via an Authorization: Bearer header (preferred) or the api_key argument.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Optional Pro API key (get one with /key in the Ledger FC Telegram bot). Preferred instead: send it as an Authorization: Bearer header, so it never enters the conversation. |
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 explicitly states the need for a Pro key and the preferred authentication method (Bearer header) to avoid exposing the key in conversation—useful security context beyond the schema. It also implies the tool requires authorization and may fail without it, though it doesn't detail error behavior. This is strong behavioral transparency for a simple 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 two sentences with no wasted words. It front-loads the core purpose (PRO value bets) and then the authentication requirement. Every sentence earns its place: the first defines the tool, the second specifies the key handling. Excellent structure and 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?
There is no output schema, so the description should convey what the tool returns. It does say 'upcoming picks' which gives a general idea, but it doesn't specify the format, pagination, fields, or any error conditions (e.g., missing key). For a simple one-param tool with no output schema, this is adequate but not complete—an agent might benefit from knowing the response structure or that results are limited to upcoming picks only.
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 input schema provides 100% coverage for the single optional api_key parameter, including its description and how to obtain it. The description adds a note about preferring the Authorization header, but that's not a schema parameter. Since the schema already explains the parameter, a baseline of 3 is appropriate; the description adds minimal extra semantic depth.
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 verb and resource: 'upcoming picks with positive model-vs-market edge'. It distinguishes itself from sibling tools like get_predictions or get_arbs by focusing on the value-bet aspect (edge vs market), though it doesn't name alternatives explicitly. A 4 is appropriate—clear but not fully differentiated from siblings.
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 explains authentication requirements (Pro key via Bearer header or api_key argument) but provides no guidance on when to use this tool versus alternatives. It doesn't mention exclusions, scenarios, or compare with sibling tools. Only implied context (PRO, edge) suggests usage, but explicit when/when-not guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_betCInspect
Place a paper bet against our agent's prediction (points only).
| Name | Required | Description | Default |
|---|---|---|---|
| side | Yes | ||
| agent_id | Yes | ||
| match_id | Yes | ||
| stake_points | Yes | Paper points to stake (min 1). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits on its own. It mentions 'paper' (suggesting non-real) and 'points only' (stake currency), but it does not state side effects like point deduction from balance, irreversibility, or what happens on success/failure. The agent has no information about consequences of calling this 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 a single sentence with no redundant words. It is front-loaded with the action and is appropriately terse. However, it could be slightly longer to convey more necessary context without losing conciseness, so it does not reach a perfect score.
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 four required parameters, no output schema, and no annotations. The description provides almost none of the crucial context: parameter meanings, return values, error conditions, or dependencies. An agent cannot correctly invoke this tool without external knowledge of what agent_id, match_id, and side refer to, or what the tool returns. The description is wholly inadequate for the tool's complexity.
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 only 25% — only stake_points has a description. The description adds only that stakes are in 'points,' which matches the schema but does not explain the other three parameters (agent_id, match_id, side). The side enum (H/D/A) is unexpanded, and the relationship between parameters (which agent, which match) is unstated. The description adds minimal value over 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 clearly states the action: 'Place a paper bet against our agent's prediction (points only).' It identifies the specific verb ('place'), the resource ('a paper bet'), and the unique scope ('against our agent's prediction'), which distinguishes it from read-only siblings like get_bet or get_predictions. This is a distinct and unambiguous purpose.
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 such as submit_prediction or get_my_bets. The description only states what the tool does, not the context in which it should be chosen, nor any prerequisites or exclusions. An agent would have to infer usage from the name and general domain knowledge.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchAInspect
Search upcoming match predictions. Returns {id,title,url} results; use fetch(id) for the full prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Team or league to search upcoming predictions for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It states that search returns {id,title,url} results, which is useful, and implies a read-only operation via the verb 'search'. It does not explicitly state read-only nature, rate limits, or error behavior, but for a simple search tool, this is acceptable. The mention of fetch(id) for full prediction also adds behavioral context.
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 two sentences, front-loaded with the core purpose, followed by the return format and a pointer to fetch. Every sentence earns its place, with no filler or redundant information. It is highly concise and well-structured.
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?
There is no output schema, so the description correctly specifies the return structure ({id,title,url}) and directs the agent to fetch(id) for full details. The parameter is fully covered by the schema. It does not mention pagination, limits, or no-result behavior, but these are minor for a simple search tool and the description is sufficiently complete for correct invocation.
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 100% because the single parameter 'query' already has a clear description ('Team or league to search upcoming predictions for'). The tool description adds no additional semantic detail beyond the schema, so the baseline of 3 applies. The description does not clarify query format or edge cases, but that is not necessary given the schema's clarity.
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 'upcoming match predictions', and it specifies the return format. It does not explicitly differentiate from siblings like get_predictions, but the search semantics and the hint to use fetch(id) for full details make the purpose clear enough for an agent to infer when it is appropriate.
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 provides a minimal usage hint by instructing to use fetch(id) for full predictions, which implies search returns summaries. However, it does not explicitly state when to use search versus sibling tools like get_predictions or get_track_record, nor does it mention any exclusions or prerequisites. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_predictionCInspect
Submit a prediction to be scored by CLV (shadow/points).
| Name | Required | Description | Default |
|---|---|---|---|
| p_away | Yes | ||
| p_draw | Yes | ||
| p_home | Yes | ||
| match_id | Yes | ||
| contributor_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only mentions that predictions are scored by CLV (shadow/points) but does not state side effects, such as whether submissions overwrite existing predictions, authentication requirements, rate limits, or failure modes. This is a significant gap for a write operation.
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 with no fluff, so it is concise. However, it is under-specified; being short is not the same as being well-structured since it omits critical details. It could be improved by front-loading key information in a structured format, but for sheer brevity it is acceptable.
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 tool with five required parameters, no output schema, and no annotations, the description is drastically incomplete. It does not explain the expected format of probabilities, what the response will look like, error conditions, or any prerequisites. An agent would struggle to call this tool correctly without additional context.
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%, and the description adds no explanation of the five required parameters (contributor_id, match_id, p_home, p_draw, p_away). The parameter names hint at their meaning (e.g., probabilities), but the description does not clarify units, ranges, or relationships, leaving the agent to guess.
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 ('submit') and resource ('prediction'), and clarifies that it is for shadow/points scoring, which distinguishes it from the sibling 'place_bet'. However, it does not explicitly name any sibling tool, relying on the 'shadow/points' hint for differentiation.
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 provides no explicit guidance on when to use this tool over alternatives. The phrase 'shadow/points' implies it is for non-real bets, contrasting with 'place_bet', but this is left implicit rather than stated as a usage rule. No exclusions or alternative routing are provided.
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.
13 tool updates
v0.2.0- First observed
fetch - First observed
get_arbs - First observed
get_balance - First observed
get_bet - First observed
get_contributor_score - First observed
get_leaderboard - First observed
get_my_bets - First observed
get_predictions - First observed
get_track_record - First observed
get_value_bets - First observed
place_bet - First observed
search - First observed
submit_prediction
TDQS
Scored across 13 tools
Each tool has a clearly distinct purpose: track record, predictions, arbs, value bets, search/fetch pair, submission, leaderboard, contributor score, betting operations. No two tools overlap in a way that would cause misselection.
All tools use consistent lowercase snake_case with a verb_noun pattern. Most start with 'get_', with a few action verbs like 'search', 'fetch', 'submit_prediction', and 'place_bet' that still follow the same style.
13 tools is well within the ideal range for a domain covering predictions, submission, scoring, and betting. Each tool serves a distinct function and none appear redundant.
The surface covers the main lifecycle: viewing predictions, fetching details, submitting predictions, checking leaderboard and contributor scores, placing bets, and viewing balance and bet history. Minor missing operations like updating or canceling bets are not critical for the core workflow.
Maintenance
Related MCP Connectors
Sports odds, player props and source coverage for AI assistants. Connect with your own API key.
Football fixtures, standings, and odds intelligence for AI agents.
Live sports stats and pre-computed analysis for AI assistants across NBA, MLB, NFL, and NHL.
Financial data for AI agents: crypto data, Polymarket odds, weather/oil calibration, trust scoring.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI-powered sports betting intelligence including live odds, injury reports, and documented picks for NBA, NHL, and NCAAB. It enables AI agents to analyze line movements, win rates, and betting edges using real-time data from sportsbettingaianalyzer.com.115MIT
- AlicenseBqualityDmaintenanceMCP-compatible server that gives AI agents access to alternative sports data across 30+ leagues — odds, events, probabilities, settlement, and futures for prediction markets, DFS platforms, and sportsbooks.297MIT

Odds-API MCP Serverofficial
AlicenseAqualityBmaintenanceEnables AI assistants to access sports betting odds data from 265+ bookmakers across 34 sports, including events, odds, historical data, arbitrage, and value bets.22911MIT- FlicenseNot gradedqualityDmaintenanceProvides AI agents with professional-grade tools for expected value calculation, Monte Carlo predictions, historical backtesting, and portfolio risk management in sports betting.-