Koskamo

Zovo Gift List MCP

A community MCP server that allows users to create and manage gift wishlists for events like birthdays or baby showers. It enables friends and family to claim items via a shared page, manages item quantities to prevent duplicate gifts, and supports CSV exports. The server handles claim visibility and list management through natural language interactions.

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 Gift List MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://gift-list.zovo.one/mcp
Vendor documentation

What its tools do

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

3 of 3 have a description · 3 of 3 declare behavior hints · 3 of 3 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

  • Create a birthday wishlist for a specific person with item details
  • Check how many claims have been made on a gift list item
  • Export list data and claims to CSV format
  • Manage item quantities and close lists after occasions

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
gift-list 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
3 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 Gift List hosts a wishlist page that friends and family open to claim gifts, so nobody buys the same thing. create_gift_list returns a shared link for friends and a private owner link. By default claims are hidden from the owner to keep the surprise: then never guess or state which items were claimed. show_gift_list_status reads the owner link. update_gift_list adds or removes items, changes quantities, shows or hides claims, and closes the list.

Tools

3 advertised

create_gift_list — Create gift list
Advertised by the server during the last successful anonymous check.
Open-world

Use this when the user wants a wishlist or gift registry page that friends and family can claim gifts from, for a birthday, Christmas or another holiday, a baby shower or a wedding. Takes a title, 1 to 80 items (name, optional note, price range text, store name and quantity up to 20) and whether the owner wants to see claims (hidden by default). Publishes a hosted page: friends see what is still available and claim it with their first name. Returns a shared link for friends and a private owner link. Does not accept links in items (name the store instead). Does not buy or track gifts.

