Koskamo

Girlfriend Gifts MCP

An MCP server that enables AI agents to build gift recommendation lists, shopping lists, and shareable wishlists for partners. It supports multi-country Amazon buy links, search, catalog browsing, and wishlist creation with specific marketplace and locale requirements.

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.

Girlfriend Gifts MCP logo, by Girlfriend GiftsCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Girlfriend Gifts
MCP endpoint (Streamable HTTP)
https://girlfriendgifts.vercel.app/api/mcp
Vendor documentation

What you can do with it

  • Build gift recommendation lists for partners
  • Create shareable wishlists with budget and style tags
  • Search Amazon products by keywords and occasion
  • Resolve product URLs to direct buy links

Source and maintenance

Community listingRegistry 1.2.0

Protocol and capabilities

Server
girlfriend-gifts 1.0.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
  }
}

Tools

9 advertised

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

Health check for Girlfriend Gifts romantic gift inspiration. Returns ok, storage, paapi, trackingTag, defaultDomain, catalogCount (amazon.se), catalogCounts per storefront (amazon.se + amazon.com), marketplaceIds. Use list_marketplaces to discover 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 (id, domain, label, defaultLocale, currencyHint, tagConfigured). Agents MUST pick the user's marketplace and pass it on search/catalog/resolve.

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

Search Amazon for romantic partner gifts to build a recommendation or shopping list. Returns PA-API products when configured for the default storefront, otherwise romantic search deep-link cards + catalogMatches. ALWAYS pass marketplace + locale. OpenAPI: searchAmazon.

