Skip to main content
Glama
pam-supastellar

CashChat MCP Server

CashChat MCP Server

Connect your financial data to AI assistants like Claude

CashChat MCP Server exposes your CashChat financial data to AI assistants via the Model Context Protocol (MCP). It supports both local stdio connections and remote URL-based connections with OAuth 2.0 authentication.

Features

  • šŸ” OAuth 2.0 Authentication - Secure URL-based connections for Claude Desktop

  • šŸ’° Transaction Management - Query, add, update, and delete transactions

  • šŸ“Š Financial Analytics - Get spending summaries and category breakdowns

  • āš™ļø Settings Control - Manage currency preferences and AI agent instructions

  • šŸš€ Multiple Deployment Options - Run locally, Node.js server, or Cloudflare Workers

  • šŸ”Œ MCP Standard Compliant - Works with any MCP-compatible AI assistant

Related MCP server: MCP Agent - AI Expense Tracker

Quick Start

For Claude Desktop Users (URL-based connection)

This is the recommended way to connect CashChat to Claude Desktop using a publicly accessible server.

1. Get Your CashChat API Key

Sign up at CashChat and get your API key from the settings page.

2. Connect to the Public Server

Add this configuration to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "cashchat": {
      "url": "https://cashchat.supastellar.dev/sse",
      "oauth": {
        "authUrl": "https://cashchat.supastellar.dev/oauth/authorize",
        "tokenUrl": "https://cashchat.supastellar.dev/oauth/token",
        "clientId": "cashchat-mcp-server",
        "scopes": ["read", "write"]
      }
    }
  }
}

3. Restart Claude Desktop

Restart Claude Desktop and you'll be prompted to authorize the connection. Click "Authorize" and you're ready to go!

4. Try It Out

In Claude Desktop, try asking:

  • "What did I spend on groceries this month?"

  • "Add a transaction: $50 for dinner at Joe's Restaurant"

  • "Show me my spending summary for this week"


Local Development & Self-Hosting

Prerequisites

  • Node.js 18 or higher

  • npm or yarn

  • CashChat API key

Installation

  1. Clone the repository:

git clone https://github.com/supastellar/cashchat-mcp
cd cashchat-mcp
  1. Install dependencies:

npm install
  1. Configure environment variables:

cp .env.example .env

Edit .env and add your CashChat API key:

CASHCHAT_API_KEY=your_api_key_here
PORT=3000
SERVER_URL=http://localhost:3000
  1. Build the project:

npm run build
  1. Start the server:

npm run start:server

The server will be running at http://localhost:3000.

Testing Locally

Connect Claude Desktop to your local server by updating the config:

{
  "mcpServers": {
    "cashchat": {
      "url": "http://localhost:3000/sse",
      "oauth": {
        "authUrl": "http://localhost:3000/oauth/authorize",
        "tokenUrl": "http://localhost:3000/oauth/token",
        "clientId": "cashchat-mcp-server",
        "scopes": ["read", "write"]
      }
    }
  }
}

Note: Claude Desktop may require HTTPS for OAuth. For local testing with HTTPS, use a tool like ngrok or localtunnel.


Legacy stdio Mode (for local-only setup)

If you prefer the classic stdio-based local connection without OAuth:

Claude Desktop Config (stdio mode)

{
  "mcpServers": {
    "cashchat": {
      "command": "node",
      "args": ["/absolute/path/to/cashchat-mcp/build/index.js"],
      "env": {
        "CASHCHAT_API_KEY": "your_api_key_here"
      }
    }
  }
}

This mode runs the server as a subprocess and communicates via stdin/stdout. No HTTP server or OAuth required.


Available Tools

The MCP server provides 8 tools for interacting with your financial data:

Transaction Tools

get_transactions

Retrieve transactions with optional filters.

