modern-treasury
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
Should I use this
Quality & Safety
Findings (14)
- LOWin modern_treasury_list_counterparties
- LOWin modern_treasury_get_counterparty
- LOWin modern_treasury_list_internal_accounts
- LOWin modern_treasury_list_external_accounts
- LOWin modern_treasury_list_payment_orders
- LOWin modern_treasury_get_payment_order
- LOWin modern_treasury_list_expected_payments
- LOWin modern_treasury_list_transactions
- LOWin modern_treasury_get_transaction
- LOWin modern_treasury_list_ledger_accounts
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"modern-treasury": {
"url": "https://modern-treasury.usefulapi.io/mcp"
}
}
}Remote endpoints
https://modern-treasury.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (17)
🟢modern_treasury_ping
Verify connectivity and credentials. API: GET /ping.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_counterparties(per_page, after_cursor, name, email)
List counterparties (contacts). API: GET /counterparties.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"name": {
"description": "Filter by counterparty name.",
"type": "string"
},
"email": {
"description": "Filter by counterparty email.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_get_counterparty(id)
Get a single counterparty by id. API: GET /counterparties/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Counterparty id."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_internal_accounts(per_page, after_cursor)
List your organization's internal bank accounts. API: GET /internal_accounts.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_external_accounts(per_page, after_cursor, counterparty_id)
List external (counterparty) bank accounts. API: GET /external_accounts.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"counterparty_id": {
"description": "Filter by owning counterparty id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_payment_orders(per_page, after_cursor, status, direction, counterparty_id)
List payment orders (READ ONLY — does not create or approve payments). API: GET /payment_orders.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"status": {
"description": "Filter by status, e.g. approved, pending, completed.",
"type": "string"
},
"direction": {
"description": "Filter by direction.",
"type": "string",
"enum": [
"credit",
"debit"
]
},
"counterparty_id": {
"description": "Filter by counterparty id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_get_payment_order(id)
Get a single payment order by id (READ ONLY). API: GET /payment_orders/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Payment order id."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_expected_payments(per_page, after_cursor, status)
List expected payments (READ ONLY). API: GET /expected_payments.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"status": {
"description": "Filter by status, e.g. unreconciled, reconciled.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_transactions(per_page, after_cursor, internal_account_id)
List bank transactions. API: GET /transactions.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"internal_account_id": {
"description": "Filter by internal account id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_get_transaction(id)
Get a single transaction by id. API: GET /transactions/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Transaction id."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_returns(per_page, after_cursor)
List payment returns (e.g. ACH returns). API: GET /returns.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_ledgers(per_page, after_cursor)
List double-entry ledgers. API: GET /ledgers.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_ledger_accounts(per_page, after_cursor, ledger_id)
List ledger accounts. API: GET /ledger_accounts.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"ledger_id": {
"description": "Filter by ledger id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_get_ledger_account(id)
Get a single ledger account by id, including balances. API: GET /ledger_accounts/{id}.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Ledger account id."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_ledger_transactions(per_page, after_cursor, ledger_id)
List ledger transactions (READ ONLY — does not post value). API: GET /ledger_transactions.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"ledger_id": {
"description": "Filter by ledger id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢modern_treasury_list_ledger_entries(per_page, after_cursor, ledger_account_id)
List ledger entries (individual debits/credits). API: GET /ledger_entries.
Input Schema
{
"type": "object",
"properties": {
"per_page": {
"description": "Results per page (default 25, max 100).",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100
},
"after_cursor": {
"description": "Pagination cursor from a prior response's next_cursor (X-After-Cursor header).",
"type": "string"
},
"ledger_account_id": {
"description": "Filter by ledger account id.",
"type": "string"
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴modern_treasury_create_counterparty(name, email, metadata)
Creates a counterparty (contact) record in Modern Treasury. Creates a record only — no bank details, MOVES NO MONEY. API: POST /counterparties.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Counterparty (contact) name."
},
"email": {
"description": "Counterparty email.",
"type": "string"
},
"metadata": {
"description": "Arbitrary string key/value metadata.",
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "string"
}
}
},
"required": [
"name"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Recommended Prompts
modern_treasury_get_counterpartymodern_treasury_get_counterpartymodern_treasury_list_counterpartiesmodern_treasury_list_counterpartiesmodern_treasury_list_counterpartiesmodern_treasury_get_counterpartyCommunity
Evidence