Skip to main content
Glama
trustxai

amazing-splitwise-mcp

by trustxai

splitwise_get_friends

Read-onlyIdempotent

List Splitwise friends with per-currency balances and user IDs to see who owes whom or prepare shared expenses.

Instructions

List your Splitwise friends with their balance per currency.

Calls GET /get_friends. One row per friend: First Last (id N), e-mail, registration status (confirmed | invited | dummy) and the overall balance per currency. Sign convention: positive = they owe you; negative = you owe them. JSON mode returns the raw friend objects, including groups[] with the balance per shared group (group 0 = non-group expenses).

When to Use:

  • To see who owes you / whom you owe, per friend and currency.

  • To find a friend's user id before building expense shares or adding them to a group.

  • With only_with_balance=true to list only the friendships that are not settled up.

When NOT to Use:

  • To find a friend by a fuzzy name (use splitwise_resolve_friend).

  • For totals per currency across all friends (use splitwise_get_balances).

  • For one friend's detail incl. per-group balances (use splitwise_get_friend).

  • For balances inside one group (use splitwise_get_group_balances).

Returns: Markdown: a header with the sign convention and counts, then a table (Friend | Email | Status | Balance), capped at 50 rows with a note when more exist. JSON: {"count", "only_with_balance", "friends": [raw friend objects]}.

Examples:

  • All friends: params = {}

  • Only open balances: params = {"only_with_balance": true}

  • Raw objects with per-group balances: params = {"response_format": "json"}

Error Handling: 401 means the API key is missing or revoked (https://secure.splitwise.com/apps); 429 means back off and retry later.

Input Schema

NameRequiredDescriptionDefault
paramsYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: the sign convention (positive = they owe you), the 50-row cap with overflow note, and error semantics (401 = missing/revoked key, 429 = back off and retry). The only mild gap is that it doesn't note anything about pagination beyond the row cap.

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?

Front-loaded purpose followed by cleanly labeled When to Use / When NOT to Use / Returns / Examples / Error Handling sections; every sentence carries information. It is longer than strictly necessary, since the Returns block partly duplicates an existing output schema, which keeps it from a 5.

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 two-parameter read tool with an output schema, annotations covering safety, and a large sibling set, this description supplies everything an agent needs: purpose, routing alternatives, parameter semantics, return shapes, examples, and error handling. Nothing material is missing.

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?

Reported schema coverage is 0%, so the description must carry parameter meaning — and it does, describing only_with_balance ('list only the friendships that are not settled up') and response_format ('Raw objects with per-group balances') with concrete param examples. It doesn't add syntax or type detail beyond the schema, so it falls just short of a 5.

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?

States a specific verb (list) and resource (Splitwise friends) and immediately narrows scope with 'with their balance per currency'. Combined with the explicit 'When NOT to Use' routing to splitwise_resolve_friend, splitwise_get_balances, splitwise_get_friend and splitwise_get_group_balances, an agent can distinguish this tool from every similar sibling without reading a schema.

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?

Contains an explicit 'When to Use' block with three concrete scenarios and a 'When NOT to Use' block naming four alternatives plus the condition that selects each. This is the strongest form of usage guidance: both positive triggers and exclusions are spelled out.

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