search_gifts input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "q",
    "marketplace",
    "locale"
  ],
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "description": "Search query, e.g. pearl earrings"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 20,
      "minimum": 1
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "occasion": {
      "enum": [
        "anniversary",
        "birthday",
        "valentines",
        "just-because",
        "apology",
        "wedding",
        "other"
      ],
      "type": "string"
    },
    "styleTag": {
      "enum": [
        "romantic",
        "practical",
        "luxury",
        "experience",
        "jewelry",
        "beauty",
        "home",
        "fashion",
        "tech",
        "personalized"
      ],
      "type": "string",
      "description": "Style / category filter"
    },
    "budgetBand": {
      "enum": [
        "under-300",
        "300-700",
        "700-1500",
        "1500-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    }
  },
  "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

Curated girlfriend/wife gift catalogs for building shopping lists and wishlists: 245 amazon.se /dp ASINs (default) and a separate US catalog of ASINs verified live on amazon.com (pass marketplace=amazon.com → https://www.amazon.com/dp/ASIN buy links, tagged with the server-configured amazon.com tag when set). On other marketplaces catalogMode is search-ideas. ALWAYS pass marketplace + locale. OpenAPI: getCatalog.

get_catalog input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "marketplace",
    "locale"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Full-text filter"
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "occasion": {
      "enum": [
        "anniversary",
        "birthday",
        "valentines",
        "just-because",
        "apology",
        "wedding",
        "other"
      ],
      "type": "string"
    },
    "styleTag": {
      "enum": [
        "romantic",
        "practical",
        "luxury",
        "experience",
        "jewelry",
        "beauty",
        "home",
        "fashion",
        "tech",
        "personalized"
      ],
      "type": "string"
    },
    "styleTags": {
      "type": "string",
      "description": "Comma-separated style tags"
    },
    "budgetBand": {
      "enum": [
        "under-300",
        "300-700",
        "700-1500",
        "1500-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    }
  },
  "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 (product /dp or romantic search). ALWAYS pass marketplace + locale for the user. Does not invent Associates tags — uses server-configured tags per storefront. OpenAPI: resolveProduct.

resolve_product input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "marketplace",
    "locale"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Pasted Amazon product URL"
    },
    "asin": {
      "type": "string",
      "description": "10-char Amazon ASIN"
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "keywords": {
      "type": "string",
      "description": "Search keywords if no ASIN"
    },
    "occasion": {
      "enum": [
        "anniversary",
        "birthday",
        "valentines",
        "just-because",
        "apology",
        "wedding",
        "other"
      ],
      "type": "string"
    },
    "styleTag": {
      "enum": [
        "romantic",
        "practical",
        "luxury",
        "experience",
        "jewelry",
        "beauty",
        "home",
        "fashion",
        "tech",
        "personalized"
      ],
      "type": "string"
    },
    "budgetBand": {
      "enum": [
        "under-300",
        "300-700",
        "700-1500",
        "1500-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    }
  },
  "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 girlfriend/wife gift list / wishlist for shopping-list building. Returns id, editToken, ownerUrl (she edits), shopUrl (he/agent shops), 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
      }
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "occasion": {
      "enum": [
        "anniversary",
        "birthday",
        "valentines",
        "just-because",
        "apology",
        "wedding",
        "other"
      ],
      "type": "string"
    },
    "styleTags": {
      "type": "array",
      "items": {
        "enum": [
          "romantic",
          "practical",
          "luxury",
          "experience",
          "jewelry",
          "beauty",
          "home",
          "fashion",
          "tech",
          "personalized"
        ],
        "type": "string"
      }
    },
    "budgetBand": {
      "enum": [
        "under-300",
        "300-700",
        "700-1500",
        "1500-plus"
      ],
      "type": "string"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    },
    "relationship": {
      "enum": [
        "girlfriend",
        "wife",
        "fiancée",
        "partner"
      ],
      "type": "string"
    },
    "recipientName": {
      "type": "string"
    }
  },
  "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

Preferred agent path for list-building: create a gift wishlist and fill it with ASINs / keywords / search queries in one call. Returns id, editToken, ownerUrl, shopUrl. Pass marketplace + locale. OpenAPI: agentCreateAndFill.

create_and_fill input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "occasion": {
      "enum": [
        "anniversary",
        "birthday",
        "valentines",
        "just-because",
        "apology",
        "wedding",
        "other"
      ],
      "type": "string"
    },
    "itemAsins": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "styleTags": {
      "type": "array",
      "items": {
        "enum": [
          "romantic",
          "practical",
          "luxury",
          "experience",
          "jewelry",
          "beauty",
          "home",
          "fashion",
          "tech",
          "personalized"
        ],
        "type": "string"
      }
    },
    "budgetBand": {
      "enum": [
        "under-300",
        "300-700",
        "700-1500",
        "1500-plus"
      ],
      "type": "string"
    },
    "itemQueries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Each query is searched and added as a wish"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    },
    "itemKeywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "relationship": {
      "enum": [
        "girlfriend",
        "wife",
        "fiancée",
        "partner"
      ],
      "type": "string"
    },
    "recipientName": {
      "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 wishlist items with buyUrl/linkType when available, plus ownerUrl and shopUrl. 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)"
    }
  },
  "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 gift list / wishlist (shopping-list building). Requires editToken from create. Body: name/title plus asin, url (pasted /dp), searchKeywords, or catalogId. Token storage may return a new id — update bookmarks. Prefer buyUrl in responses. 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"
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es"
    },
    "catalogId": {
      "type": "string"
    },
    "editToken": {
      "type": "string",
      "minLength": 1,
      "description": "X-Edit-Token from create/mutate response"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.com, amazon.se, us, se, de. REQUIRED — curated catalogs with real /dp ASINs on amazon.se (Sweden, default) and amazon.com (United States: marketplace=amazon.com → https://www.amazon.com/dp/ASIN links); other marketplaces get romantic search deep-links."
    },
    "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
501 ms
95th percentile latency
501 ms

Maintenance history

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

  • · probe · passed · 501 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 girlfriend-gifts-mcp https://girlfriendgifts.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 girlfriend-gifts-mcp --url https://girlfriendgifts.vercel.app/api/mcp

Cursor

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

Cline

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

VS Code

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

Let your agent find its tools

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