GiftRoam MCP
GiftRoam MCP allows AI agents to search for gifts, check delivery feasibility to over 200 countries, and generate secure checkout links for users. The server handles the gifting workflow without collecting sensitive user data like addresses or payment details directly.
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.
https://mcp.giftroam.com/mcpWhat its tools do
6 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (1)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to giftroam.com ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Search for gifts by country, occasion, or budget
- Check delivery feasibility and times for specific destinations
- Generate secure checkout links for gift purchases
Source and maintenance
Protocol and capabilities
- Server
- giftroam 0.3.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 6 advertised
- Resources
- 10 advertised
- Resource templates
- 0 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
},
"extensions": {
"io.modelcontextprotocol/ui": {}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
search_gifts — Search gifts deliverable to a country
Find gifts that can be delivered to a destination country, optionally filtered by free text, occasion, budget (minor units) and a needed-by date. Returns a shortlist with final customer prices (delivery included) and delivery days. Paginate with cursor.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 120,
"description": "Product keywords, 1-4 words (e.g. 'chocolate basket', 'red roses'). Destination, recipient and occasion are separate fields. Omit for a general browse."
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous page."
},
"locale": {
"type": "string",
"maxLength": 12,
"description": "Display language for results (e.g. he-IL). The query may be typed in that language."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Destination country, ISO-3166 alpha-2 (e.g. FR)."
},
"occasion": {
"type": "string",
"maxLength": 48,
"description": "Occasion slug from the occasions resource (e.g. birthday)."
},
"budget_max": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Maximum price in minor units (cents)."
},
"budget_min": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum price in minor units (cents)."
},
"date_needed": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD; only gifts that can arrive by then."
}
}
}{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"total": {
"type": "number"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"country": {
"type": "object",
"properties": {
"iso2": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"gift_id": {
"type": "string"
},
"currency": {
"type": "string"
},
"image_url": {
"type": "string"
},
"one_liner": {
"type": "string"
},
"delivery_days": {
"type": "object",
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"description": "Business-day delivery estimate range"
},
"display_price": {
"type": "string",
"description": "Final customer price incl. delivery, e.g. \"$99.95\""
},
"contains_alcohol": {
"type": "string",
"description": "yes | no | unknown"
},
"customer_amount_minor": {
"type": "number",
"description": "Price in minor units (cents)"
}
}
}
},
"next_cursor": {
"type": [
"string",
"null"
]
},
"date_warning": {
"type": "string",
"description": "Present when the requested needed-by date is unreachable: results are shown WITHOUT the date filter"
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
}
}
}{
"title": "Search gifts deliverable to a country",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_gift_details — Get gift details
Full description, contents, images, customer price, estimated delivery window (EST cutoff-aware), substitution policy and restrictions for one gift in one destination country.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"gift_id",
"country"
],
"properties": {
"locale": {
"type": "string",
"maxLength": 12,
"description": "Display language for gift content (e.g. he-IL). Prices and availability are unaffected."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Destination country, ISO-3166 alpha-2."
},
"gift_id": {
"type": "string",
"minLength": 1,
"description": "A gift_id from search results (or the gift's URL slug)."
}
}
}{
"type": "object",
"properties": {
"gift": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"images": {
"type": "array",
"items": {
"type": "string"
}
},
"gift_id": {
"type": "string"
},
"contents": {
"type": "array",
"items": {
"type": "string"
}
},
"currency": {
"type": "string"
},
"image_url": {
"type": "string"
},
"one_liner": {
"type": "string"
},
"description": {
"type": "string"
},
"restrictions": {
"type": "array",
"items": {
"type": "string"
}
},
"delivery_days": {
"type": "object",
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"description": "Business-day delivery estimate range"
},
"display_price": {
"type": "string",
"description": "Final customer price incl. delivery, e.g. \"$99.95\""
},
"contains_alcohol": {
"type": "string",
"description": "yes | no | unknown"
},
"estimated_delivery": {
"type": "object",
"properties": {
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"latest": {
"type": "string"
},
"earliest": {
"type": "string"
},
"cutoff_passed_today": {
"type": "boolean"
}
}
},
"substitution_policy": {
"type": "string"
},
"customer_amount_minor": {
"type": "number",
"description": "Price in minor units (cents)"
}
}
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"translation": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"provider": {
"type": [
"string",
"null"
]
},
"contentHash": {
"type": "string"
},
"sourceLocale": {
"type": "string"
},
"targetLocale": {
"type": "string"
}
},
"description": "How the gift content was localized"
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
}
}
}{
"title": "Get gift details",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_delivery — Check delivery feasibility
Is delivery to a country (optionally a city, by a date, for a specific gift) feasible? Returns earliest/latest estimate and warnings (PO box, hotel, holiday window) with a suggested action.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"country"
],
"properties": {
"city": {
"type": "string",
"maxLength": 80,
"description": "Destination city (used for warnings only; never store addresses in chat)."
},
"locale": {
"type": "string",
"maxLength": 12,
"description": "Language of the conversation with the user (e.g. he-IL, fr-FR). Localizes content and messages; prices and availability are unaffected."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Destination country, ISO-3166 alpha-2."
},
"gift_id": {
"type": "string",
"description": "Optional gift_id to use that gift's delivery window."
},
"date_needed": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD the gift must arrive by."
}
}
}{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"latest": {
"type": "string",
"description": "ISO date of the latest estimated delivery"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"earliest": {
"type": "string",
"description": "ISO date of the earliest estimated delivery"
},
"feasible": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
},
"business_days": {
"type": "object",
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
}
},
"suggested_action": {
"type": [
"string",
"null"
]
}
}
}{
"title": "Check delivery feasibility",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}create_checkout — Create a checkout link
Create a signed, single-purpose checkout link (30-minute expiry) for one gift to one country. The schema has no recipient fields on purpose: name, address, phone, delivery details and payment are collected on the secure page. Returns an order summary with the link. Retries with the same idempotency_key return the same link.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"gift_id",
"country",
"idempotency_key"
],
"properties": {
"locale": {
"type": "string",
"maxLength": 12,
"description": "Language of the conversation with the user (e.g. he-IL, fr-FR). Localizes content and messages; prices and availability are unaffected. The checkout page opens in this language."
},
"country": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Destination country, ISO-3166 alpha-2."
},
"gift_id": {
"type": "string",
"minLength": 1,
"description": "A gift_id from search results."
},
"quantity": {
"type": "number",
"const": 1,
"default": 1,
"description": "Always 1 in v1."
},
"delivery_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Requested delivery date YYYY-MM-DD; omit for as-soon-as-possible."
},
"gift_card_text": {
"type": "string",
"maxLength": 180,
"description": "Card message (≤180 chars) if the user already gave one."
},
"idempotency_key": {
"type": "string",
"maxLength": 128,
"minLength": 8,
"description": "Client-generated key; retries with the same key return the same link."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"summary": {
"type": "object",
"properties": {
"gift": {
"type": "string"
},
"notes": {
"type": "array",
"items": {
"type": "string"
}
},
"price": {
"type": "string"
},
"country": {
"type": "string"
},
"gift_message": {
"type": [
"string",
"null"
]
},
"delivery_date": {
"type": "string"
},
"estimated_window": {
"type": "object",
"properties": {
"latest": {
"type": "string"
},
"earliest": {
"type": "string"
}
}
}
}
},
"expires_at": {
"type": "string"
},
"checkout_url": {
"type": "string",
"description": "Single-purpose secure checkout link on checkout.giftroam.com (30-minute expiry)"
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
}
}
}{
"title": "Create a checkout link",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}get_order_status — Get order status
Customer-facing status, ETA window and next action for an order. Looked up by the buyer's private order token, issued after payment; the token is the only credential. Never returns address, phone or payment details.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"order_token"
],
"properties": {
"locale": {
"type": "string",
"maxLength": 12,
"description": "Language of the conversation with the user (e.g. he-IL, fr-FR). Localizes content and messages; prices and availability are unaffected."
},
"order_token": {
"type": "string",
"minLength": 1,
"description": "The order token from the buyer's confirmation email (GR-XXXXX-…)."
}
}
}{
"type": "object",
"properties": {
"gift": {
"type": "string"
},
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"status": {
"type": "string",
"description": "Machine status, e.g. confirmed | on_the_way | delivered | needs_attention"
},
"country": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"next_action": {
"type": "string"
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
},
"status_label": {
"type": "string"
},
"delivery_date": {
"type": [
"string",
"null"
]
},
"estimated_window": {
"type": [
"object",
"null"
],
"properties": {
"latest": {
"type": "string"
},
"earliest": {
"type": "string"
}
}
}
}
}{
"title": "Get order status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_my_orders — List my orders (signed-in)
The signed-in user's GiftRoam orders: status, ETA window, gift, destination and the order token for tracking. Requires the authenticated GiftRoam connection (OAuth, scope orders:read); on a guest connection it returns auth_required. Never returns addresses, phone numbers or payment details.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"locale": {
"type": "string",
"maxLength": 12,
"description": "Language of the conversation with the user (e.g. he-IL, fr-FR). Localizes content and messages; prices and availability are unaffected."
}
}
}{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"next_step": {
"type": [
"string",
"null"
]
}
},
"description": "Present only when the call failed"
},
"total": {
"type": "number"
},
"locale": {
"type": "string",
"description": "BCP-47 locale the texts are localized to"
},
"orders": {
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string"
},
"gift": {
"type": "string"
},
"status": {
"type": "string"
},
"country": {
"type": "string"
},
"currency": {
"type": "string"
},
"created_at": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"order_token": {
"type": "string"
},
"amount_minor": {
"type": "number"
},
"status_label": {
"type": "string"
},
"delivery_date": {
"type": [
"string",
"null"
]
},
"estimated_window": {
"type": [
"object",
"null"
],
"properties": {
"latest": {
"type": "string"
},
"earliest": {
"type": "string"
}
}
}
}
}
},
"display_text": {
"type": "string",
"description": "Human-readable one-line summary of the result"
}
}
}{
"title": "List my orders (signed-in)",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
10 advertised
GiftRoam app — GiftRoam
Interactive gift results, details, checkout and order status.
ui://giftroam/app.html@v8GiftRoam app v1 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v1GiftRoam app v2 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v2GiftRoam app v3 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v3GiftRoam app v4 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v4GiftRoam app v5 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v5GiftRoam app v6 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v6GiftRoam app v7 (legacy alias) — GiftRoam
Legacy widget URI — serves the current app.
ui://giftroam/app.html@v7countries — Deliverable countries
Active destination countries (ISO-2, name, currency). Refreshed by the daily catalog sync.
giftroam://countriesoccasions — Occasions
Occasion slugs usable in search_gifts (birthday, anniversary, …), with seasonal flags.
giftroam://occasions90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
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
- 1288 ms
- 95th percentile latency
- 1288 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1288 ms · metadata changed · 6 tool(s), 10 resource(s), 0 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http giftroam-mcp https://mcp.giftroam.com/mcpCodex
codex mcp add giftroam-mcp --url https://mcp.giftroam.com/mcpCursor
{
"mcpServers": {
"giftroam-mcp": {
"url": "https://mcp.giftroam.com/mcp"
}
}
}Cline
{
"mcpServers": {
"giftroam-mcp": {
"type": "streamableHttp",
"url": "https://mcp.giftroam.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"giftroam-mcp": {
"type": "http",
"url": "https://mcp.giftroam.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http giftroam-mcp https://mcp.giftroam.com/mcpClaude Desktop
https://mcp.giftroam.com/mcpWindsurf
{
"mcpServers": {
"giftroam-mcp": {
"serverUrl": "https://mcp.giftroam.com/mcp"
}
}
}Let your agent find its tools
Find servers like GiftRoam MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run GiftRoam MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.