splitbill

Split bills and collect payments through PayNow (Singapore) from your AI. MCP server for SplitBill.

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
90%
Integridad del esquema
93%
Calidad de los nombres
100%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'get_split' description lacks action verben get_split

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~1,607Tokens (definiciones de herramientas)
~5.2 KBTamaño de respuesta típico
Impacto moderado en la atención (1.26% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "splitbill": {
      "command": "npx",
      "args": [
        "splitbill-mcp"
      ]
    }
  }
}

Paquetes ejecutables

npmsplitbill-mcp1.0.7stdio

Puntos de conexión remotos

https://jittee.com/mcp/splitbillstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (3)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟡create_split(title, total, items, people, children, ...)

Create a payment page for a shared bill and return the manage URL plus the share URLs. The PayNow recipient is already saved with this connection — never ask the user for it. All you need is a total (total) or the receipt lines (items), plus the head count (people). Children can pay half: "4 adults and 3 kids" is people=7 with children=3. By default the user is treated as having paid up front: they count towards the head count but get no payment link (pass i_paid=false to turn that off). Paste a share URL into the group chat and everyone sees their own amount and a PayNow QR code.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "What the bill was for (e.g. Friday dinner). Defaults to the date and time."
    },
    "total": {
      "type": "number",
      "description": "The total. If items are given, their sum wins."
    },
    "items": {
      "type": "array",
      "description": "Receipt lines. Their sum becomes the total. Payers can see them.",
      "items": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "What the line is for (e.g. Food)."
          },
          "amount": {
            "type": "number"
          }
        },
        "required": [
          "amount"
        ]
      }
    },
    "people": {
      "type": "number",
      "description": "How many people share the bill, INCLUDING the user who paid up front."
    },
    "children": {
      "type": "number",
      "description": "How many of people are children. A child pays half of what an adult pays. \"4 adults and 3 kids\" is people=7, children=3. When names are given, the LAST ones on the list are taken to be the children."
    },
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Names of the others (only the ones you know). Empty slots get filled in by the payers themselves."
    },
    "custom": {
      "type": "array",
      "description": "Charge one person a different amount (e.g. someone who did not drink). The rest is re-split automatically.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "A name passed in names."
          },
          "index": {
            "type": "number",
            "description": "Position when there is no name (counting from 1; 1 is the user)."
          },
          "amount": {
            "type": "number"
          }
        },
        "required": [
          "amount"
        ]
      }
    },
    "i_paid": {
      "type": "boolean",
      "description": "Did the user pay up front? (default: true) They count towards the head count but are not billed."
    },
    "my_name": {
      "type": "string",
      "description": "What to call the user in the list (default: Me)."
    },
    "rounding": {
      "type": "string",
      "enum": [
        "ceil-all",
        "one-extra"
      ],
      "description": "Rounding. ceil-all = round everyone up to whole dollars and let the user absorb the difference; one-extra = split exactly and let one person carry the remainder."
    },
    "note": {
      "type": "string",
      "description": "A short note shown to the payers."
    }
  },
  "required": []
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "A one-line summary to read out (how much each, how many people)."
    },
    "total": {
      "type": "number",
      "description": "The total."
    },
    "people": {
      "type": "number",
      "description": "How many share the bill, including whoever paid up front."
    },
    "manage_url": {
      "type": "string",
      "description": "Manage URL. FOR THE ORGANISER ONLY — it can change the split."
    },
    "status_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "Read-only URL. Safe to share."
    },
    "share_urls": {
      "type": "array",
      "description": "Share URLs — one per amount.",
      "items": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "people": {
            "type": "number",
            "description": "How many people owe this amount."
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "people",
          "url"
        ]
      }
    },
    "paynow": {
      "type": "object",
      "description": "Who collects the money (saved with this connection).",
      "properties": {
        "target": {
          "type": "string"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "target"
      ]
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Anything worth mentioning about rounding or head count."
    },
    "next_step": {
      "type": "string",
      "description": "What to do next."
    }
  },
  "required": [
    "summary",
    "total",
    "people",
    "manage_url",
    "share_urls",
    "paynow",
    "next_step"
  ]
}
🟢list_splits(limit)

Return the splits created with this connection, newest first, with how much has been collected, how many people are still to pay, and the read-only URL. Use this to find a split again when the organiser has lost the link.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "How many to return (default 10, max 50)."
    }
  },
  "required": []
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "splits": {
      "type": "array",
      "description": "Newest first.",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "description": "When it was created (ISO 8601)."
          },
          "total": {
            "type": "number"
          },
          "collected": {
            "type": "number",
            "description": "How much has come in, counting what was fronted."
          },
          "paid_people": {
            "type": "number",
            "description": "How many have paid."
          },
          "people": {
            "type": "number"
          },
          "disabled": {
            "type": "boolean",
            "description": "Whether the split has been stopped."
          },
          "status_url": {
            "type": [
              "string",
              "null"
            ],
            "description": "Read-only URL."
          }
        },
        "required": [
          "title",
          "total",
          "collected",
          "paid_people",
          "people"
        ]
      }
    },
    "note": {
      "type": "string"
    }
  },
  "required": [
    "splits"
  ]
}
🟢get_split(admin_token)

Return one split in full: who owes what, whether they have paid, the notes they left, and the share URLs.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "admin_token": {
      "type": "string",
      "description": "The t= value from the manage URL, or the whole manage URL."
    }
  },
  "required": [
    "admin_token"
  ]
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string"
    },
    "total": {
      "type": "number"
    },
    "collected": {
      "type": "number",
      "description": "How much has come in."
    },
    "people": {
      "type": "number"
    },
    "members": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "state": {
            "type": "string",
            "description": "One of: paid up front (not billed) / paid / unpaid."
          },
          "adults": {
            "type": "number",
            "description": "Adults in this household (default 1)."
          },
          "children": {
            "type": "number",
            "description": "Children in this household. A child pays half an adult."
          },
          "comment": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note left by the payer."
          }
        },
        "required": [
          "name",
          "amount",
          "state"
        ]
      }
    },
    "share_urls": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "amount": {
            "type": "number"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "amount",
          "url"
        ]
      }
    },
    "status_url": {
      "type": [
        "string",
        "null"
      ]
    },
    "paynow": {
      "type": "object",
      "properties": {
        "target": {
          "type": "string"
        },
        "name": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "target"
      ]
    }
  },
  "required": [
    "title",
    "total",
    "collected",
    "people",
    "members",
    "share_urls",
    "paynow"
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada3 herramientas
verificadoversión no registrada3 herramientas
verificadoversión no registrada3 herramientas