create_gift_list input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "items"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 1600,
      "description": "Short note for friends, e.g. Sizes: shirt M, shoes 38. No links."
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 400,
            "description": "Short item name, e.g. Wool scarf (no links)."
          },
          "note": {
            "type": "string",
            "maxLength": 1000,
            "description": "Size, colour or other detail, e.g. Size M, dark green."
          },
          "price": {
            "type": "string",
            "maxLength": 160,
            "description": "Price range as text, e.g. $20-30."
          },
          "store": {
            "type": "string",
            "maxLength": 200,
            "description": "Store name instead of a link, e.g. the local bookshop."
          },
          "quantity": {
            "type": "integer",
            "maximum": 20,
            "minimum": 1,
            "description": "How many are wanted, e.g. 2. Default 1."
          }
        }
      },
      "maxItems": 100,
      "description": "The wishlist, e.g. [{\"name\":\"Wool scarf\",\"price\":\"$20-30\"},{\"name\":\"Hiking socks\",\"quantity\":2}]."
    },
    "title": {
      "type": "string",
      "maxLength": 320,
      "description": "List title shown on the page, e.g. Maya's 8th birthday."
    },
    "time_zone": {
      "type": "string",
      "maxLength": 64,
      "description": "IANA time zone for claim times, e.g. Europe/Berlin. Default America/New_York."
    },
    "owner_name": {
      "type": "string",
      "maxLength": 160,
      "description": "First name of the person the gifts are for, e.g. Maya."
    },
    "occasion_date": {
      "type": "string",
      "maxLength": 40,
      "description": "Date of the birthday or holiday as YYYY-MM-DD, e.g. 2026-12-25."
    },
    "show_claims_to_owner": {
      "type": "boolean",
      "description": "true = the owner page shows who claimed what. Default false (claims hidden to keep the surprise)."
    }
  }
}
create_gift_list output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "occasion_date",
    "publicUrl",
    "manageUrl",
    "item_count",
    "claim_count",
    "claims_hidden",
    "closed",
    "expires_at",
    "items",
    "changes",
    "warnings"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "quantity",
          "price"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "price": {
            "type": [
              "string",
              "null"
            ]
          },
          "claimed": {
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          },
          "still_needed": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "title": {
      "type": "string"
    },
    "closed": {
      "type": "boolean"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "manageUrl": {
      "type": "string"
    },
    "publicUrl": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "item_count": {
      "type": "number"
    },
    "claim_count": {
      "type": "number"
    },
    "items_shown": {
      "type": "object",
      "required": [
        "shown",
        "total"
      ],
      "properties": {
        "shown": {
          "type": "number"
        },
        "total": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "claims_hidden": {
      "type": "boolean"
    },
    "fully_claimed": {
      "type": "number"
    },
    "occasion_date": {
      "type": [
        "string",
        "null"
      ]
    },
    "removed_claims": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "claimed",
          "claimed_by"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "claimed": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    },
    "removed_claims_total": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
create_gift_list annotations
{
  "title": "Create gift list",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
show_gift_list_status — Show gift list status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the list owner asks how their gift list is going, how many claims it has, or (when they chose to see claims) who is getting what. Takes the private owner link (it contains /m/). When claims are hidden, returns only the number of claims, not which items were claimed. Does not change anything. Does not work with the shared link.

show_gift_list_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "manage_link"
  ],
  "properties": {
    "manage_link": {
      "type": "string",
      "maxLength": 400,
      "description": "The private owner link from when the list was made, e.g. https://gift-list.zovo.one/m/AbC.../XyZ... (it contains /m/)."
    }
  }
}
show_gift_list_status output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "occasion_date",
    "publicUrl",
    "manageUrl",
    "item_count",
    "claim_count",
    "claims_hidden",
    "closed",
    "expires_at",
    "items",
    "changes",
    "warnings"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "quantity",
          "price"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "price": {
            "type": [
              "string",
              "null"
            ]
          },
          "claimed": {
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          },
          "still_needed": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "title": {
      "type": "string"
    },
    "closed": {
      "type": "boolean"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "manageUrl": {
      "type": "string"
    },
    "publicUrl": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "item_count": {
      "type": "number"
    },
    "claim_count": {
      "type": "number"
    },
    "items_shown": {
      "type": "object",
      "required": [
        "shown",
        "total"
      ],
      "properties": {
        "shown": {
          "type": "number"
        },
        "total": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "claims_hidden": {
      "type": "boolean"
    },
    "fully_claimed": {
      "type": "number"
    },
    "occasion_date": {
      "type": [
        "string",
        "null"
      ]
    },
    "removed_claims": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "claimed",
          "claimed_by"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "claimed": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    },
    "removed_claims_total": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
show_gift_list_status annotations
{
  "title": "Show gift list status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
update_gift_list — Update gift list
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Use this when the list owner wants to change an existing gift list: add items, remove items, change a quantity, show or hide claims, rename it, or close or reopen it for claims. Takes the private owner link. Removing an item hides it from friends and from the list export; claims already made on it are kept and count in the claim total (the owner page and export list them only when the owner chose to see claims). Does not edit friends' claims and does not make a new list.

update_gift_list input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "manage_link"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 1600,
      "description": "New note for friends; an empty string removes it."
    },
    "title": {
      "type": "string",
      "maxLength": 320,
      "description": "New title, e.g. Maya's 9th birthday."
    },
    "closed": {
      "type": "boolean",
      "description": "true = close the list to new claims; false = reopen it."
    },
    "add_items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 400,
            "description": "Short item name, e.g. Wool scarf (no links)."
          },
          "note": {
            "type": "string",
            "maxLength": 1000,
            "description": "Size, colour or other detail, e.g. Size M, dark green."
          },
          "price": {
            "type": "string",
            "maxLength": 160,
            "description": "Price range as text, e.g. $20-30."
          },
          "store": {
            "type": "string",
            "maxLength": 200,
            "description": "Store name instead of a link, e.g. the local bookshop."
          },
          "quantity": {
            "type": "integer",
            "maximum": 20,
            "minimum": 1,
            "description": "How many are wanted, e.g. 2. Default 1."
          }
        }
      },
      "maxItems": 80,
      "description": "Items to add, e.g. [{\"name\":\"Puzzle 1000 pieces\",\"price\":\"$15\"}]."
    },
    "manage_link": {
      "type": "string",
      "maxLength": 400,
      "description": "The private owner link from when the list was made, e.g. https://gift-list.zovo.one/m/AbC.../XyZ... (it contains /m/)."
    },
    "remove_items": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 400
      },
      "maxItems": 80,
      "description": "Exact names of items to remove, e.g. [\"Wool scarf\"]."
    },
    "set_quantities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "quantity"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 400,
            "description": "Exact item name, e.g. Hiking socks."
          },
          "quantity": {
            "type": "integer",
            "maximum": 20,
            "minimum": 1,
            "description": "New quantity, e.g. 3."
          }
        }
      },
      "maxItems": 80,
      "description": "New quantities, e.g. [{\"name\":\"Hiking socks\",\"quantity\":3}]."
    },
    "show_claims_to_owner": {
      "type": "boolean",
      "description": "true = show who claimed what on the owner page; false = hide claims."
    }
  }
}
update_gift_list output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "title",
    "occasion_date",
    "publicUrl",
    "manageUrl",
    "item_count",
    "claim_count",
    "claims_hidden",
    "closed",
    "expires_at",
    "items",
    "changes",
    "warnings"
  ],
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "quantity",
          "price"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "price": {
            "type": [
              "string",
              "null"
            ]
          },
          "claimed": {
            "type": "number"
          },
          "quantity": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          },
          "still_needed": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "title": {
      "type": "string"
    },
    "closed": {
      "type": "boolean"
    },
    "changes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "manageUrl": {
      "type": "string"
    },
    "publicUrl": {
      "type": "string"
    },
    "expires_at": {
      "type": "string"
    },
    "item_count": {
      "type": "number"
    },
    "claim_count": {
      "type": "number"
    },
    "items_shown": {
      "type": "object",
      "required": [
        "shown",
        "total"
      ],
      "properties": {
        "shown": {
          "type": "number"
        },
        "total": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "claims_hidden": {
      "type": "boolean"
    },
    "fully_claimed": {
      "type": "number"
    },
    "occasion_date": {
      "type": [
        "string",
        "null"
      ]
    },
    "removed_claims": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "claimed",
          "claimed_by"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "claimed": {
            "type": "number"
          },
          "claimed_by": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "name",
                "quantity"
              ],
              "properties": {
                "name": {
                  "type": "string"
                },
                "quantity": {
                  "type": "number"
                }
              },
              "additionalProperties": false
            }
          }
        },
        "additionalProperties": false
      }
    },
    "removed_claims_total": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
update_gift_list annotations
{
  "title": "Update gift list",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

gift-list-widget — Zovo Gift List view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Gift List.

gift-list-widget URI
ui://widget/gift-list-v1-1.0.0-972da931ba8652072fed3c7a9df21302e19efa5314c5690508b613d6006345e8.html

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

gift-list-widget-legacy — Zovo Gift List view (previous versions)

Advertised by the server during the last successful anonymous check.

gift-list-widget-legacy URI template
ui://widget/gift-list-{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
1140 ms
95th percentile latency
1140 ms

Maintenance history

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

  • · probe · passed · 1140 ms · metadata changed · 3 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-gift-list-mcp https://gift-list.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-gift-list-mcp --url https://gift-list.zovo.one/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-gift-list-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-gift-list-mcp": {
      "type": "http",
      "url": "https://gift-list.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-gift-list-mcp https://gift-list.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://gift-list.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-gift-list-mcp": {
      "serverUrl": "https://gift-list.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

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