Parameters:

  • startDate (optional): Start date (YYYY-MM-DD)

  • endDate (optional): End date (YYYY-MM-DD)

  • category (optional): Filter by category

  • limit (optional): Max results (default: 50)

  • offset (optional): Pagination offset

Example:

Get my transactions from January 2024

add_transaction

Add a new transaction.

Parameters:

  • amount (required): Transaction amount

  • category (required): Category (e.g., Food, Transport)

  • date (required): Date (YYYY-MM-DD)

  • type (optional): 'expense' or 'income' (default: expense)

  • note (optional): Description

  • name (optional): Merchant name

Example:

Add a transaction: $75 for groceries at Whole Foods on 2024-01-15

update_transaction

Update an existing transaction.

Parameters:

  • id (required): Transaction ID

  • amount (optional): New amount

  • category (optional): New category

  • note (optional): New note

  • name (optional): New merchant name

delete_transaction

Delete a transaction.

Parameters:

  • id (required): Transaction ID to delete

Analytics Tools

get_summary

Get spending summary for a time period.

Parameters:

  • period (required): 'day', 'week', 'month', or 'year'

  • date (optional): Reference date (defaults to today)

Example:

Show me my spending summary for this month

get_categories

List all available transaction categories.

Example:

What categories can I use?

Settings Tools

get_settings

Get your CashChat settings.

update_settings

Update your CashChat settings.

Parameters:

  • preferredCurrency (optional): Currency code (USD, CAD, EUR, etc.)

  • agentInstructions (optional): Custom instructions for AI assistant


Deployment

For production deployment instructions, see DEPLOYMENT.md.

Quick Deployment Options

Deploy on Railway

  1. Click the button above

  2. Add your CASHCHAT_API_KEY

  3. Deploy!

Cloudflare Workers

npm install -g wrangler
wrangler login
wrangler secret put CASHCHAT_API_KEY
wrangler deploy

See DEPLOYMENT.md for detailed instructions.


Architecture

