Koskamo

Zovo Tip Pool Calculator MCP

A tip pool calculator and tip out calculator for restaurant, bar, cafe and salon staff. It splits pooled tips by hours, points or role and works out tip-outs to the cent, with a printable tip sheet.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Tip Pool Calculator MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://tip-pool.zovo.one/mcp
Vendor documentation

What its tools do

2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

2 of 2 have a description · 2 of 2 declare behavior hints · 2 of 2 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Split tips by hours worked, by points x hours, by role percentage, or equally
  • Calculate tip-outs where servers tip out a percent of sales or tips to other staff
  • Handle cash and card tips with an optional card processing fee deducted
  • Generate printable PDF tip sheets with signature lines and CSV exports

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
tip-pool 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo Tip Pool Calculator splits pooled tips for restaurant, bar, cafe and salon staff to the cent: by hours worked, points x hours, role percentages, or equal shares, with an optional card-fee deduction and a week view across shifts (calculate_tip_pool), and computes server tip-outs to support staff as a percent of sales or tips (calculate_tip_out). Shares use largest-remainder rounding so they add up to the pool exactly. Each result has a printable PDF tip sheet with signature lines and a CSV. Pass the staff list as the user wrote it. Results are informational, not legal advice; under US federal law (FLSA) managers and supervisors may not keep tips from a tip pool.

Tools

2 advertised

calculate_tip_pool — Calculate tip pool
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a tip pool calculator: split pooled tips among restaurant, bar, cafe or salon staff by hours worked (how to split tips by hours), by points x hours, by role percentage (e.g. 70% servers, 20% bussers, 10% bar, then by hours inside each role), or equally. Accepts cash and card tips with an optional card fee percent, a staff list as objects or pasted text/CSV, and an optional week view (shift_tips plus a shift on each staff row). Returns each person's share in cents with largest-remainder rounding so shares add up to the pool, the per-hour rate, an explanation, warnings (e.g. a manager in the pool), and a printable PDF tip sheet with signature lines plus a CSV. Does not give legal advice, decide who may be in a pool, compute wages or taxes, or connect to a POS. Do not use for splitting a restaurant bill among diners.

