Koskamo

Santa Wish MCP

A remote MCP server that enables AI agents to create curated Christmas gift wishlists for children. It supports searching for gift ideas based on age and interests, building a wishlist, and generating shareable links for shoppers on Amazon US or Amazon Sweden marketplaces.

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.

Santa Wish MCP logo, by Santa WishCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Santa Wish
MCP endpoint (Streamable HTTP)
https://santa-wish.vercel.app/api/mcp
Vendor documentation

What you can do with it

  • Create a Santa wishlist for a child based on age and interests
  • Search for curated gift ideas on Amazon US or Sweden
  • Generate a shareable shop link for gift-givers

Source and maintenance

Community listingRegistry 1.2.0

Protocol and capabilities

Server
santa-wishlist 1.2.0
MCP protocol
2025-06-18
Tools
9 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

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

Create a kids' Christmas gift wishlist in seconds from hand-picked products — US shoppers get amazon.com links (pass marketplace=amazon.com, country=US or locale en-US), Swedish shoppers get amazon.se product links (default). Use for gift ideas / wishlist / gift list / önskelista / presenttips for kids' Christmas. Fastest path: call create_and_fill (with marketplace) and give the user shopUrl. Products are curated by us, not customer-reviewed.

Tools

9 advertised

get_health — Health & marketplaces
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Health check for Santa Wishlist gift inspiration. Returns ok, storage, paapi, trackingTag, defaultDomain, catalogCount, and marketplaces[] (domain, label, tagConfigured). amazon.se (default) and amazon.com (US) are the primary storefronts. OpenAPI: getHealth.

get_health input schema
{
  "type": "object",
  "properties": {}
}
get_health annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
list_marketplaces — List Amazon marketplaces
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List supported Amazon storefronts (domain, label, currencyHint, tagConfigured). Same data as get_health.marketplaces. Pass the user's marketplace (amazon.com for US, amazon.se for Sweden) on search/catalog/resolve/create.

list_marketplaces input schema
{
  "type": "object",
  "properties": {}
}
list_marketplaces annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
search_gifts — Search kids gifts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Search kids Christmas gift ideas for the user's store (amazon.com for US, amazon.se default). Returns kids-filtered search link cards + curated catalogMatches (English on amazon.com). q is optional. OpenAPI: searchAmazon.

search_gifts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "q": {
      "type": "string",
      "description": "Search query, e.g. LEGO City (default: christmas gifts for kids)"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "locale": {
      "type": "string",
      "description": "User locale, e.g. en-US, sv, de. en-US switches to amazon.com when marketplace is omitted."
    },
    "ageBand": {
      "enum": [
        "0-2",
        "3-5",
        "6-8",
        "9-12"
      ],
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO country of the shopper, e.g. US or SE (used when marketplace is omitted)"
    },
    "interest": {
      "enum": [
        "toys",
        "books",
        "sports",
        "craft",
        "tech",
        "outdoor",
        "games"
      ],
      "type": "string",
      "description": "Category filter"
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    }
  },
  "additionalProperties": false
}
search_gifts annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
get_catalog — Curated gift catalog
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Paginated hand-picked kids gift catalog (~600 on amazon.se, ~560 English items on amazon.com). amazon.se: /dp product links with SEK price hints. amazon.com: English names, tagged amazon.com search links, no SEK prices (catalogMode search-ideas). OpenAPI: getCatalog.

get_catalog input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "q": {
      "type": "string",
      "description": "Full-text filter"
    },
    "ids": {
      "type": "string",
      "description": "Comma-separated catalog ids"
    },
    "limit": {
      "type": "integer",
      "default": 24,
      "maximum": 100,
      "minimum": 1
    },
    "locale": {
      "type": "string",
      "description": "User locale, e.g. en-US, sv, de. en-US switches to amazon.com when marketplace is omitted."
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "minimum": 0
    },
    "ageBand": {
      "enum": [
        "0-2",
        "3-5",
        "6-8",
        "9-12"
      ],
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO country of the shopper, e.g. US or SE (used when marketplace is omitted)"
    },
    "interest": {
      "enum": [
        "toys",
        "books",
        "sports",
        "craft",
        "tech",
        "outdoor",
        "games"
      ],
      "type": "string"
    },
    "interests": {
      "type": "string",
      "description": "Comma-separated interests"
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    }
  },
  "additionalProperties": false
}
get_catalog annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
resolve_product — Resolve buy / inspiration link
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Resolve an ASIN, pasted Amazon /dp/ URL, or keywords to a buyUrl for the user's store (amazon.com or amazon.se). Curated catalog ASINs on amazon.com become English search links. With no input it returns a default kids gift search. OpenAPI: resolveProduct.

resolve_product input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "url": {
      "type": "string",
      "description": "Pasted Amazon product URL"
    },
    "asin": {
      "type": "string",
      "description": "10-char Amazon ASIN"
    },
    "locale": {
      "type": "string",
      "description": "User locale, e.g. en-US, sv, de. en-US switches to amazon.com when marketplace is omitted."
    },
    "ageBand": {
      "enum": [
        "0-2",
        "3-5",
        "6-8",
        "9-12"
      ],
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO country of the shopper, e.g. US or SE (used when marketplace is omitted)"
    },
    "category": {
      "enum": [
        "toys",
        "books",
        "sports",
        "craft",
        "tech",
        "outdoor",
        "games"
      ],
      "type": "string"
    },
    "keywords": {
      "type": "string",
      "description": "Search keywords if no ASIN"
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    },
    "preferSearch": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