URL-Based Mode (HTTP + SSE + OAuth)

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”          ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Claude Desktop │          │  CashChat MCP    │
│                 │          │  Server (HTTP)   │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤          ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│                 │          │                  │
│  1. OAuth Flow  │ ◄───────►│  /oauth/*        │
│                 │          │                  │
│  2. SSE Connect │ ◄───────►│  /sse            │
│                 │          │                  │
│  3. MCP Tools   │ ◄───────►│  MCP Server      │
│                 │          │                  │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜          ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
                                      │
                                      ā–¼
                             ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
                             │  CashChat API    │
                             │  (Backend)       │
                             ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Legacy stdio Mode

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”          ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Claude Desktop │          │  CashChat MCP    │
│                 │          │  Server (stdio)  │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤          ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│                 │          │                  │
│  stdio pipe     │ ◄───────►│  MCP Server      │
│                 │          │                  │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜          ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
                                      │
                                      ā–¼
                             ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
                             │  CashChat API    │
                             │  (Backend)       │
                             ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

Security

  • OAuth 2.0 with PKCE support for secure authorization

  • Bearer token authentication for API requests

  • HTTPS required in production

  • Token expiration (30 days default)

  • Scope-based permissions (read/write)

Production Security Recommendations

  1. Use HTTPS only (no HTTP in production)

  2. Set OAUTH_CLIENT_SECRET for additional security

  3. Implement rate limiting

  4. Use a proper database for token storage (not in-memory)

  5. Rotate API keys regularly

  6. Monitor access logs


Troubleshooting

"Connection refused" error

  • Check if the server is running

  • Verify the URL in your Claude Desktop config

  • Ensure firewall allows the port

OAuth authorization fails

  • Confirm SERVER_URL is publicly accessible

  • Check that URLs in Claude config match your server

  • Verify HTTPS is enabled (required by Claude Desktop)

"Invalid API key" error

  • Check your CASHCHAT_API_KEY is correct

  • Verify the API key is active in your CashChat account

Tools not showing up in Claude

  • Restart Claude Desktop after config changes

  • Check server logs for errors

  • Verify OAuth flow completed successfully

For more help, see DEPLOYMENT.md or open an issue.


Development

Project Structure

cashchat-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # Legacy stdio server
│   ā”œā”€ā”€ server.ts             # HTTP/SSE server with OAuth
│   ā”œā”€ā”€ worker.ts             # Cloudflare Workers version
│   ā”œā”€ā”€ types.ts              # TypeScript types
│   ā”œā”€ā”€ api/
│   │   └── client.ts         # CashChat API client
│   ā”œā”€ā”€ auth/
│   │   ā”œā”€ā”€ tokenStore.ts     # OAuth token storage
│   │   ā”œā”€ā”€ middleware.ts     # Auth middleware
│   │   └── oauthRoutes.ts    # OAuth endpoints
│   └── tools/
│       ā”œā”€ā”€ transactions.ts   # Transaction tools
│       └── summary.ts        # Analytics tools
ā”œā”€ā”€ build/                    # Compiled JavaScript
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ wrangler.toml            # Cloudflare Workers config
└── README.md

Scripts

  • npm run build - Compile TypeScript

  • npm run dev - Watch mode for development

  • npm start - Run stdio server (legacy)

  • npm run start:server - Run HTTP/SSE server

  • npm run dev:server - Development mode with auto-reload

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request


License

MIT License - see LICENSE for details.



Support

Need help?


Built with ā¤ļø by Supa Stellar

Available Tools

8 tools
add_transactionC

Add a new transaction to CashChat

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesTransaction amount (positive number)
categoryYesCategory (e.g., Food, Transport, Shopping)
dateYesDate (YYYY-MM-DD)
noteNoOptional note/description
typeNoTransaction typeexpense
nameNoMerchant/transaction name

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention whether this is a write operation (implied but not explicit), what permissions might be required, whether transactions are reversible, how errors are handled, or what happens on success. For a mutation tool with zero annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with good schema documentation and no complex behavioral nuances to explain.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is inadequate. It doesn't explain what happens after adding a transaction (e.g., returns success confirmation, transaction ID, or error details), doesn't mention constraints beyond what's in the schema, and provides no behavioral context. Given the complexity of a write operation, more completeness is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so all parameters are documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and resource ('new transaction to CashChat'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'update_transaction', which would require mentioning that this creates new records rather than modifying existing ones.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'update_transaction' or 'delete_transaction'. It doesn't mention prerequisites, constraints, or appropriate contexts for creating transactions versus other operations available in the sibling tool set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_transactionC

Delete a transaction from CashChat

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTransaction ID to delete

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't specify whether this operation is reversible, what permissions are required, what happens to associated data, or what the response looks like. For a destructive tool with zero annotation coverage, 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single, clear sentence that states exactly what the tool does. There's zero wasted verbiage, and the information is front-loaded with the core action and target.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It doesn't address critical context like whether deletion is permanent, what permissions are needed, what happens upon success/failure, or how this differs from other transaction operations. The description should do more given the tool's complexity and potential consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'id' clearly documented as 'Transaction ID to delete'. The description doesn't add any additional parameter context beyond what the schema provides, so the baseline score of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target resource ('a transaction from CashChat'), providing specific verb+resource pairing. However, it doesn't distinguish this tool from potential alternatives like 'update_transaction' or explain what makes deletion different from other transaction modifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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. With sibling tools like 'update_transaction' available, the description doesn't indicate whether deletion is irreversible, when it's appropriate versus updating, or any prerequisites for using this destructive operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesB

Get list of transaction categories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the action ('Get list'), lacking behavioral details such as whether it requires authentication, returns paginated results, has rate limits, or what format the list is in. It doesn't contradict annotations, but offers minimal transparency beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core action ('Get list of transaction categories') with zero wasted words. It's appropriately sized for a simple retrieval tool with no parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no annotations and no output schema, the description is minimally complete—it states what the tool does. However, it lacks context on usage, behavioral traits, or output format, which could help an agent use it correctly, especially given siblings that might overlap in purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, focusing on the tool's purpose. Baseline is 4 for zero parameters, as it avoids unnecessary detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('list of transaction categories'), making the purpose immediately understandable. It distinguishes from siblings like 'get_transactions' by specifying categories rather than transactions, though it doesn't explicitly contrast with 'get_settings' or 'get_summary' which might also retrieve lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives like 'get_transactions' or 'get_settings'. The description implies it's for retrieving categories, but doesn't specify use cases, prerequisites, or exclusions, leaving the agent to infer context from the tool name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_settingsC

Get CashChat user settings

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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. 'Get CashChat user settings' implies a read operation, but it doesn't specify whether this requires authentication, what format the settings are returned in, whether there are rate limits, or if it returns all settings or a subset. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a simple read operation. However, it could be slightly more front-loaded with additional context about what 'settings' encompasses, but given the tool's simplicity, this is a minor concern.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what 'settings' includes, how the data is returned, or how this tool fits into the broader context of sibling tools like 'update_settings'. For a tool in a financial/transactional context with multiple related operations, more contextual information would help an agent use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter information, and it appropriately doesn't mention any parameters. This meets the baseline expectation for a parameterless tool where the schema already provides complete coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get CashChat user settings' clearly states the verb 'Get' and resource 'CashChat user settings', making the basic purpose understandable. However, it doesn't distinguish this tool from its sibling 'update_settings' or explain what specific settings it retrieves versus other tools like 'get_categories' or 'get_summary'. The purpose is clear but lacks differentiation from related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'get_settings' over 'update_settings' for modifying settings, or how it relates to other read operations like 'get_categories' or 'get_summary'. There's no indication of prerequisites, timing, or contextual factors that would help an agent decide when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_summaryB

Get spending summary for a time period

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesTime period
dateNoReference date (YYYY-MM-DD, defaults to today)

TDQS

B3.1/5.0
Behavior2/5

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. It states this is a 'Get' operation (implying read-only), but doesn't mention authentication requirements, rate limits, response format, error conditions, or whether it aggregates data in a specific way. For a tool with no annotation coverage, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded with the core purpose, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description covers the basic purpose but lacks details about behavioral traits, usage context, and output expectations. It's minimally adequate but has clear gaps in providing complete context for effective tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with both parameters ('period' and 'date') fully documented in the schema. The description mentions 'time period' which aligns with the 'period' parameter but doesn't add meaningful semantic context beyond what the schema already provides. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'spending summary' with the scope 'for a time period', making the purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'get_transactions' which might provide detailed transaction lists rather than summaries, but the core function is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'get_transactions' for detailed data or 'get_categories' for categorization insights. It mentions the time period scope but doesn't clarify prerequisites, exclusions, or comparative use cases with sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_transactionsC

Get transactions from CashChat with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
startDateNoStart date (YYYY-MM-DD)
endDateNoEnd date (YYYY-MM-DD)
categoryNoFilter by category
limitNoMax results (default 50)
offsetNoOffset for pagination

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it 'gets' transactions, implying a read-only operation, but lacks details on permissions, rate limits, pagination behavior (beyond schema hints), or what happens if no filters are applied. This is a significant gap for a tool with 5 parameters and no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It is appropriately sized and front-loaded, clearly stating the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (5 parameters, no annotations, no output schema), the description is incomplete. It lacks behavioral context (e.g., pagination details, error handling), usage guidance relative to siblings, and does not compensate for the absence of annotations or output schema, making it inadequate for a tool of this scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal value beyond the schema by mentioning 'optional filters', which is implied by the parameters. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'transactions from CashChat', making the purpose understandable. It distinguishes from siblings like 'add_transaction' or 'delete_transaction' by being a read operation, though it doesn't explicitly differentiate from other read tools like 'get_categories' or 'get_summary'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'optional filters' but provides no guidance on when to use this tool versus alternatives. There are multiple sibling tools (e.g., 'get_summary' for aggregated data, 'get_categories' for category lists), but no explicit when/when-not instructions or named alternatives are included.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_settingsC

Update CashChat user settings

ParametersJSON Schema
NameRequiredDescriptionDefault
preferredCurrencyNoCurrency code (USD, CAD, INR, etc.)
agentInstructionsNoCustom instructions for AI assistant

TDQS

C2.9/5.0
Behavior2/5

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. It states 'Update' implying a mutation, but doesn't specify permissions required, whether changes are reversible, or any side effects like rate limits. This leaves significant gaps in understanding the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, usage context, and expected outcomes, making it incomplete for effective agent use despite the concise structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 the two parameters. The description doesn't add any additional meaning beyond what the schema provides, such as explaining how these settings interact or their default values, but the baseline of 3 is appropriate given the high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('CashChat user settings'), making the tool's purpose understandable. However, it doesn't differentiate from sibling tools like 'update_transaction', which also performs updates but on a different resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives. It doesn't mention prerequisites, when not to use it, or how it relates to sibling tools like 'get_settings' for retrieval or 'update_transaction' for different updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_transactionC

Update an existing transaction in CashChat

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTransaction ID
amountNoNew amount
categoryNoNew category
noteNoNew note
nameNoNew name/merchant

TDQS

C2.9/5.0
Behavior2/5

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. It states the tool updates a transaction, implying mutation, but lacks details on permissions, whether changes are reversible, error handling, or rate limits. This is inadequate for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation operation, lack of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like side effects, return values, or error conditions, leaving significant gaps for the agent to operate safely and effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all parameters (id, amount, category, note, name) with descriptions. The description adds no additional meaning or context beyond what the schema provides, such as format examples or constraints, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Update') and resource ('an existing transaction in CashChat'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'add_transaction' or 'delete_transaction' beyond the basic verb difference, missing explicit scope or constraint details that would warrant a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 alternatives like 'add_transaction' or 'delete_transaction'. The description implies usage for modifying existing transactions but offers no context on prerequisites, exclusions, or specific scenarios, leaving the agent to infer based on tool names alone.

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. Dates show when Glama detected each change.

  1. 8 tool updatesv1.0.0
    • First observedadd_transaction
    • First observeddelete_transaction
    • First observedget_categories
    • First observedget_settings
    • First observedget_summary
    • First observedget_transactions
    • First observedupdate_settings
    • First observedupdate_transaction

TDQS

A3.5/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific resources and actions. For example, add_transaction, update_transaction, and delete_transaction handle different lifecycle stages of transactions, while get_categories, get_settings, and update_settings manage separate aspects of the system. There is no ambiguity or overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case. The verbs (add, delete, get, update) are applied logically to corresponding nouns (transaction, categories, settings, summary), creating a predictable and readable naming convention throughout the tool set.

Tool Count5/5

With 8 tools, this server is well-scoped for a personal finance/transaction management domain. Each tool earns its place by covering essential operations like CRUD for transactions, settings management, and summary reporting, without being overly sparse or bloated.

Completeness5/5

The tool surface provides complete coverage for the apparent domain of transaction management. It includes full CRUD for transactions (add, get, update, delete), settings management (get and update), and auxiliary functions like categories and summaries, ensuring agents can handle typical workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to access and analyze MonarchMoney personal finance data through natural language queries. Provides comprehensive financial insights including account balances, transaction analysis, budget tracking, and spending patterns with enterprise-grade security.
    9
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to interact with YNAB budgets, performing read-only queries by default and optional write operations like creating transactions and managing categories through natural language.
    38
    353
    28
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects AI assistants to the ClearFi personal finance API for searching transactions, tracking bills, analyzing spending, and managing accounts.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/pam-supastellar/cashchat-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server