calculate_tip_pool input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "label": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional title for the tip sheet, e.g. \"Friday dinner, Oct 23\" or \"Week of Oct 19\"."
    },
    "staff": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Person's name, e.g. \"Ana\"."
                      },
                      "role": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Role or position, e.g. \"server\", \"busser\", \"bartender\", \"stylist\"."
                      },
                      "hours": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ],
                        "description": "Hours worked, e.g. 6.5, \"6:30\" or \"6h 30m\"."
                      },
                      "shift": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Shift or day this row belongs to, for a week view, e.g. \"Mon\" or \"Fri dinner\"."
                      },
                      "points": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ],
                        "description": "Tip points for the points method, e.g. 2 or 1.5."
                      }
                    },
                    "additionalProperties": {}
                  }
                ]
              }
            },
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Everyone sharing the pool. Array of {name, role, hours, points, shift}, or one pasted block (one person per line, CSV with a header row is fine), e.g. [{\"name\":\"Ana\",\"role\":\"server\",\"hours\":6.5},{\"name\":\"Ben\",\"role\":\"busser\",\"hours\":5}] or \"Ana server 6.5\\nBen busser 5\"."
    },
    "method": {
      "type": [
        "string",
        "null"
      ],
      "description": "How to split: \"hours\" (by hours worked), \"points\" (points x hours), \"role_percent\" (fixed percent per role, e.g. 70/20/10, then by hours inside each role), or \"equal\". Default: chosen from the data (role_percentages -> role_percent, points -> points, hours -> hours, else equal)."
    },
    "shifts": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "null"
        }
      ],
      "description": "Alternative week view: one item per shift with its own tips and staff, e.g. [{\"label\":\"Fri\",\"total_tips\":600,\"staff\":\"Ana 5, Ben 5\"},{\"label\":\"Sat\",\"total_tips\":900,\"staff\":\"Ana 6, Cara 6\"}]."
    },
    "currency": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO currency code, default USD, e.g. EUR, GBP, CAD."
    },
    "round_to": {
      "type": [
        "string",
        "null"
      ],
      "description": "\"cent\" (default) or \"dollar\" to pay whole dollars in cash; any coins left over are reported, not assigned."
    },
    "card_tips": {
      "type": [
        "number",
        "string",
        "null"
      ],
      "description": "Credit card tips, e.g. 820.50. Optional; the card fee applies to these."
    },
    "cash_tips": {
      "type": [
        "number",
        "string",
        "null"
      ],
      "description": "Cash tips, e.g. 420. Optional."
    },
    "shift_tips": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {}
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Week view: tips per shift, with each staff row's shift set, e.g. {\"Mon\":420,\"Tue\":385.5} or \"Mon 420, Tue 385.50\". Each shift is split on its own, then totals are added per person."
    },
    "total_tips": {
      "type": [
        "number",
        "string",
        "null"
      ],
      "description": "Total tips to split (cash plus card), e.g. 1240.50 or \"$1,240.50\". Leave out when cash_tips and card_tips are given, or when shift_tips is used."
    },
    "role_points": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {
                "type": [
                  "number",
                  "string"
                ]
              }
            },
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {}
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Points per role for the points method when people have no points of their own, e.g. {\"server\":10,\"bartender\":8,\"busser\":5}."
    },
    "card_fee_percent": {
      "type": [
        "number",
        "string",
        "null"
      ],
      "description": "Card processing fee percent to deduct from card tips before splitting, e.g. 2.9. Default none."
    },
    "role_percentages": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {
                "type": [
                  "number",
                  "string"
                ]
              }
            },
            {
              "type": "string"
            },
            {
              "type": "array",
              "items": {}
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Percent of the pool per role for method role_percent, e.g. {\"server\":70,\"busser\":20,\"bartender\":10} or \"servers 70%, bussers 20%, bar 10%\"."
    }
  }
}
calculate_tip_pool output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "label",
    "method",
    "method_label",
    "currency",
    "pool",
    "people",
    "roles",
    "shifts",
    "explanation",
    "assumptions",
    "warnings",
    "note",
    "downloads"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "pool": {
      "type": "object",
      "required": [
        "cash_tips",
        "card_tips",
        "card_fee_percent",
        "card_fee",
        "total_tips",
        "net_pool",
        "distributed",
        "leftover",
        "total_hours",
        "rate_per_hour",
        "formatted"
      ],
      "properties": {
        "card_fee": {
          "type": "string"
        },
        "leftover": {
          "type": "string"
        },
        "net_pool": {
          "type": "string"
        },
        "card_tips": {
          "type": [
            "string",
            "null"
          ]
        },
        "cash_tips": {
          "type": [
            "string",
            "null"
          ]
        },
        "formatted": {
          "type": "object",
          "required": [
            "total_tips",
            "net_pool",
            "distributed",
            "card_fee"
          ],
          "properties": {
            "card_fee": {
              "type": "string"
            },
            "net_pool": {
              "type": "string"
            },
            "total_tips": {
              "type": "string"
            },
            "distributed": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        "total_tips": {
          "type": "string"
        },
        "distributed": {
          "type": "string"
        },
        "total_hours": {
          "type": [
            "string",
            "null"
          ]
        },
        "rate_per_hour": {
          "type": [
            "string",
            "null"
          ]
        },
        "card_fee_percent": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "additionalProperties": false
    },
    "label": {
      "type": "string"
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "percent",
          "amount",
          "people"
        ],
        "properties": {
          "role": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          },
          "people": {
            "type": "number"
          },
          "percent": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "method": {
      "type": "string"
    },
    "people": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "role",
          "hours",
          "points",
          "share_percent",
          "amount",
          "formatted"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "hours": {
            "type": [
              "string",
              "null"
            ]
          },
          "amount": {
            "type": "string"
          },
          "points": {
            "type": [
              "string",
              "null"
            ]
          },
          "formatted": {
            "type": "string"
          },
          "share_percent": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "shifts": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "label",
          "total_tips",
          "net_pool",
          "distributed",
          "people",
          "rate_per_hour"
        ],
        "properties": {
          "label": {
            "type": "string"
          },
          "people": {
            "type": "number"
          },
          "net_pool": {
            "type": "string"
          },
          "total_tips": {
            "type": "string"
          },
          "distributed": {
            "type": "string"
          },
          "rate_per_hour": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      }
    },
    "currency": {
      "type": "string"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "explanation": {
      "type": "string"
    },
    "method_label": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
calculate_tip_pool annotations
{
  "title": "Calculate tip pool",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calculate_tip_out — Calculate tip-out
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a tip out calculator: servers or bartenders tip out a percent of their sales or tips to support staff (bussers, bartenders, hosts, food runners, barbacks). Takes each server's sales and/or tips and the tip-out rules (e.g. busser 3% of sales, bar 1.5% of sales), plus optional support staff with roles and hours. Returns each server's tip-out per role (rounded to the cent), what each server keeps, each support person's share by hours with largest-remainder rounding so it adds up to what was tipped out, warnings, and a printable PDF tip-out sheet with signature lines plus a CSV. Does not give legal advice, compute wages or taxes, or connect to a POS. Do not use for a shared pool split by hours (use calculate_tip_pool) or for a bill split among diners.

calculate_tip_out input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "servers",
    "tip_outs"
  ],
  "properties": {
    "label": {
      "type": [
        "string",
        "null"
      ],
      "description": "Optional title for the tip-out sheet, e.g. \"Saturday dinner\"."
    },
    "servers": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "object",
                "properties": {
                  "name": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Person's name, e.g. \"Ana\"."
                  },
                  "role": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Role or position, e.g. \"server\", \"busser\", \"bartender\", \"stylist\"."
                  },
                  "hours": {
                    "type": [
                      "number",
                      "string",
                      "null"
                    ],
                    "description": "Hours worked, e.g. 6.5, \"6:30\" or \"6h 30m\"."
                  },
                  "shift": {
                    "type": [
                      "string",
                      "null"
                    ],
                    "description": "Shift or day this row belongs to, for a week view, e.g. \"Mon\" or \"Fri dinner\"."
                  },
                  "points": {
                    "type": [
                      "number",
                      "string",
                      "null"
                    ],
                    "description": "Tip points for the points method, e.g. 2 or 1.5."
                  }
                },
                "additionalProperties": {}
              }
            ]
          }
        },
        {
          "type": "string"
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        }
      ],
      "description": "Servers or bartenders who tip out, each with sales and/or tips. Array of {name, sales, tips}, or pasted lines, e.g. [{\"name\":\"Ana\",\"sales\":1850,\"tips\":340}] or \"Ana sales 1850 tips 340\\nBen sales 1420 tips 260\"."
    },
    "currency": {
      "type": [
        "string",
        "null"
      ],
      "description": "ISO currency code, default USD, e.g. EUR."
    },
    "tip_outs": {
      "anyOf": [
        {
          "type": "array",
          "items": {}
        },
        {
          "type": "string"
        },
        {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        {
          "type": "number"
        }
      ],
      "description": "Who gets what share, e.g. \"busser 3% of sales, bartender 1.5% of sales, host 1% of sales\" or [{\"role\":\"busser\",\"percent\":3,\"basis\":\"sales\"}]. A plain 3 or \"3%\" means 3% to the support staff as one group."
    },
    "support_staff": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Person's name, e.g. \"Ana\"."
                      },
                      "role": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Role or position, e.g. \"server\", \"busser\", \"bartender\", \"stylist\"."
                      },
                      "hours": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ],
                        "description": "Hours worked, e.g. 6.5, \"6:30\" or \"6h 30m\"."
                      },
                      "shift": {
                        "type": [
                          "string",
                          "null"
                        ],
                        "description": "Shift or day this row belongs to, for a week view, e.g. \"Mon\" or \"Fri dinner\"."
                      },
                      "points": {
                        "type": [
                          "number",
                          "string",
                          "null"
                        ],
                        "description": "Tip points for the points method, e.g. 2 or 1.5."
                      }
                    },
                    "additionalProperties": {}
                  }
                ]
              }
            },
            {
              "type": "string"
            },
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          ]
        },
        {
          "type": "null"
        }
      ],
      "description": "Optional people receiving the tip-out, with role and hours, e.g. [{\"name\":\"Kim\",\"role\":\"busser\",\"hours\":6}]. Each role's tip-out is split among its people by hours (equal if no hours)."
    },
    "tip_out_basis": {
      "type": [
        "string",
        "null"
      ],
      "description": "\"sales\" or \"tips\": what a percent without \"of sales\" or \"of tips\" is taken from. Default: sales when every server has sales, else tips."
    }
  }
}
calculate_tip_out output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "label",
    "currency",
    "tip_outs",
    "servers",
    "support_staff",
    "unassigned",
    "totals",
    "explanation",
    "assumptions",
    "warnings",
    "note",
    "downloads"
  ],
  "properties": {
    "note": {
      "type": "string"
    },
    "label": {
      "type": "string"
    },
    "totals": {
      "type": "object",
      "required": [
        "sales",
        "tips",
        "tip_out",
        "keeps",
        "received",
        "formatted_tip_out"
      ],
      "properties": {
        "tips": {
          "type": [
            "string",
            "null"
          ]
        },
        "keeps": {
          "type": [
            "string",
            "null"
          ]
        },
        "sales": {
          "type": [
            "string",
            "null"
          ]
        },
        "tip_out": {
          "type": "string"
        },
        "received": {
          "type": "string"
        },
        "formatted_tip_out": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "servers": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "sales",
          "tips",
          "tip_outs",
          "tip_out_total",
          "keeps"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "tips": {
            "type": [
              "string",
              "null"
            ]
          },
          "keeps": {
            "type": [
              "string",
              "null"
            ]
          },
          "sales": {
            "type": [
              "string",
              "null"
            ]
          },
          "tip_outs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tip_out_total": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "currency": {
      "type": "string"
    },
    "tip_outs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "percent",
          "basis",
          "total",
          "people"
        ],
        "properties": {
          "role": {
            "type": "string"
          },
          "basis": {
            "type": "string"
          },
          "total": {
            "type": "string"
          },
          "people": {
            "type": "number"
          },
          "percent": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "unassigned": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "role",
          "amount"
        ],
        "properties": {
          "role": {
            "type": "string"
          },
          "amount": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "explanation": {
      "type": "string"
    },
    "support_staff": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "role",
          "hours",
          "amount"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "role": {
            "type": [
              "string",
              "null"
            ]
          },
          "hours": {
            "type": [
              "string",
              "null"
            ]
          },
          "amount": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
calculate_tip_out annotations
{
  "title": "Calculate tip-out",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

tip-pool-widget — Zovo Tip Pool Calculator view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Tip Pool Calculator.

tip-pool-widget URI
ui://widget/tip-pool-v1-1.0.0-1c3b41556be68f2426def2251395fb5469f638178080819f7531911a6f7b6763.html

MIME type: text/html;profile=mcp-app

tip-pool-widget-legacy — Zovo Tip Pool Calculator view (previous versions)

Advertised by the server during the last successful anonymous check.

tip-pool-widget-legacy URI template
ui://widget/tip-pool-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
725 ms
95th percentile latency
725 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 725 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-tip-pool-calculator-mcp https://tip-pool.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-tip-pool-calculator-mcp --url https://tip-pool.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-tip-pool-calculator-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-tip-pool-calculator-mcp": {
      "url": "https://tip-pool.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-tip-pool-calculator-mcp": {
      "type": "streamableHttp",
      "url": "https://tip-pool.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-tip-pool-calculator-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-tip-pool-calculator-mcp": {
      "type": "http",
      "url": "https://tip-pool.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-tip-pool-calculator-mcp https://tip-pool.zovo.one/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://tip-pool.zovo.one/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-tip-pool-calculator-mcp": {
      "serverUrl": "https://tip-pool.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Tip Pool Calculator MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.