MCP 서버

Grabblist

com.grabbitapp/grabblist
커머스 및 리테일 생산성 공개 · 연결 가능 MCP 2026-07-28

이 MCP로 할 수 있는 일

Saves, organizes, searches, compares, and shares static snapshots of web products and other finds in collections and wishlists.

add_item
Save an item to the user's Grabblist. Creates a static snapshot — Grabblist does not monitor prices or auto-update data. Only include fields with values available from the source. If no image is provided, the server attempts to fetch og:image automatically.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['url', 'title', 'price', 'currency', 'platform'], 'properties': {'url': {'type': 'object', 'description': 'Direct public HTTP(S) page URL.'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'description': 'Tags for categorization'}, 'image': {'type': 'object', 'description': 'Main image URL. Server auto-fetches og:image if not provided.'}, 'price': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Price as number (e.g. 99.99) — REQUIRED, extract from page'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Exact title from the page'}, 'images': {'type': 'array', 'items': {'type': 'object'}, 'description': 'All image URLs found on the page'}, 'reason': {'type': 'string', 'maxLength': 1000, 'description': 'Why this change was made (shown to user in change history)'}, 'category': {'enum': ['electronics', 'furniture', 'home', 'clothing', 'vehicles', 'kids', 'sports', 'collectibles', 'tools', 'other'], 'type': 'string', 'description': 'Category — pick the best match'}, 'currency': {'type': 'string', 'maxLength': 10, 'description': 'Currency code: USD, NZD, AUD, EUR, GBP, etc.'}, 'location': {'type': 'string', 'maxLength': 500, 'description': 'Seller location or pickup location'}, 'platform': {'type': 'string', 'maxLength': 100, 'description': 'Site domain name without TLD: amazon.com→"amazon", ebay.co.nz→"ebay", kiwiquads.co.nz→"kiwiquads"'}, 'quantity': {'type': 'integer', 'maximum': 1000000, 'minimum': 1, 'description': 'How many of this item'}, 'condition': {'type': 'string', 'maxLength': 100, 'description': 'Condition if applicable: New, Used, Refurbished, Used - Like New, Used - Good, Used - Fair'}, 'item_type': {'enum': ['product', 'rental', 'service', 'course', 'listing', 'event', 'other'], 'type': 'string', 'description': 'What kind of item: product (buy), rental (Airbnb), service (cleaning), course (Udemy), listing (classified), event (ticket). Default: product.'}, 'posted_at': {'type': 'string', 'maxLength': 64, 'description': 'When the listing was originally posted (ISO 8601)'}, 'attributes': {'type': 'object', 'description': 'Specs/details as key-value pairs'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Description from the page (max 2000 chars)'}, 'seller_name': {'type': 'string', 'maxLength': 200, 'description': 'Seller or store name'}, 'seller_rating': {'type': 'number', 'maximum': 5, 'minimum': 0, 'description': 'Seller rating 0-5'}, 'original_price': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'Original price before discount (if on sale)'}, 'seller_reviews': {'type': 'integer', 'maximum': 1000000000, 'minimum': 0, 'description': 'Number of seller reviews'}}}
add_to_collection
Add a saved item to a collection. Both the item and collection must already exist.
멱등성
입력 스키마
{'type': 'object', 'required': ['collection_id', 'item_id'], 'properties': {'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'item_id': {'type': 'string', 'description': 'The item ID to add'}, 'collection_id': {'type': 'string', 'description': 'The collection ID'}}}
ask_agent
Delegate a task to Grabblist's built-in AI assistant. The agent knows the user's Grabblist and can answer questions, compare items, give shopping advice, or analyze saved products. Use this when you want a second opinion or a specialized shopping assistant perspective. Requires the user to have an Anthropic API key configured in Settings.
외부 접근 가능
입력 스키마
{'type': 'object', 'required': ['message'], 'properties': {'model': {'enum': ['haiku', 'sonnet', 'opus'], 'type': 'string', 'description': 'AI model to use (default: sonnet). haiku=fast/cheap, sonnet=balanced, opus=most capable'}, 'message': {'type': 'string', 'maxLength': 4000, 'description': 'The question or task for the Grabblist assistant'}}}
create_collection
Create a new collection (folder) in the user's Grabblist to organize saved items.
입력 스키마
{'type': 'object', 'required': ['name'], 'properties': {'icon': {'type': 'string', 'description': 'Material Symbols icon name (e.g. "devices", "home", "shopping_bag", "checkroom", "directions_car", "favorite"). Default: inventory_2'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Collection name, e.g. "Gaming Setup" or "Gift Ideas"'}, 'color': {'type': 'string', 'description': 'Hex color for the collection (e.g. "#3B82F6", "#22C55E", "#A855F7", "#EC4899", "#F59E0B", "#EF4444"). Default: #3B82F6'}, 'budget': {'type': 'number', 'description': 'Total spending target for this collection (e.g. 1500 for "Build PC under $1500")'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'Short description of what this collection is for'}, 'budget_currency': {'type': 'string', 'description': 'Currency for the budget (default: NZD)'}}}
delete_collection
Permanently delete a collection. Items inside are not deleted — they stay in the Grabblist.
파괴적 작업 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The collection ID to delete'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}}}
delete_item
Remove one or more items from the user's Grabblist (soft-delete). Pass a single id or an array of ids for batch operations.
파괴적 작업 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Item ID or array of item IDs to delete'}, 'reason': {'type': 'string', 'maxLength': 1000, 'description': 'Why this change was made (shown to user in change history)'}}}
get_collection_activity
Get recent activity on a collection — additions, removals, edits.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['collection_id'], 'properties': {'limit': {'type': 'number', 'maximum': 50, 'minimum': 1, 'description': 'Max events to return (default: 20)'}, 'collection_id': {'type': 'string', 'description': 'The collection ID'}}}
get_item
Get full details of a saved item by ID. Returns a static snapshot from the user's Grabblist.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The item ID'}}}
get_item_graph
Get all relations for an item — alternatives, complements, upgrades, duplicates. Returns the item and all connected items with their relation types.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The item ID to get relations for'}}}
get_item_history
Get the change history for a saved item — who changed what and when.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['item_id'], 'properties': {'limit': {'type': 'number', 'maximum': 50, 'minimum': 1, 'description': 'Max events to return (default: 20)'}, 'item_id': {'type': 'string', 'description': 'The item ID'}}}
get_wishlist
Get all saved items from the user's Grabblist. Each item is a static snapshot — data reflects the moment it was saved, not current prices.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'number', 'maximum': 100, 'minimum': 1, 'description': 'Max items to return (default: 50)'}, 'platform': {'type': 'string', 'description': 'Filter by platform (domain name, e.g. "amazon", "ebay", "trademe")'}}}
link_items
Create typed relations between items: alternative (A or B), complement (A and B together), upgrade (B replaces A), duplicate (same item different site), same_seller. Supports single pair (from_id, to_id, relation) or bulk (pairs array).
멱등성
입력 스키마
{'type': 'object', 'properties': {'pairs': {'type': 'array', 'items': {'type': 'object', 'required': ['from_id', 'to_id', 'relation'], 'properties': {'to_id': {'type': 'string', 'description': 'Second item ID'}, 'from_id': {'type': 'string', 'description': 'First item ID'}, 'relation': {'enum': ['alternative', 'complement', 'upgrade', 'duplicate', 'same_seller'], 'type': 'string', 'description': 'Type of relationship'}}}, 'description': 'Array of pairs to link (for bulk mode)'}, 'to_id': {'type': 'string', 'description': 'Second item ID (for single pair mode)'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'from_id': {'type': 'string', 'description': 'First item ID (for single pair mode)'}, 'relation': {'enum': ['alternative', 'complement', 'upgrade', 'duplicate', 'same_seller'], 'type': 'string', 'description': 'Type of relationship (for single pair mode)'}}}
list_collections
List all collections OR get a specific collection with its items. Without id: returns all collections with counts/values. With id: returns that collection's metadata and all items inside (with optional filters).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'id': {'type': 'string', 'description': 'Collection ID — if provided, returns that collection with all its items. If omitted, lists all collections.'}, 'sort': {'enum': ['newest', 'oldest', 'price_asc', 'price_desc', 'title'], 'type': 'string', 'description': 'Sort order (only when id is provided, default: newest)'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Filter items that have ALL these tags (only when id is provided)'}, 'status': {'enum': ['considering', 'shortlisted', 'decided', 'bought', 'rejected'], 'type': 'string', 'description': 'Filter by decision status (only when id is provided)'}, 'platform': {'type': 'string', 'description': 'Filter by platform domain name, e.g. "amazon", "ebay" (only when id is provided)'}, 'max_price': {'type': 'number', 'description': 'Maximum price filter (only when id is provided)'}, 'min_price': {'type': 'number', 'description': 'Minimum price filter (only when id is provided)'}, 'created_by': {'enum': ['user', 'ai', 'extension'], 'type': 'string', 'description': 'Filter by who added: "ai" for AI-added items (only when id is provided)'}}}
ping
Test connectivity to Grabblist and return service version.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}}
remove_from_collection
Remove one or more items from a collection. Pass a single item_id or an array of item_ids for batch removal. Items are NOT deleted — they stay in the Grabblist.
멱등성
입력 스키마
{'type': 'object', 'required': ['collection_id', 'item_ids'], 'properties': {'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'item_ids': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Item ID or array of item IDs to remove'}, 'collection_id': {'type': 'string', 'description': 'The collection ID'}}}
restore_item
Restore one or more deleted (archived) items back to the Grabblist. Pass a single id or an array of ids for batch restore.
멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Item ID or array of item IDs to restore'}, 'reason': {'type': 'string', 'maxLength': 1000, 'description': 'Why this change was made (shown to user in change history)'}}}
search_saved
Search within the user's saved items by keyword
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'number', 'maximum': 50, 'minimum': 1, 'description': 'Max results (default: 20)'}, 'query': {'type': 'string', 'maxLength': 500, 'description': 'Search query'}}}
send_feedback
Send feedback, bug report, or feature request to the Grabbit team. Use this when you encounter parsing failures, missing features, broken URLs, or have improvement suggestions. The team reads these to improve the product. Be specific about what went wrong and where.
입력 스키마
{'type': 'object', 'required': ['type', 'message'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'description': 'The URL where the issue occurred'}, 'tool': {'type': 'string', 'description': 'The tool you were using when the issue occurred (e.g. add_item, search_saved)'}, 'type': {'enum': ['bug', 'parsing_failure', 'feature_request', 'feedback'], 'type': 'string', 'description': 'Type: bug (something broken), parsing_failure (price/title/image not extracted), feature_request (wishlist), feedback (general feedback)'}, 'error': {'type': 'string', 'description': 'Error message you received, if any'}, 'message': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'What happened or what you propose. Be specific — the team reads this.'}}}
set_pinned_items
Set the pinned "Top Picks" items for a collection (max 3). Pinned items are highlighted on the share page.
멱등성
입력 스키마
{'type': 'object', 'required': ['collection_id', 'item_ids'], 'properties': {'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'item_ids': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Items to pin, in display order (1st = top)'}, 'collection_id': {'type': 'string', 'description': 'The collection ID'}}}
unlink_items
Remove a relation between two items.
파괴적 작업 멱등성
입력 스키마
{'type': 'object', 'required': ['from_id', 'to_id', 'relation'], 'properties': {'to_id': {'type': 'string', 'description': 'Second item ID'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'from_id': {'type': 'string', 'description': 'First item ID'}, 'relation': {'enum': ['alternative', 'complement', 'upgrade', 'duplicate', 'same_seller'], 'type': 'string', 'description': 'The relation type to remove'}}}
update_collection
Update a collection's name, icon, description, budget, or sharing status. Only provide the fields you want to change — omitted fields stay unchanged. Set is_public=true to share (returns public URL), is_public=false to unshare.
멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'The collection ID to update'}, 'icon': {'type': 'string', 'description': 'Material Symbols icon name (e.g. "devices", "home", "shopping_bag")'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'New collection name'}, 'color': {'type': 'string', 'description': 'Hex color (e.g. "#3B82F6", "#22C55E", "#EF4444")'}, 'budget': {'type': 'number', 'description': 'New budget amount'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'is_public': {'type': 'boolean', 'description': 'Set true to share (generates public URL), false to unshare'}, 'description': {'type': 'string', 'maxLength': 500, 'description': 'New description'}, 'budget_currency': {'type': 'string', 'description': 'New budget currency'}}}
update_item
Edit fields on one or more saved items. Pass a single id or an array of ids for batch updates (same fields applied to all). For batch: attributes are REPLACED not merged, og:image fallback is skipped.
멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'oneOf': [{'type': 'string'}, {'type': 'array', 'items': {'type': 'string'}}], 'description': 'Item ID or array of item IDs to update'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100}, 'description': 'Replace all tags with this list'}, 'notes': {'type': 'string', 'maxLength': 2000, 'description': 'User or AI notes — personal comments, thoughts, comparisons'}, 'title': {'type': 'string', 'maxLength': 500, 'description': 'Item title'}, 'images': {'type': 'array', 'items': {'type': 'object'}, 'description': 'All image URLs — replaces the entire images array'}, 'reason': {'type': 'string', 'maxLength': 1000, 'description': 'Why this change was made (shown to user in change history)'}, 'status': {'enum': ['considering', 'shortlisted', 'decided', 'bought', 'rejected'], 'type': 'string', 'description': 'Decision status: considering, shortlisted, decided, bought, rejected'}, 'category': {'enum': ['electronics', 'furniture', 'home', 'clothing', 'vehicles', 'kids', 'sports', 'collectibles', 'tools', 'other'], 'type': 'string', 'description': 'Item category'}, 'quantity': {'type': 'integer', 'maximum': 1000000, 'minimum': 1, 'description': 'How many of this item'}, 'image_url': {'type': 'object', 'description': 'Main image URL'}, 'item_type': {'enum': ['product', 'rental', 'service', 'course', 'listing', 'event', 'other'], 'type': 'string', 'description': 'What kind of item this is'}, 'attributes': {'type': 'object', 'description': 'Merge into existing attributes'}, 'description': {'type': 'string', 'maxLength': 2000, 'description': 'Item description (max 2000 chars)'}, 'is_favorite': {'type': 'boolean', 'description': 'Set true to favorite, false to unfavorite'}, 'target_price': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'What the user wants to pay — not the actual price, but the goal price'}}}
update_price
Manually update the price on a saved item. Records old and new price for comparison. This is a manual correction, not automatic price tracking.
멱등성
입력 스키마
{'type': 'object', 'required': ['id', 'price'], 'properties': {'id': {'type': 'string', 'description': 'The item ID'}, 'price': {'type': 'number', 'maximum': 1000000000000, 'minimum': 0, 'description': 'New current price'}, 'reason': {'type': 'string', 'description': 'Why this change was made (shown to user in change history)'}, 'source': {'enum': ['ai_check', 'manual'], 'type': 'string', 'description': 'Price update source'}}}
추가됨
ask_agent
2026년 9월 17일 12:35 PM
추가됨
send_feedback
2026년 9월 17일 12:35 PM
추가됨
set_pinned_items
2026년 9월 17일 12:35 PM
추가됨
get_collection_activity
2026년 9월 17일 12:35 PM
추가됨
get_item_history
2026년 9월 17일 12:35 PM
추가됨
unlink_items
2026년 9월 17일 12:35 PM
추가됨
get_item_graph
2026년 9월 17일 12:35 PM
추가됨
link_items
2026년 9월 17일 12:35 PM
추가됨
update_collection
2026년 9월 17일 12:35 PM
추가됨
delete_collection
2026년 9월 17일 12:35 PM
추가됨
remove_from_collection
2026년 9월 17일 12:35 PM
추가됨
add_to_collection
2026년 9월 17일 12:35 PM
추가됨
create_collection
2026년 9월 17일 12:35 PM
추가됨
list_collections
2026년 9월 17일 12:35 PM
추가됨
update_item
2026년 9월 17일 12:35 PM
추가됨
update_price
2026년 9월 17일 12:35 PM
추가됨
search_saved
2026년 9월 17일 12:35 PM
추가됨
restore_item
2026년 9월 17일 12:35 PM
추가됨
delete_item
2026년 9월 17일 12:35 PM
추가됨
add_item
2026년 9월 17일 12:35 PM
추가됨
get_item
2026년 9월 17일 12:35 PM
추가됨
get_wishlist
2026년 9월 17일 12:35 PM
추가됨
ping
2026년 9월 17일 12:35 PM