Home Office Builder – hand-picked gift ideas

Hand-picked gift ideas for home offices that assistants turn into shareable wishlists fast. SE + US.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
81%
Naming quality
98%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,012Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (1.57% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "homeoffice-gifts": {
      "url": "https://home-office-builder.vercel.app/api/mcp"
    }
  }
}

Remote endpoints

https://home-office-builder.vercel.app/api/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_health

Health check for Home Office Builder. Returns ok, storage, paapi, trackingTag, tagConfigured, domain, catalogCount. tagConfigured is false until real Associates IDs are set (links omit tag=). OpenAPI: getHealth.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢search_desk_gear(q, marketplace, locale, role, budgetBand, ...)

Search Amazon for home-office desk gear on the user's marketplace. Filter by role + budgetBand. Returns PA-API products when configured, otherwise desk-setup search deep-link cards + catalogMatches. ALWAYS pass marketplace + locale. Amazon URLs omit tag= until tagConfigured is true. OpenAPI: searchAmazon.

Input Schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "minLength": 1,
      "description": "Search query, e.g. monitor arm"
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.se, amazon.com, se, de. REQUIRED — pass the user's storefront; curated ASINs only produce /dp links when trusted for that marketplace."
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es, en-US"
    },
    "role": {
      "type": "string",
      "enum": [
        "developer",
        "designer",
        "student",
        "general"
      ],
      "description": "developer | designer | student | general"
    },
    "budgetBand": {
      "type": "string",
      "enum": [
        "under-500",
        "500-1500",
        "1500-4000",
        "4000-plus"
      ],
      "description": "under-500 | 500-1500 | 1500-4000 | 4000-plus"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "required": [
    "q",
    "marketplace",
    "locale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_catalog(marketplace, locale, q, role, budgetBand, ...)

Paginated curated desk starters (~51). Prefer search_desk_gear for discovery. ALWAYS pass marketplace + locale. Filter by role + budgetBand. OpenAPI: getCatalog.

Input Schema

{
  "type": "object",
  "properties": {
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.se, amazon.com, se, de. REQUIRED — pass the user's storefront; curated ASINs only produce /dp links when trusted for that marketplace."
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es, en-US"
    },
    "q": {
      "type": "string",
      "description": "Full-text filter"
    },
    "role": {
      "type": "string",
      "enum": [
        "developer",
        "designer",
        "student",
        "general"
      ]
    },
    "budgetBand": {
      "type": "string",
      "enum": [
        "under-500",
        "500-1500",
        "1500-4000",
        "4000-plus"
      ]
    },
    "category": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 48
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "required": [
    "marketplace",
    "locale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢resolve_product(marketplace, locale, asin, url, keywords, ...)

Resolve an ASIN, pasted Amazon /dp/ URL, or keywords to an buyUrl (product /dp or desk search). ALWAYS pass marketplace + locale. Does not invent tracking tags — when unset, URLs omit tag= and tagConfigured is false. OpenAPI: resolveProduct.

Input Schema

{
  "type": "object",
  "properties": {
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.se, amazon.com, se, de. REQUIRED — pass the user's storefront; curated ASINs only produce /dp links when trusted for that marketplace."
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es, en-US"
    },
    "asin": {
      "type": "string",
      "description": "10-char Amazon ASIN"
    },
    "url": {
      "type": "string",
      "description": "Pasted Amazon product URL"
    },
    "keywords": {
      "type": "string",
      "description": "Search keywords if no ASIN"
    },
    "role": {
      "type": "string",
      "enum": [
        "developer",
        "designer",
        "student",
        "general"
      ]
    },
    "budgetBand": {
      "type": "string",
      "enum": [
        "under-500",
        "500-1500",
        "1500-4000",
        "4000-plus"
      ]
    }
  },
  "required": [
    "marketplace",
    "locale"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_desk_board(personName, deskName, role, budgetBand, marketplace, ...)

Create a home-office desk board (wishlist). Returns id, editToken, ownerUrl, shopUrl, wishlist, storage. Save editToken for add_desk_item. Prefer create_and_fill for one-shot. OpenAPI: createWishlist.

Input Schema

{
  "type": "object",
  "properties": {
    "personName": {
      "type": "string"
    },
    "deskName": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "developer",
        "designer",
        "student",
        "general"
      ]
    },
    "budgetBand": {
      "type": "string",
      "enum": [
        "under-500",
        "500-1500",
        "1500-4000",
        "4000-plus"
      ]
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.se, amazon.com, se, de. REQUIRED — pass the user's storefront; curated ASINs only produce /dp links when trusted for that marketplace."
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es, en-US"
    },
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "asin": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "searchKeywords": {
            "type": "string"
          },
          "catalogId": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡create_and_fill(personName, deskName, role, budgetBand, marketplace, ...)

One call: create a curated home office setup gift wishlist and return shopUrl (share link) + ownerUrl. Preferred agent path: create a desk board and add ASINs / keywords / search queries in one call. Pass marketplace + locale + role + budgetBand. Returns id, editToken, ownerUrl, shopUrl. OpenAPI: agentCreateAndFill.

Input Schema

{
  "type": "object",
  "properties": {
    "personName": {
      "type": "string"
    },
    "deskName": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "developer",
        "designer",
        "student",
        "general"
      ]
    },
    "budgetBand": {
      "type": "string",
      "enum": [
        "under-500",
        "500-1500",
        "1500-4000",
        "4000-plus"
      ]
    },
    "marketplace": {
      "type": "string",
      "minLength": 2,
      "description": "Amazon storefront domain or id for the end user, e.g. amazon.se, amazon.com, se, de. REQUIRED — pass the user's storefront; curated ASINs only produce /dp links when trusted for that marketplace."
    },
    "locale": {
      "type": "string",
      "minLength": 2,
      "description": "User locale, e.g. en, sv, de, fr, es, en-US"
    },
    "itemAsins": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "itemKeywords": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "itemQueries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Each query is searched and added as a desk item"
    }
  },
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_desk_board(id)

Fetch a desk board by id. Returns items with buy links when available, plus ownerUrl and shopUrl. OpenAPI: getWishlist.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "description": "Board id (short Redis id or t.* token)"
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false,
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡add_desk_item(id, editToken, name, title, asin, ...)

Add an item to a desk board. 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.

Input Schema

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

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools