Skip to main content
Glama
nnishad

open-splitwise

by nnishad

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each visible tool has a clearly distinct role: auth setup/status/logout form a lifecycle, resolve_users handles identifier mapping, quick_add_expense creates expenses, and money_summary provides balances. search_tools is explicitly a discovery/meta tool, so there is no meaningful overlap between tools.

    Naming Consistency4/5

    Most tools follow a clear verb_noun snake_case pattern such as setup_auth, get_auth_status, resolve_users, quick_add_expense, and search_tools. logout and money_summary deviate slightly as a bare verb and a noun-noun phrase, but the naming remains easily predictable.

    Tool Count5/5

    Seven tools is a well-scoped count for this server. It covers authentication, user lookup, expense creation, financial summary, and dynamic tool discovery without unnecessary bloat, and the lazy-loading design keeps the default surface compact.

    Completeness4/5

    The visible high-level tools cover auth, user resolution, expense creation, and summary, which handles common Splitwise workflows. search_tools explicitly exposes hidden raw tools for expenses, groups, and notifications, mitigating most gaps, though direct visible listing/update/delete expense helpers would make common management tasks more straightforward.

  • Average 4.4/5 across 6 of 7 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • No community issues in the last 6 months
    • 1 commit in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI status not available
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior4/5

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

    With no annotations, the description carries full behavioral burden. It discloses automatic participant resolution, equal-split default, payer-inclusion behavior, the custom owed_shares sum constraint, fuzzy category matching, currency defaulting, and the return value ('who owes what'). This is rich transparency, though it omits edge-case behavior like unresolvable participants or failure modes.

    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 dense but well-organized paragraph. It front-loads the core purpose and then efficiently covers the most important configurable behaviors. Each sentence earns its place; there is no filler. It is a bit long, but justified by the need to document 11 parameters without schema aid.

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

    Completeness4/5

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

    Given 11 parameters, no output schema, and no annotations, the description is notably complete. It covers participant resolution, splitting defaults, custom shares, category handling, currency defaulting, and return shape. Minor gaps remain (e.g., what happens when participant resolution fails, group_id semantics, cost string format), but the core usage is well covered.

    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?

    Schema description coverage is 0%, so the description must compensate, and it does. It explains the flexible formats for participants (names, partial names, emails, IDs), the meaning of include_payer_in_split, the required sum constraint for owed_shares, and the fuzzy-matching behavior of category_name. Some parameters like cost format and group_id semantics are left to inference, but the description adds substantial meaning to the most nuanced parameters.

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

    Purpose5/5

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

    The description clearly identifies the action ('expense creation') and the resource ('expense'), with a distinctive angle: 'Agent-friendly expense creation from messy input.' This differentiates it from the sibling tools, which are auth-related (setup_auth, get_auth_status, logout), discovery (search_tools, resolve_users), or summary (money_summary). The purpose is unambiguous and specific.

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

    Usage Guidelines3/5

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

    The description implies its usage by highlighting 'messy input' and automatic resolution, suggesting it is the go-to tool for flexible or unnormalized participant input. However, it never explicitly contrasts with alternatives or states when not to use it. It provides parameter-level guidance (e.g., include_payer_in_split=false when the payer did not consume) but no tool-selection guidance.

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

  • Behavior4/5

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

    Beyond the readOnlyHint annotation, the description discloses that ambiguous names return candidate lists for user disambiguation. It also communicates the accepted input varieties (partial names, emails, 'me'). This adds meaningful behavioral context without contradicting the annotation.

    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?

    Two efficient sentences contain zero filler and front-load the core purpose, with the behavioral nuance about ambiguous names added as a secondary sentence.

    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 tool with no output schema, the description should clarify the return format. It mentions candidate lists for ambiguous cases but does not specify their structure, nor what happens for unambiguous matches or not-found cases. The single-parameter design keeps the gap modest, but some important call semantics remain undocumented.

    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?

    Schema description coverage is 0%, so the description must compensate for the undocumented 'queries' parameter. It explains what query strings represent and the range of acceptable values, though it does not explicitly describe array semantics or limits.

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

    Purpose5/5

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

    The description clearly states the tool resolves human-friendly identifiers (names, partial names, emails, user IDs, 'me') into Splitwise user IDs, with a specific verb and resource. It is easily distinguished from sibling tools like quick_add_expense or money_summary, as it is the only identifier-resolution tool.

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

    Usage Guidelines3/5

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

    The intended use is implied: use when you need to convert a user identifier into a Splitwise user ID. However, it does not explicitly state when to use this tool vs alternatives, nor does it mention any exclusions or prerequisites.

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

  • Behavior4/5

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

    Annotations provide destructiveHint=true, and the description adds meaningful context beyond that: the exact behavior (removing stored key) and the edge case that environment-provided keys are unaffected. This is valuable operational information an agent needs before invoking.

    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, front-loaded sentence that delivers the core action first and the fallback limitation second. Every word earns its place; there is no fluff or repetition.

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

    Completeness4/5

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

    For a simple no-parameter logout tool, the description is nearly complete: it states the action, the limitation, and the persistent fallback behavior. It does not mention return values, but given the simplicity and destructive nature, the absence is not a significant gap.

    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 takes zero parameters, so schema coverage is trivially 100%. With 0 parameters, the baseline is 4 because there is no parameter behavior to explain. The description adds no parameter details, which is appropriate.

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

    Purpose5/5

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

    The description clearly states the action: 'Remove the stored Splitwise API key' and equates it with 'log out'. It names the specific resource (stored API key) and is distinct from siblings like setup_auth and get_auth_status.

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

    Usage Guidelines4/5

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

    The description gives clear context for when to use the tool (to remove a stored key) and importantly identifies a key limitation: environment-provided keys cannot be removed and remain active as fallback. It does not explicitly name alternative tools but the use case is clear.

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

  • Behavior4/5

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

    Beyond the readOnlyHint annotation, the description adds meaningful behavioral context: it aggregates across all friends, reports totals per currency, breaks out owed vs owe, includes per-friend balances, and includes simplified group debts. It does not explain the simplification algorithm or auth prerequisites, but it discloses the core behavior sufficiently.

    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 dense sentence that front-loads the core value proposition ('One-call financial overview') and then enumerates the exact outputs. Every phrase earns its place and there is no fluff or repetition.

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

    Completeness4/5

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

    For a no-parameter read-only tool, the description is largely complete: it states scope, output categories, and even the alternative it replaces. The lack of an output schema means exact field names are not disclosed, but that is not essential for selecting and invoking this tool correctly.

    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 zero parameters, so there is no parameter burden for the description to carry. The baseline for no-parameter tools is 4, and the description contains nothing misleading or unnecessary about inputs.

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

    Purpose5/5

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

    The description clearly identifies a specific resource and purpose: a one-call financial overview with per-currency owed/owe totals, per-friend balances, and simplified group debts. It also distances itself from manual aggregation over get_friends/get_groups, making it easy for an agent to know what this tool uniquely provides.

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

    Usage Guidelines4/5

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

    The description explicitly says this replaces manual aggregation over get_friends/get_groups, giving a concrete when-to-use signal. It doesn't spell out when not to use it or name direct sibling alternatives, but the use case is clear enough for a no-parameter read-only tool.

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

  • Behavior4/5

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

    No annotations are provided, so the description carries the full burden. It discloses that the key is validated before saving and a wrong key is never stored, which is important behavioral context. It also provides a specific URL for key generation. It does not mention what happens on success (e.g., confirmation), but the core behavior is transparent.

    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 only two sentences, with the purpose front-loaded, followed by validation behavior and user instruction. Every sentence adds value, and there is no filler or repetition.

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

    Completeness4/5

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

    For a single-parameter setup tool, the description covers the purpose, the input source, and the validation side effect. It does not explicitly describe the output (none defined) or error scenarios, but the core usage is fully captured. Sibling tools exist for status checks, but that does not detract from completeness here.

    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?

    Schema coverage is 0%, so the description must compensate for the undocumented api_key parameter. It does: it defines the key as the Splitwise API key, explains how to obtain it, and notes that validation occurs. This goes well beyond the bare schema field name.

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

    Purpose5/5

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

    The description uses a specific verb ('Configure or replace') and a clear resource ('Splitwise API key'). It also states the validation action, making the tool's purpose unmistakable. It is clearly distinct from siblings like get_auth_status and logout, which deal with status and session termination.

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

    Usage Guidelines4/5

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

    The description makes it clear this tool is used when the user needs to set up or replace the API key, and instructs the agent to ask the user for a key. It gives clear context but does not explicitly mention when NOT to use it or name alternative tools, so it falls just short of a 5.

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

  • Behavior4/5

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

    Annotations declare readOnlyHint=true, so the description doesn't need to restate that. It adds meaningful context beyond the annotation by specifying what the report contains (configured status, source, masked preview), which helps an agent understand the tool's output. There is no mention of side effects, but given the read-only hint, none are expected.

    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?

    Two sentences, no fluff. The first sentence front-loads the core purpose and outputs, while the second sentence gives the practical use case. Every word earns its place, making it easy to scan and understand quickly.

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

    Completeness5/5

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

    For a zero-parameter diagnostic tool, the description is complete. It tells the agent what it reports, where the information comes from, and when to use it. No output schema exists, but the description's list of reported items (configured status, source, masked preview) sufficiently covers what the agent can expect.

    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 no parameters, and schema coverage is 100%, so the schema fully documents the parameter space. Baseline for such tools is 4, and the description appropriately doesn't try to add parameter details that don't exist. The description focuses on behavior rather than parameters, which is correct.

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

    Purpose5/5

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

    The description uses a specific verb 'Report' and identifies the exact resource: whether a Splitwise API key is configured, its source, and a masked preview. This clearly distinguishes it from sibling tools like setup_auth and logout, which perform different actions. An agent can immediately understand what this tool does without ambiguity.

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

    Usage Guidelines5/5

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

    The description explicitly states 'Use this to diagnose auth failures,' providing a clear directive for when to call this tool. While it doesn't mention alternatives by name, the intent is unmistakable and aligned with the diagnostic nature of the tool, separating it from setup or logout operations.

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

  • Behavior5/5

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

    With no annotations, the description carries the full behavioral burden and does so well. It discloses the side effect of registering tools into the session, the meaning of enable=false, the lazy-loading design, and the automatic tools/list_changed refresh after enabling. These are significant behavioral traits beyond the basic function.

    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 compact, front-loaded with the tool's purpose, and uses parallel 'With no query...' / 'With a query...' structure for instant comprehension. Every sentence carries useful information; the parenthetical on lazy loading is brief and justifies the design without bloating the text.

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

    Completeness4/5

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

    For a two-parameter meta-tool with no annotations and no output schema, the description is nearly complete. It covers both modes, side effects, and refresh behavior, but doesn't detail the structure of the 'compact group index' or the exact response format for matching tools, which an agent might need for downstream parsing.

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

    Parameters5/5

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

    The input schema provides only names and defaults with 0% description coverage, so the description must explain the parameters and does so thoroughly. It explains query semantics (no query vs. query examples) and enable semantics (default true, enable=false only reports), adding substantial meaning beyond the schema.

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

    Purpose5/5

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

    The description states a specific verb ('Discover') and resource ('hidden raw Splitwise tools'), and clearly distinguishes the tool from action-oriented siblings by explaining it is a meta-tool for discovering/registering tools. The two operational modes (with and without query) are precisely described, leaving no ambiguity about what the tool does.

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

    Usage Guidelines4/5

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

    The description gives clear usage context: no query returns a group index, a query returns matching tools with schemas and registers them, and enable=false reports only. It does not explicitly name alternatives or when-not-to-use conditions, but the sibling tools are not interchangeable with a discovery tool, so the guidance is sufficient.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

open-splitwise-mcp MCP server

Copy to your README.md:

Score Badge

open-splitwise-mcp MCP server

Copy to your README.md:

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/nnishad/open-splitwise-mcp'

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