resolve_product annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
create_wishlist — Create wishlist
Advertised by the server during the last successful anonymous check.
Open-world

Create a kids Christmas wishlist. Pass marketplace (amazon.com for US, amazon.se default) so buy links match the shopper's store. Returns id, editToken, shopUrl, ownerUrl, parentUrl, kidUrl, wishlist, storage. Save editToken for add_wishlist_item. If storage is token, later mutations may return a new id — always use the latest. OpenAPI: createWishlist.

create_wishlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "asin": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "catalogId": {
            "type": "string"
          },
          "searchKeywords": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "ageBand": {
      "enum": [
        "0-2",
        "3-5",
        "6-8",
        "9-12"
      ],
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO country of the shopper, e.g. US or SE (used when marketplace is omitted)"
    },
    "childName": {
      "type": "string"
    },
    "interests": {
      "type": "array",
      "items": {
        "enum": [
          "toys",
          "books",
          "sports",
          "craft",
          "tech",
          "outdoor",
          "games"
        ],
        "type": "string"
      }
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    }
  },
  "additionalProperties": false
}
create_wishlist annotations
{
  "readOnlyHint": false,
  "openWorldHint": true
}
create_and_fill — One-shot create and fill
Advertised by the server during the last successful anonymous check.
Open-world

One call: create a curated kids' Christmas gift wishlist and return shopUrl (share link) + ownerUrl. Preferred agent path: create a wishlist and add ASINs / keywords / search queries in one call (or give only ageBand/interests to auto-fill curated picks). Pass marketplace=amazon.com for US shoppers (amazon.se default). Returns id, editToken, shopUrl, ownerUrl, parentUrl, kidUrl. OpenAPI: agentCreateAndFill.

create_and_fill input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "count": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "If no items are given, auto-fill this many curated picks for the age band/interests (default 6)"
    },
    "locale": {
      "type": "string",
      "description": "User locale, e.g. en-US, sv, de. en-US switches to amazon.com when marketplace is omitted."
    },
    "ageBand": {
      "enum": [
        "0-2",
        "3-5",
        "6-8",
        "9-12"
      ],
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "ISO country of the shopper, e.g. US or SE (used when marketplace is omitted)"
    },
    "childName": {
      "type": "string"
    },
    "interests": {
      "type": "array",
      "items": {
        "enum": [
          "toys",
          "books",
          "sports",
          "craft",
          "tech",
          "outdoor",
          "games"
        ],
        "type": "string"
      }
    },
    "itemAsins": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "itemQueries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Each query is searched and added as a wish"
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    },
    "itemKeywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
create_and_fill annotations
{
  "readOnlyHint": false,
  "openWorldHint": true
}
get_wishlist — Get wishlist
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Fetch a wishlist by id. Returns items with buyUrl/linkType for the list's store (override with marketplace), plus shopUrl, parentUrl and kidUrl. OpenAPI: getWishlist.

get_wishlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "Wishlist id (short Redis id or t.* token)"
    },
    "marketplace": {
      "type": "string",
      "description": "Amazon storefront for the end user: amazon.com (US) or amazon.se (Sweden, default); also uk, de, fr… Order: marketplace → country → locale/Accept-Language (en-US ⇒ amazon.com) → amazon.se. amazon.se returns curated /dp product links; amazon.com returns English search links tagged for amazon.com."
    }
  },
  "additionalProperties": false
}
get_wishlist annotations
{
  "readOnlyHint": true,
  "openWorldHint": true
}
add_wishlist_item — Add wish item
Advertised by the server during the last successful anonymous check.
Open-world

Add an item to a wishlist. Requires editToken from create. Body: name/title plus asin, url (pasted /dp), searchKeywords, or catalogId. Token storage may return a new id — update bookmarks. OpenAPI: addWishlistItem.

add_wishlist_item input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id",
    "editToken"
  ],
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "Wishlist id"
    },
    "url": {
      "type": "string"
    },
    "asin": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "emoji": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "catalogId": {
      "type": "string"
    },
    "editToken": {
      "type": "string",
      "minLength": 1,
      "description": "X-Edit-Token from create/mutate response"
    },
    "searchKeywords": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
add_wishlist_item annotations
{
  "readOnlyHint": false,
  "openWorldHint": true
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
661 ms
95th percentile latency
661 ms

Maintenance history

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

  • · probe · passed · 661 ms · metadata changed · 9 tool(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 santa-wish-mcp https://santa-wish.vercel.app/api/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 santa-wish-mcp --url https://santa-wish.vercel.app/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable santa-wish-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "santa-wish-mcp": {
      "url": "https://santa-wish.vercel.app/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "santa-wish-mcp": {
      "type": "streamableHttp",
      "url": "https://santa-wish.vercel.app/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start santa-wish-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "santa-wish-mcp": {
      "type": "http",
      "url": "https://santa-wish.vercel.app/api/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 santa-wish-mcp https://santa-wish.vercel.app/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "santa-wish-mcp": {
      "url": "https://santa-wish.vercel.app/api/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": {
    "santa-wish-mcp": {
      "serverUrl": "https://santa-wish.vercel.app/api/mcp"
    }
  }
}

Let your agent find its tools

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