SBOR
Server Details
Check a lending rate before your agent borrows. Stacks benchmark, read from contract state. No key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- sborxyz/sbor
- GitHub Stars
- 0
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: compare_chains surveys external lending markets, compare_rate evaluates an offered rate against the benchmark, get_rate returns the benchmark itself, get_history provides historical fixings, get_methodology explains the index construction, and list_markets details index constituents. There is no meaningful overlap that would confuse an agent.
All tool names follow a consistent verb_noun pattern: compare_chains, compare_rate, get_history, get_methodology, get_rate, list_markets. The verbs are descriptive and the objects are clear, making the naming predictable and easy to navigate.
With 6 tools, the server is well-scoped for its purpose as a benchmark rate reference. Each tool covers a distinct need—current rates, comparisons, history, methodology, and market composition—without redundancy or bloat.
The tool surface fully covers the domain of SBOR benchmark rates: retrieving current rates, comparing offered rates, viewing historical fixings, understanding methodology, and inspecting market constituents. As a read-only reference service, there are no obvious missing operations or dead ends.
Available Tools
6 toolscompare_chainsCompare Stacks rates against the same markets on other chainsARead-onlyInspect
The same asset classes on the largest lending markets on Ethereum, Base, Hyperliquid and Solana, plus SOFR, the US repo rate, and what it costs to borrow USDC against bitcoin on Base and Ethereum. Context only: none of these is ever a constituent of an SBOR index. Aave on Ethereum and Base and the bitcoin-collateral markets are read from contract state; the other venues come from DefiLlama, so small differences are expected for those.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Only markets comparable to this index. Omit for all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint already true, the description adds behavioral nuance: Aave and bitcoin-collateral markets are read from contract state, while other venues come from DefiLlama, so small differences are expected. This explains potential inconsistencies in results beyond what annotations provide. No destructive or state-changing behavior is claimed.
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?
Two sentences pack necessary scope, caveats, and data-source info without fluff. The first sentence states the core function, the second provides context and expectations. Could be slightly tighter but remains well-structured and front-loaded.
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 one-parameter, read-only tool with no output schema, the description is adequate: it names the markets, explains data provenance, and warns about differences. It does not specify the output format, but that is not critical given the tool's straightforward comparative nature and the annotation covering safety.
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% and the sole parameter 'index' is already described as 'Only markets comparable to this index. Omit for all.' The description's mention of 'the same asset classes' loosely aligns with the index parameter but does not add new meaning beyond the schema. Baseline 3 is appropriate since the schema handles the semantics.
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 title and description clearly state the verb 'compare' and the resource: rates across the same asset classes on multiple chains. It names specific chains (Ethereum, Base, Hyperliquid, Solana) and additional reference rates (SOFR, repo, USDC/BTC borrowing), giving a precise scope that distinguishes it from siblings like get_rate or list_markets.
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 explicitly says 'Context only: none of these is ever a constituent of an SBOR index,' which tells the agent when not to use this tool (not for index constituents). It also notes data-source differences and expected variance, giving practical guidance. It does not name alternative tools explicitly, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_rateCompare a rate against the SBOR benchmarkARead-onlyInspect
Given a rate you have been offered, say whether it is above or below the market for that currency, and by how much. This is the main reason SBOR exists. Recommended use: if a borrow offer is more than 50 basis points above the benchmark, stop and ask a human. Use SBOR to stop, never to start. For a USDC loan against bitcoin (cbBTC or WBTC) on Base or Ethereum, compare with BTC-COLLATERAL-USDC; for lending on Stacks, with the index for the currency. This tool refuses rather than guesses: an error result means there is no trustworthy answer, not that the rate is bad.
| Name | Required | Description | Default |
|---|---|---|---|
| rate | Yes | The rate offered, as a percentage between 0 and 100. 4.2 means 4.2%, not 0.042. | |
| side | Yes | Whether you would be borrowing or supplying. | |
| index | Yes | Which benchmark: a Stacks currency index, or BTC-COLLATERAL-USDC for borrowing USDC against bitcoin on Base and Ethereum. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds a critical behavioral trait beyond annotations: 'This tool refuses rather than guesses: an error result means there is no trustworthy answer, not that the rate is bad.' This clarifies error semantics, which is valuable and not present in annotations. It does not contradict annotations. A score of 4 reflects strong added transparency without going into exhaustive detail (e.g., no mention of rate limits or response format).
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 moderately long but each sentence adds distinct value: purpose, recommended use, index guidance, and error semantics. It is front-loaded with the core purpose and then layers practical advice. No redundancy or fluff, and the structure is logical. It earns a 4 for being efficient while covering multiple facets.
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?
Without an output schema, the description must convey what the tool returns, which it does ('say whether it is above or below... and by how much'). It also covers error behavior, which is critical. All three required parameters are explained in the schema, and the description adds usage context. Given the tool's moderate complexity (3 params, no nested objects), the description is complete enough for an agent to call 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?
Schema coverage is 100%, so all parameters are documented in the schema itself. The description adds meaningful context beyond the schema, particularly for the index parameter: it gives real-world scenarios ('For a USDC loan against bitcoin... compare with BTC-COLLATERAL-USDC; for lending on Stacks, with the index for the currency.'). This goes beyond a bare baseline of 3, adding practical selection logic that the schema does not provide.
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 ('compare') and resource ('a rate against the SBOR benchmark'), and explicitly says it outputs whether the rate is above or below the market and by how much. This directly distinguishes it from siblings like get_rate (which likely returns the benchmark) and compare_chains (which compares across chains).
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?
Provides a concrete, actionable trigger: 'if a borrow offer is more than 50 basis points above the benchmark, stop and ask a human.' Also gives specific guidance for selecting the index (e.g., 'for a USDC loan against bitcoin... compare with BTC-COLLATERAL-USDC') and the general principle 'Use SBOR to stop, never to start.' This is explicit, context-rich guidance that tells an agent exactly when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyGet the SBOR historyARead-onlyInspect
Daily fixings since the index began. Use this to see whether a rate is unusual, or how the cost of capital has moved. Means are given per methodology version, never across a change in how the number is built.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days back, up to 200. Default 30. | |
| index | Yes | Which currency. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds meaningful behavioral context by stating that means are computed per methodology version and never across methodology changes, which is a non-obvious data behavior beyond what annotations provide.
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 filler. The core definition is front-loaded, followed by concrete use cases and a key methodological caveat, all in a compact and scannable format.
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 simple two-parameter read-only tool, the description covers purpose, use cases, and an important data nuance. It does not explicitly describe the output shape, but the absence of an output schema is mitigated by the clear 'daily fixings' framing and the simple parameter set.
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%, so the input schema fully documents both parameters. The description does not add parameter-specific details, but it does add useful context about the nature of the returned data; baseline 3 is appropriate.
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 identifies the tool as returning daily fixings since the index began, with a specific verb and resource. It also gives concrete use cases ('see whether a rate is unusual, or how the cost of capital has moved'), which distinguishes it from sibling tools like get_rate or compare_rate.
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 explicitly states when to use this tool: to assess unusual rates or capital cost movement. It does not explicitly name alternatives or exclusion conditions, but the use-case framing provides clear context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_methodologyHow SBOR is calculatedARead-onlyInspect
The full methodology and integration policy: how the fixing is built, what is excluded and why, and what SBOR will and will not do. Read this before quoting a rate in anything that matters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and openWorldHint=false. The description adds useful context by framing the tool as an informational reference covering exclusions and policy, reinforcing that it is non-mutating and safe to call.
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?
Two tight sentences with no filler. The core scope is front-loaded, and the usage directive is concise and actionable.
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 parameterless, read-only methodology resource, the description fully covers what the agent will learn and when to consult it. No output schema is necessary for safe 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?
The input schema has zero parameters, so there is nothing to document at the parameter level. The description compensates by explaining what content the tool provides, meeting the baseline for a parameterless tool.
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 subject and scope: the full SBOR methodology and integration policy, including how the fixing is built, what is excluded, and what SBOR will/will not do. This differentiates it from siblings like get_rate (actual rate values) and compare_rate (comparisons).
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 final sentence gives explicit guidance: read this before quoting a rate in anything that matters. It does not name alternative tools, but the directive clearly signals the appropriate context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rateGet the current SBOR fixingARead-onlyInspect
The benchmark borrow and supply rate for lending on Stacks, read from lending contract state. Use this to judge whether a lending offer is good: borrowing above the SBOR borrow rate means paying more than the market, supplying below the supply rate means earning less. Returns every currency index unless one is named. Always read the freshness line first.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Currency index, or BTC-COLLATERAL-USDC for borrowing USDC against bitcoin on Base and Ethereum. Omit for all of them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns with that by noting it reads from lending contract state. It adds useful behavior beyond annotations: returns every currency index unless one is named, and the freshness line instruction. These are behavioral details not present in annotations, so it earns a solid 4.
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 three sentences with no wasted words. It front-loads the purpose, then adds usage guidance and a critical operational hint. Every sentence earns its place, and the structure is clear and scannable.
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 simple read-only tool with one optional parameter and no output schema, the description covers purpose, usage, return behavior (all indices unless specified), and a freshness warning. It does not specify the exact response format or potential error cases, but given the low complexity and existing annotations, it is adequately complete.
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 has 100% coverage with a detailed enum description for the optional index parameter, including the meaning of BTC-COLLATERAL-USDC and the omission behavior. The description adds nothing beyond what the schema already provides, so a baseline 3 is appropriate.
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 fetches the benchmark borrow and supply rates for lending on Stacks, with a specific verb ('get') and resource ('rate'). It also explains the practical use case (judging whether an offer is good), which adds clarity. However, it does not explicitly differentiate from sibling tools like compare_rate or compare_chains, so it loses a point.
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 concrete usage context: borrowing above the SBOR rate is expensive, supplying below the supply rate is cheap, and it instructs to read the freshness line first. This tells an agent when and how to use it, but it does not explicitly state when not to use it or mention alternative tools, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_marketsList the lending markets behind a rateARead-onlyInspect
Every venue and asset in an index, with its borrow rate, supply rate, utilization, depth and weight. Utilization explains why a rate sits where it does.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Currency index, or BTC-COLLATERAL-USDC. Omit for the Stacks indices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns with that by describing a listing/read operation. The description adds useful behavioral context by enumerating the returned data fields and explaining the interpretive role of utilization, going beyond the structured annotations.
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?
Two sentences, no filler, with the core scope stated first and a meaningful explanatory clause second. Every sentence earns its place.
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 simple read-only listing tool with one well-documented optional parameter, the description plus annotations and schema fully cover what an agent needs: what the tool returns, why it matters, and that it is safe to call.
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% for the single optional index parameter, including an enum and guidance to omit it for Stacks indices. The description adds no new parameter-level detail, which is acceptable because the schema already fully documents the parameter.
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 uses a specific verb ('List') and a clear resource ('every venue and asset in an index'), with concrete output fields (borrow rate, supply rate, utilization, depth, weight). This distinguishes it from sibling tools like get_rate or compare_rate, which focus on rates or comparisons rather than the underlying market composition.
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 for understanding why an index rate sits where it does, especially via utilization. However, it does not explicitly state when to use this tool versus alternatives such as get_rate or compare_chains, nor does it mention exclusions or prerequisites.
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.
6 tool updates
- First observed
compare_chains - First observed
compare_rate - First observed
get_history - First observed
get_methodology - First observed
get_rate - First observed
list_markets
Related MCP Connectors
Oracle-free fixed-rate, fixed-term BTC credit on Arbitrum One. Data and unsigned blueprints.
Maker - 10 tools for lending rates, supply, and borrow data
Paid Base USDC lending decisions and rate-risk alerts, plus free risk and routing tools.
Risk-adjusted stablecoin yield ranks for other agents. Research only. Never holds keys or executes.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to preview Base token market data, evaluate SpendGuard spending policies, and read x402 payment challenge terms without signing or paying.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceLets AI agents check credit scores, request underwriting decisions, and review credit market stats, all via free unauthenticated tools on Base L2.MIT
- AlicenseBqualityBmaintenanceEnables agents to discover, understand, and plan native Bitcoin staking on Stacks through a read-only interface combining live PoX state, bond manifests, yield scenarios, security guidance, and compatibility checks. It includes a goal-first concierge workflow and explicitly separates live, published, derived, and demo data.14MIT
- AlicenseNot gradedqualityCmaintenanceBroker-only credit/lending discovery shim for AI agents, surfacing real lending markets from licensed/established third-party protocols and routing applications.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.