treasury-fiscaldata-mcp-server
Server Details
MCP server for US Treasury Fiscal Data — debt, interest rates, exchange rates, and spending.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/treasury-fiscaldata-mcp-server
- GitHub Stars
- 2
- Server Listing
- @cyanheads/treasury-fiscaldata-mcp-server
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.4/5 across 7 of 7 tools scored.
Each tool has a distinct purpose: specific data retrieval (debt, exchange rates, interest rates), catalog browsing, generic API querying, and dataframe management. No overlap in functionality.
All tools follow a consistent 'treasury_verb_noun' pattern with underscores. Verbs like 'get', 'list', 'query', 'describe' are appropriately used for their actions.
7 tools is well-scoped for the domain—covering key datasets, discovery, and analytical capabilities without being overwhelming or insufficient.
The tool set covers discovery, retrieval of major datasets, arbitrary API queries, and data caching/analysis. No obvious gaps for a read-only fiscal data API.
Available Tools
7 toolstreasury_dataframe_describeDescribe Treasury DataframesARead-onlyIdempotentInspect
List DataCanvas dataframes materialized by treasury_query_dataset, treasury_get_debt, treasury_get_interest_rates, and treasury_get_exchange_rates. Each entry surfaces source tool, query parameters, creation/expiry timestamps, row count, and column schema. Use this tool before treasury_dataframe_query to discover table names and column types. Requires CANVAS_PROVIDER_TYPE=duckdb.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional dataframe table name (df_XXXXX_XXXXX) to describe a single dataframe. Omit to list all active dataframes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dataframes | Yes | Active dataframes for this tenant, newest first. Empty when none are registered. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds behavioral details beyond annotations: it describes the output structure (source tool, query parameters, timestamps, row count, column schema) and the list of source tools that materialize dataframes.
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 consists of two succinct sentences. The first states the core function and output details; the second provides usage guidance and a prerequisite. No superfluous information.
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 tool is simple (list dataframes), and an output schema exists, the description covers all necessary context: what it lists, why to use it (before treasury_dataframe_query), and a configuration requirement. No gaps remain.
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% with a single optional parameter 'name'. The description adds the semantic nuance that omitting the parameter lists all active dataframes, while providing it filters to a specific table. This adds some meaning beyond the schema, but the schema already describes the parameter well.
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 tool lists DataCanvas dataframes materialized by four specific treasury tools. It distinguishes from sibling 'treasury_dataframe_query' by stating it should be used before that tool to discover table names and column types.
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?
Explicitly states usage context: 'Use this tool before treasury_dataframe_query to discover table names and column types.' Also provides a prerequisite: 'Requires CANVAS_PROVIDER_TYPE=duckdb.' While it does not enumerate when not to use it, the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_dataframe_queryQuery Treasury DataframesARead-onlyIdempotentInspect
Run a single-statement SELECT against DataCanvas dataframes registered by treasury_query_dataset, treasury_get_debt, treasury_get_interest_rates, and treasury_get_exchange_rates. Read-only: writes, DDL, DROP, COPY, PRAGMA, ATTACH, and external-file table functions are rejected. System catalogs (information_schema, pg_catalog, sqlite_master, duckdb_*) are denied at the bridge layer. All Treasury dataframe columns are VARCHAR — CAST to DECIMAL or DATE for arithmetic and date comparisons. Use treasury_dataframe_describe to list available table names and column schemas before querying.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | Single-statement SELECT against df_<id> tables. All values in Treasury dataframes are VARCHAR (strings) per the API contract — CAST to DECIMAL or DATE for arithmetic and date comparisons. Example: SELECT record_date, CAST(tot_pub_debt_out_amt AS DECIMAL) AS debt FROM df_xxxxx ORDER BY record_date DESC LIMIT 10. | |
| preview | No | Rows in the immediate response. Defaults to row_limit. Set lower when using register_as. | |
| row_limit | No | Hard cap on rows in the response. Default 1000, max 10000. | |
| register_as | No | Persist result as a new dataframe. Use to chain analyses. The name must match df_XXXXX_XXXXX format or be a fresh df_<id>. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rows | Yes | Materialized rows, bounded by preview / row_limit. |
| notice | No | Guidance when the query returned no rows, or when results were capped by row_limit. |
| columns | Yes | Column names in projection order. |
| row_count | Yes | Total rows the query produced (may exceed rows.length when capped). |
| expires_at | No | ISO 8601 expiry timestamp for the newly registered dataframe, when applicable. |
| registered_as | No | Set when register_as was supplied and the new dataframe was materialized. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description details rejected operations (DDL, DROP, etc.) and that all columns are VARCHAR, which is critical for querying. No contradiction with 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?
Single paragraph that front-loads the core action, then restrictions, then CAST caveat. Efficient but could be slightly more structured with bullet points for clarity.
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 complexity (4 params, output schema exists), the description is fully complete: explains data type peculiarities, restrictions, and suggests using a sibling tool first. No missing behavioral details.
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% with detailed descriptions, so baseline is 3. The tool description adds extra context like default row_limit and register_as format, but no schema-level gaps exist.
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 'Run a single-statement SELECT against DataCanvas dataframes' and lists which sibling tools register the dataframes, distinguishing it from those and from treasury_dataframe_describe which lists tables.
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?
Explicitly says to use treasury_dataframe_describe before querying to get table names. Provides an example SQL query with CAST hints. Lacks explicit 'when not to use' but the read-only restrictions implicitly guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_get_debtGet National DebtARead-onlyIdempotentInspect
Fetch national debt (Debt to the Penny) — total public debt outstanding broken into publicly-held debt and intragovernmental holdings. Three modes: "latest" returns the most recent business day's record; "date" returns the record for a specific date (must be a business day — the API only records debt on days markets are open); "series" returns a date range and optionally spills results to DataCanvas for SQL analysis via treasury_dataframe_query. Records go back to 1993-01-04. As of 2026-05-28 the total debt is approximately $39.18T.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ISO 8601 date (YYYY-MM-DD) for mode=date. Must be a business day; the API only records debt on days the market is open. | |
| mode | No | "latest" returns the most recent day's record. "date" returns the record for a specific date. "series" returns a date range — use with start_date and end_date. | latest |
| end_date | No | ISO 8601 end date for mode=series (inclusive). Defaults to today. | |
| canvas_id | No | DataCanvas table name (df_XXXXX_XXXXX) to register series results into for SQL analysis. When provided, or when the series exceeds 500 rows, the full result is registered and the name is returned in canvas_id. Use treasury_dataframe_query to run SQL against it. Requires CANVAS_PROVIDER_TYPE=duckdb. | |
| start_date | No | ISO 8601 start date for mode=series (inclusive). Fiscal Data has daily debt records back to 1993-01-04. |
Output Schema
| Name | Required | Description |
|---|---|---|
| series | No | All records for mode=series (may be truncated when spilled to canvas). |
| canvas_id | No | DataCanvas table name when series was spilled. Use treasury_dataframe_query to run SQL. |
| total_debt | Yes | Total public debt outstanding in USD (string — convert as needed). Example: "39176301795549.40". |
| record_date | Yes | Date of this debt record (YYYY-MM-DD). For series mode, the most recent date. |
| total_records | No | Total matching records for mode=series. |
| debt_held_public | Yes | Debt held by the public (external creditors, Fed, foreign governments) in USD. |
| canvas_expires_at | No | ISO 8601 expiry for the canvas dataframe. |
| intragovernmental_holdings | Yes | Intragovernmental holdings (debt owed to federal trust funds, Social Security, etc.) in USD. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and idempotent behavior. The description adds valuable context: the API only records debt on business days, records go back to 1993-01-04, and series results beyond 500 rows are spilled to DataCanvas. No contradictions with 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?
The description is well-structured and informative, covering modes, constraints, and integration points. It is not overly long, though it could be slightly more concise. Every sentence adds value, and key details are 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?
Given 5 parameters with high schema coverage, annotations, and an output schema, the description covers all necessary aspects: modes, business day constraint, historical depth, series handling, and DataCanvas integration. No missing context for agent 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 coverage is 100%, so the schema already documents parameters well. The description adds some context (e.g., business day requirement for date, start_date history) but does not significantly enhance understanding beyond the schema descriptions. Baseline of 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 the tool's purpose: fetching national debt data broken into publicly-held and intragovernmental holdings. It specifies three distinct modes (latest, date, series) and distinguishes from sibling tools like treasury_get_exchange_rates and treasury_get_interest_rates by focusing on debt.
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 clear guidance on when to use each mode: 'latest' for most recent, 'date' for a specific business day, 'series' for a date range with optional DataCanvas integration. It explains constraints like business days and the 500-row spill threshold. However, it does not explicitly state when not to use the tool or provide direct comparisons to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_get_exchange_ratesGet Treasury Exchange RatesARead-onlyIdempotentInspect
Official Treasury reporting exchange rates for ~130 countries — the rates US federal agencies are required to use when converting foreign currency to USD for official reporting. Published quarterly (March 31, June 30, Sep 30, Dec 31). Rate is expressed as foreign currency units per 1 USD (e.g., Japan-Yen: 159.41 means 1 USD = 159.41 JPY). These are NOT market exchange rates and are not suitable for financial transaction pricing. The latest quarter available is 2026-03-31 (Q1 2026).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "latest" returns the most recently published quarter's rates. "series" returns a date range of quarterly reports. | latest |
| end_date | No | ISO 8601 end date for mode=series. | |
| canvas_id | No | DataCanvas table name (df_XXXXX_XXXXX) to register series results into for SQL analysis. Useful when pulling multi-year history for many countries (~18,800 rows total). When provided, or when mode=series and results exceed 500 rows, the result is registered and canvas_id is returned. Use treasury_dataframe_query to query it. Requires CANVAS_PROVIDER_TYPE=duckdb. | |
| countries | No | Filter to specific countries by exact country name (e.g., ["Japan", "Germany", "France"]). Case-sensitive, matches the "country" field. Omit for all ~130 countries in the quarter. | |
| start_date | No | ISO 8601 start date for mode=series. Rates are published end-of-quarter (March 31, June 30, Sep 30, Dec 31). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | Contextual note reminding that these are official reporting rates, not market rates. |
| rates | Yes | Exchange rates for the requested countries/quarter. |
| notice | No | Guidance when a requested country was not found or returned no records. |
| canvas_id | No | DataCanvas table name for series results. Use treasury_dataframe_query to run SQL. |
| as_of_date | Yes | Quarter-end date of the most recent rates (YYYY-MM-DD). |
| total_records | Yes | Total records returned. |
| effective_date | Yes | Effective date of the rates (same as record_date). |
| canvas_expires_at | No | ISO 8601 expiry for the canvas dataframe. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds that rates are published quarterly, provides the meaning of the rate format, and explains result registration for large series. This enriches behavioral understanding without contradicting 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?
The description is a single, well-structured paragraph of five sentences. It front-loads the core purpose and each sentence provides essential information without redundancy. No waste.
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 complexity (5 parameters, output schema exists), the description covers the core purpose, limitations (not for transactions), publication schedule, rate format, and result registration behavior. It is sufficiently complete for an agent to use 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 description coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining the rate meaning 'foreign currency units per 1 USD' and the purpose of canvas_id for large result sets. It enhances parameter understanding.
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 explicitly states the tool retrieves official Treasury reporting exchange rates for ~130 countries, a specific resource and verb. It clearly distinguishes from sibling tools like treasury_get_debt and treasury_get_interest_rates by focusing solely on exchange rates.
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 warns that these are not market exchange rates and are unsuitable for financial transaction pricing, which guides when not to use. It also provides the latest available quarter, giving temporal context. While it doesn't explicitly compare to siblings, the purpose is distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_get_interest_ratesGet Treasury Interest RatesARead-onlyIdempotentInspect
Average interest rates Treasury pays on its outstanding securities by security type. Answers "what is the government's cost of borrowing?" Covers Bills, Notes, Bonds, TIPS, Floating Rate Notes, and aggregate marketable/non-marketable totals. Updated monthly (end-of-month records). Mode "latest" returns the most recent month's rates for all or one security type; "series" returns a time history. As of 2026-04-30: Bills 3.696%, Notes 3.230%, Bonds 3.403%, TIPS 1.068%, FRN 3.764%, Total Interest-bearing Debt 3.340%.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | "latest" returns the most recent month's rates. "series" returns a time range. | latest |
| end_date | No | ISO 8601 end date for mode=series. Defaults to today. | |
| canvas_id | No | DataCanvas table name (df_XXXXX_XXXXX) to register series results into for SQL analysis. When provided, or when mode=series and results exceed 200 rows, the result is registered and canvas_id is returned. Use treasury_dataframe_query to query it. Requires CANVAS_PROVIDER_TYPE=duckdb. | |
| start_date | No | ISO 8601 start date for mode=series (YYYY-MM-DD, must be end-of-month for meaningful results). | |
| security_type | No | Filter to one security type. Omit for all types. Use the exact string — the API does exact-match filtering on security_desc. |
Output Schema
| Name | Required | Description |
|---|---|---|
| rates | Yes | Interest rate records. |
| notice | No | Guidance when no records match — lists valid security types or notes the empty date range. |
| canvas_id | No | DataCanvas table name for series results. Use treasury_dataframe_query to run SQL. |
| as_of_date | Yes | Most recent record date returned (YYYY-MM-DD). |
| total_records | Yes | Total matching records. |
| canvas_expires_at | No | ISO 8601 expiry for the canvas dataframe. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description does not need to reiterate safety. It adds value by noting monthly updates, the exact security types covered, and the date-context example. No contradictions with 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?
The description is efficient, front-loaded with the main purpose, and each sentence adds information. The example date and rates are somewhat verbose but ground the output. Could be slightly trimmed, but still 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?
Given the tool has an output schema (not shown but present), the description does not need to detail return values. It adequately covers modes, filtering, update frequency, and offloading results via canvas_id. For a tool with 5 parameters, this is sufficiently 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?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond schema: it explains the purpose of 'latest' vs 'series', warns about end-of-month dates for start_date, and tells agents to use exact strings for security_type. It also clarifies canvas_id usage for dataframe registration.
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 ('returns') and resource ('average interest rates Treasury pays on its outstanding securities by security type'), clearly distinguishing this tool from siblings like treasury_get_debt or treasury_dataframe_query. It also provides concrete examples of security types and sample data.
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 the two modes ('latest' vs 'series') but does not explicitly state when to use this tool versus sibling tools like treasury_dataframe_query or treasury_get_debt. There is no 'when-not-to-use' guidance or mention of alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_list_datasetsList Treasury Fiscal Data DatasetsARead-onlyIdempotentInspect
Browse the curated catalog of US Treasury Fiscal Data API endpoints. Returns endpoint paths, field names, descriptions, and update cadence for each dataset. Use this tool before treasury_query_dataset to discover the correct endpoint path and field names — a typo in either causes a 400 error from the API. The catalog is a curated subset of the full API — pass any endpoint path directly to treasury_query_dataset to query datasets not listed here. The catalog covers debt, interest rates, exchange rates, revenue/spending, savings bonds, and securities datasets.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Keyword filter against dataset name and description (case-insensitive substring match). Useful for narrowing results when the category is uncertain. | |
| category | No | Filter by category. Omit to list all datasets. Options: debt, interest_rates, exchange_rates, revenue_spending, savings_bonds, securities, other. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Total matching datasets. |
| datasets | Yes | Matching datasets. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so description is not required to repeat those. The description adds behavioral context (catalog is curated, typos cause errors) that enriches agent understanding without contradicting 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?
Four sentences, front-loaded with primary purpose, no wasted words. Efficiently covers purpose, usage, and warnings.
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 catalog discovery tool with 2 optional params and output schema, the description fully covers the catalog's nature, sibling relationship, error prevention, and categories. No gaps given 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 100%, baseline 3. The description adds value by explaining the 'search' parameter's use case (narrow when category uncertain) and lists category options, providing context beyond schema property descriptions.
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's action ('Browse the curated catalog'), specifies what it returns (endpoint paths, field names, descriptions, update cadence), and distinguishes it from sibling treasury_query_dataset by noting it is used for discovery before querying. This is specific and differentiated.
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?
Explicitly instructs to use this tool before treasury_query_dataset to avoid 400 errors from typos, and clarifies that the catalog is curated but any endpoint can be passed directly to the sibling. Provides clear when-to-use and when-not-to-use boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treasury_query_datasetQuery Treasury Fiscal Data DatasetARead-onlyIdempotentInspect
Query any Treasury Fiscal Data endpoint by path, field list, filters, sort, and page. Call treasury_list_datasets first to get the correct endpoint path and exact field names — a typo in either causes a 400. Filter syntax: each condition is { field, operator, value } where operator is eq/gt/gte/lt/lte/in (e.g., record_date:gte:2024-01-01). Multiple conditions are ANDed together. All response values are strings per the API contract, including numbers and dates; "null" (string) means no value. Supply canvas_id to register the page result into a named DataCanvas dataframe and query it later with treasury_dataframe_query (requires CANVAS_PROVIDER_TYPE=duckdb on the server).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Sort expression: field name optionally prefixed with "-" for descending (e.g., "-record_date" for newest-first). | |
| fields | No | Fields to return. Omit to return all fields. Specify field names exactly as listed by treasury_list_datasets — a typo causes a 400. | |
| filters | No | Filter conditions (ANDed together). Multiple filters on different fields are combined in one filter= parameter. | |
| endpoint | Yes | Endpoint path returned by treasury_list_datasets (e.g., "/v2/accounting/od/debt_to_penny"). Include the leading slash. | |
| canvas_id | No | DataCanvas ID to spill results into for SQL analysis. Omit to receive results inline. Requires CANVAS_PROVIDER_TYPE=duckdb on the server. When provided, the full page result is registered as a dataframe and a canvas_id is returned for use with treasury_dataframe_query. | |
| page_size | No | Rows per page. Default 100. Raise to 10000 to minimize round trips for small datasets. For large time-series pulls, use canvas_id with treasury_dataframe_query instead. | |
| page_number | No | Page to fetch (1-indexed). Check total_pages in the response to know if more pages exist. |
Output Schema
| Name | Required | Description |
|---|---|---|
| data | Yes | Rows returned. All values are strings per API contract — including numeric and date fields. Convert in the calling context. Null values appear as the string "null". |
| notice | No | Guidance when results are empty, a field typo is suspected, or the endpoint was not found in the catalog. |
| endpoint | Yes | Endpoint that was queried. |
| canvas_id | No | DataCanvas ID where this page is registered. Use with treasury_dataframe_query to run SQL. |
| page_size | Yes | Rows per page. |
| totalCount | No | Total rows matching the query across all pages — discloses that this page is a subset. |
| page_number | Yes | Current page (1-indexed). |
| total_count | Yes | Total rows matching the query (across all pages). |
| total_pages | Yes | Total pages at the current page_size. |
| field_labels | Yes | Human-readable label for each returned field. |
| applied_filters | No | Filter expression sent to the API, for verification. |
| canvas_expires_at | No | ISO 8601 expiry for the canvas dataframe. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description adds useful operational details: response values are all strings, 'null' string means no value, filter syntax with operators, and canvas_id registration. No contradictions.
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 paragraphs, front-loaded with purpose. Every sentence adds value—no redundancy. Efficiently covers usage, parameters, and edge cases.
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 7 parameters, output schema exists, and complex interactions with other tools, the description is thorough. Covers prerequisites, errors, data types, and integration with DataCanvas. No gaps.
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%, baseline 3. Description adds significant meaning: filter syntax with operators, date format, sort prefix '-', canvas_id behavior, and warnings about typos. Enhances understanding beyond 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 tool queries any Treasury Fiscal Data endpoint with specific operations (path, fields, filters, sort, page). It distinguishes from siblings like treasury_list_datasets and treasury_dataframe_query by mentioning the correct workflow.
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?
Explicitly instructs to call treasury_list_datasets first for correct parameters and warns about typos causing 400 errors. Provides guidance on when to use canvas_id for large datasets. Could mention when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityCmaintenanceRead-only MCP server for exploring US federal spending data via the USAspending.gov API, enabling natural language queries on awards, agencies, recipients, and spending trends.12MIT
- Alicense-qualityCmaintenanceA free, key-less MCP server for querying U.S. federal spending data from USAspending.gov, including contracts, grants, loans, recipients, agencies, and geographic breakdowns.MIT
- AlicenseAqualityBmaintenanceMCP server providing official US economic data including CPI inflation, famous prices, national debt, and Treasury interest rates. Enables AI agents to query historical and latest economic statistics via natural language.883MIT
- AlicenseAqualityCmaintenanceProvides curated US economic data from Treasury, FRED, BLS, BEA, and other sources through an MCP interface. Enables querying economic series, fetching data with provenance tracking, and accessing cached artifacts.9MIT
Your Connectors
Sign in to create a connector for this server.