Qué hace este MCP
Creates, edits, reads, and shares backpacking gear lists while providing cited gear catalog weights and variants.
Herramientas
Esquema de entrada
{'type': 'object', 'required': ['edit_link', 'items'], 'properties': {'again': {'type': 'boolean', 'description': 'A call identical to one made in the last ten minutes is taken as a retry and adds nothing: the earlier result comes back with repeated set. Pass true to add the same rows a second time on purpose.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'qty': {'type': 'integer', 'maximum': 9999, 'minimum': 1, 'description': 'How many. Default 1.'}, 'kcal': {'type': 'integer', 'minimum': 0, 'description': 'Calories per unit, for food.'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The product or item name. Required.'}, 'note': {'type': 'string', 'maxLength': 2000, 'description': 'A short free-text note on the row.'}, 'brand': {'type': 'string', 'maxLength': 120, 'description': 'The maker, when known.'}, 'folder': {'type': 'string', 'maxLength': 120, 'description': 'The folder to put it in, by name. Created when the list has no folder of that name.'}, 'variant': {'type': 'string', 'maxLength': 120, 'description': 'Size, length or configuration that changes the weight, such as Long or 20F.'}, 'weight_g': {'type': 'number', 'minimum': 0, 'description': "Weight of ONE unit, in grams. Omit when unknown; the list keeps working without it, and a row with a catalog_id takes the catalog's cited weight."}, 'worn_qty': {'type': 'integer', 'minimum': 0, 'description': 'Of qty, how many are worn rather than carried (three pairs of socks, one on your feet). For a row that is entirely worn, set classification to worn instead.'}, 'gear_type': {'type': 'string', 'maxLength': 120, 'description': 'What kind of thing it is: Tent, Quilt, Trail runners.'}, 'catalog_id': {'type': 'integer', 'maximum': 2147483647, 'minimum': 1, 'description': "A catalog row id from search_catalog. The row takes the catalog's brand, name, variant, gear type and cited weight, and follows catalog corrections; a weight_g given as well is kept as your own figure."}, 'needs_cooking': {'type': 'boolean', 'description': 'Food to cook on this trip. Each unit assumes one boil for a rough fuel estimate; no quantity or weight changes.'}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': "base, worn or consumable. Omit to follow the folder's default."}}}, 'minItems': 1}, 'folder': {'type': 'string', 'maxLength': 120, 'description': "A folder name for every row that doesn't name its own."}, 'edit_link': {'type': 'string', 'description': "The list's edit link, whole (mahonia.app/e/CODE#token). The part after # is the write capability."}}}
Esquema de salida
{'type': 'object', 'required': ['added', 'folders_made', 'share_link', 'totals', 'repeated'], 'properties': {'added': {'type': 'integer', 'description': 'Rows added.'}, 'totals': {'type': 'object', 'required': ['base_g', 'worn_g', 'consumable_g', 'carried_g', 'total_g', 'item_count'], 'properties': {'kcal': {'type': 'number', 'description': 'Only when a food row carries calories.'}, 'base_g': {'type': 'integer', 'description': 'In the pack, consumables aside.'}, 'worn_g': {'type': 'integer', 'description': 'On your body.'}, 'total_g': {'type': 'integer', 'description': 'carried_g plus worn_g.'}, 'carried_g': {'type': 'integer', 'description': 'base_g plus consumable_g: what is on your back.'}, 'item_count': {'type': 'integer', 'description': 'Rows, nested ones included.'}, 'consumable_g': {'type': 'integer', 'description': 'Food, fuel, water.'}}, 'description': 'Whole grams, summed over every row of the list.'}, 'repeated': {'type': 'boolean', 'description': "True when this call repeated one made in the last ten minutes: nothing was added again, and the figures are that call's. Pass again: true to add the rows a second time."}, 'share_link': {'type': 'string'}, 'folders_made': {'type': 'array', 'items': {'type': 'string', 'description': 'User text.'}, 'description': "Folders that didn't exist and were made for these rows."}}}
Esquema de entrada
{'type': 'object', 'properties': {'unit': {'enum': ['g', 'kg', 'oz', 'lb'], 'type': 'string', 'description': 'The unit the list displays in. Weights are in grams regardless.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'qty': {'type': 'integer', 'maximum': 9999, 'minimum': 1, 'description': 'How many. Default 1.'}, 'kcal': {'type': 'integer', 'minimum': 0, 'description': 'Calories per unit, for food.'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The product or item name. Required.'}, 'note': {'type': 'string', 'maxLength': 2000, 'description': 'A short free-text note on the row.'}, 'brand': {'type': 'string', 'maxLength': 120, 'description': 'The maker, when known.'}, 'folder': {'type': 'string', 'maxLength': 120, 'description': 'The folder to put it in, by name. Created when the list has no folder of that name.'}, 'variant': {'type': 'string', 'maxLength': 120, 'description': 'Size, length or configuration that changes the weight, such as Long or 20F.'}, 'weight_g': {'type': 'number', 'minimum': 0, 'description': "Weight of ONE unit, in grams. Omit when unknown; the list keeps working without it, and a row with a catalog_id takes the catalog's cited weight."}, 'worn_qty': {'type': 'integer', 'minimum': 0, 'description': 'Of qty, how many are worn rather than carried (three pairs of socks, one on your feet). For a row that is entirely worn, set classification to worn instead.'}, 'gear_type': {'type': 'string', 'maxLength': 120, 'description': 'What kind of thing it is: Tent, Quilt, Trail runners.'}, 'catalog_id': {'type': 'integer', 'maximum': 2147483647, 'minimum': 1, 'description': "A catalog row id from search_catalog. The row takes the catalog's brand, name, variant, gear type and cited weight, and follows catalog corrections; a weight_g given as well is kept as your own figure."}, 'needs_cooking': {'type': 'boolean', 'description': 'Food to cook on this trip. Each unit assumes one boil for a rough fuel estimate; no quantity or weight changes.'}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': "base, worn or consumable. Omit to follow the folder's default."}}}, 'description': 'Rows not placed through a folder above; each may name its folder.'}, 'title': {'type': 'string', 'maxLength': 200}, 'folders': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'qty': {'type': 'integer', 'maximum': 9999, 'minimum': 1, 'description': 'How many. Default 1.'}, 'kcal': {'type': 'integer', 'minimum': 0, 'description': 'Calories per unit, for food.'}, 'name': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The product or item name. Required.'}, 'note': {'type': 'string', 'maxLength': 2000, 'description': 'A short free-text note on the row.'}, 'brand': {'type': 'string', 'maxLength': 120, 'description': 'The maker, when known.'}, 'folder': {'type': 'string', 'maxLength': 120, 'description': 'The folder to put it in, by name. Created when the list has no folder of that name.'}, 'variant': {'type': 'string', 'maxLength': 120, 'description': 'Size, length or configuration that changes the weight, such as Long or 20F.'}, 'weight_g': {'type': 'number', 'minimum': 0, 'description': "Weight of ONE unit, in grams. Omit when unknown; the list keeps working without it, and a row with a catalog_id takes the catalog's cited weight."}, 'worn_qty': {'type': 'integer', 'minimum': 0, 'description': 'Of qty, how many are worn rather than carried (three pairs of socks, one on your feet). For a row that is entirely worn, set classification to worn instead.'}, 'gear_type': {'type': 'string', 'maxLength': 120, 'description': 'What kind of thing it is: Tent, Quilt, Trail runners.'}, 'catalog_id': {'type': 'integer', 'maximum': 2147483647, 'minimum': 1, 'description': "A catalog row id from search_catalog. The row takes the catalog's brand, name, variant, gear type and cited weight, and follows catalog corrections; a weight_g given as well is kept as your own figure."}, 'needs_cooking': {'type': 'boolean', 'description': 'Food to cook on this trip. Each unit assumes one boil for a rough fuel estimate; no quantity or weight changes.'}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': "base, worn or consumable. Omit to follow the folder's default."}}}}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': 'What rows in this folder count as unless they say otherwise. Default base.'}}}, 'description': 'Folders in order, each with its default classification and, optionally, its rows.'}, 'end_date': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'trail_url': {'type': 'string', 'maxLength': 2000, 'description': 'An http(s) link to the route or trail page.'}, 'start_date': {'type': 'string', 'description': 'YYYY-MM-DD'}, 'trail_label': {'type': 'string', 'maxLength': 120, 'description': "What to call the trail, when the link's own name won't do."}, 'trail_distance_km': {'type': 'number', 'minimum': 0}}}
Esquema de salida
{'type': 'object', 'required': ['title', 'edit_link', 'share_link', 'share_code', 'folders', 'items', 'totals'], 'properties': {'items': {'type': 'integer', 'description': 'Rows made.'}, 'title': {'type': 'string', 'description': 'User text.'}, 'totals': {'type': 'object', 'required': ['base_g', 'worn_g', 'consumable_g', 'carried_g', 'total_g', 'item_count'], 'properties': {'kcal': {'type': 'number', 'description': 'Only when a food row carries calories.'}, 'base_g': {'type': 'integer', 'description': 'In the pack, consumables aside.'}, 'worn_g': {'type': 'integer', 'description': 'On your body.'}, 'total_g': {'type': 'integer', 'description': 'carried_g plus worn_g.'}, 'carried_g': {'type': 'integer', 'description': 'base_g plus consumable_g: what is on your back.'}, 'item_count': {'type': 'integer', 'description': 'Rows, nested ones included.'}, 'consumable_g': {'type': 'integer', 'description': 'Food, fuel, water.'}}, 'description': 'Whole grams, summed over every row of the list.'}, 'folders': {'type': 'integer', 'description': 'Folders made.'}, 'edit_link': {'type': 'string', 'description': 'The write capability. Keep it; it is the only way back into the list.'}, 'share_code': {'type': 'string'}, 'share_link': {'type': 'string', 'description': 'The read capability, safe to pass on.'}}}
Esquema de entrada
{'type': 'object', 'properties': {'id': {'type': 'integer', 'minimum': 1, 'description': 'A catalog row id; its siblings are the other variants.'}, 'name': {'type': 'string', 'description': 'The product name without brand or variant.'}, 'brand': {'type': 'string'}}}
Esquema de salida
{'type': 'object', 'required': ['brand', 'name', 'gear_type', 'category', 'variants'], 'properties': {'name': {'type': 'string', 'description': 'The product name, without brand or variant.'}, 'brand': {'type': ['string', 'null']}, 'category': {'type': ['string', 'null']}, 'variants': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'variant', 'weight_g', 'verified', 'weight_source', 'kcal', 'source_url'], 'properties': {'id': {'type': 'integer', 'description': 'The catalog row id, the one add_items and create_list take as catalog_id.'}, 'kcal': {'type': ['number', 'null'], 'description': 'Calories per unit, on food.'}, 'variant': {'type': ['string', 'null'], 'description': 'Size, length or rating; null on a product sold one way.'}, 'verified': {'type': 'boolean', 'description': 'Whether the cited weight has been verified.'}, 'weight_g': {'type': 'number', 'description': 'The cited weight in grams, to a tenth.'}, 'source_url': {'type': ['string', 'null'], 'description': 'The page the weight was read from.'}, 'weight_source': {'enum': ['manufacturer', 'measured', 'community', 'imported'], 'type': 'string', 'description': 'Where the weight comes from.'}}}, 'description': 'Every active variant, in variant order.'}, 'gear_type': {'type': ['string', 'null']}}}
Esquema de entrada
{'type': 'object', 'required': ['share_code'], 'properties': {'share_code': {'type': 'string', 'description': "The list's share code, or its share link (mahonia.app/s/CODE). Not an edit link."}}}
Esquema de salida
{'type': 'object', 'required': ['title', 'share_code', 'share_link', 'unit', 'totals', 'folders'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['day', 'distance_m', 'ascent_m'], 'properties': {'day': {'type': 'string', 'description': 'Day 1; with trip dates, the weekday too: Saturday, Day 1.'}, 'label': {'type': 'string', 'description': "The owner's name for the day. User text."}, 'ascent_m': {'type': ['number', 'null'], 'description': "Typed by the owner, or read off the route's profile."}, 'distance_m': {'type': ['number', 'null']}}}, 'description': "The trip's days in order, when the owner has planned them."}, 'unit': {'enum': ['g', 'kg', 'oz', 'lb'], 'type': 'string', 'description': 'The unit the list displays in. Weights are in grams regardless.'}, 'dates': {'type': 'object', 'required': ['start', 'end'], 'properties': {'end': {'type': ['string', 'null'], 'description': 'YYYY-MM-DD.'}, 'start': {'type': ['string', 'null'], 'description': 'YYYY-MM-DD.'}}}, 'title': {'type': 'string', 'description': 'User text.'}, 'trail': {'type': 'object', 'required': ['url', 'label', 'distance_m', 'ascent_m', 'descent_m'], 'properties': {'url': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null'], 'description': 'User text.'}, 'ascent_m': {'type': ['number', 'null']}, 'descent_m': {'type': ['number', 'null']}, 'distance_m': {'type': ['number', 'null']}}}, 'author': {'type': 'string', 'description': 'User text.'}, 'people': {'type': 'array', 'items': {'type': 'string', 'description': 'User text.'}, 'description': "The people who carry the list's rows, when it names any."}, 'totals': {'type': 'object', 'required': ['base_g', 'worn_g', 'consumable_g', 'carried_g', 'total_g', 'item_count'], 'properties': {'kcal': {'type': 'number', 'description': 'Only when a food row carries calories.'}, 'base_g': {'type': 'integer', 'description': 'In the pack, consumables aside.'}, 'worn_g': {'type': 'integer', 'description': 'On your body.'}, 'total_g': {'type': 'integer', 'description': 'carried_g plus worn_g.'}, 'carried_g': {'type': 'integer', 'description': 'base_g plus consumable_g: what is on your back.'}, 'item_count': {'type': 'integer', 'description': 'Rows, nested ones included.'}, 'consumable_g': {'type': 'integer', 'description': 'Food, fuel, water.'}}, 'description': 'Whole grams, summed over every row of the list.'}, 'folders': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'items'], 'properties': {'name': {'type': 'string', 'description': 'User text.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'display_name', 'qty', 'weight_g', 'classification'], 'properties': {'qty': {'type': 'number', 'description': 'How many; weight_g is for one.'}, 'kcal': {'type': 'number', 'description': 'Calories per unit.'}, 'name': {'type': 'string', 'description': 'The product name, without brand or variant. User text.'}, 'note': {'type': 'string', 'description': 'User text.'}, 'brand': {'type': 'string', 'description': 'User text.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'display_name', 'qty', 'weight_g', 'classification'], 'properties': {'qty': {'type': 'number', 'description': 'How many; weight_g is for one.'}, 'kcal': {'type': 'number', 'description': 'Calories per unit.'}, 'name': {'type': 'string', 'description': 'The product name, without brand or variant. User text.'}, 'note': {'type': 'string', 'description': 'User text.'}, 'brand': {'type': 'string', 'description': 'User text.'}, 'variant': {'type': 'string', 'description': 'Size, length or configuration. User text.'}, 'weight_g': {'type': 'number', 'description': 'One unit, in grams to a tenth. 0 when the row has no weight.'}, 'worn_qty': {'type': 'number', 'description': 'Of qty, how many are worn rather than carried.'}, 'gear_type': {'type': 'string', 'description': 'What kind of thing it is. User text.'}, 'carried_by': {'type': 'string', 'description': "Who carries it. A nested row without one is carried by its parent's carrier. User text."}, 'catalog_id': {'type': 'number', 'description': 'The catalog row the item was picked from.'}, 'display_name': {'type': 'string', 'description': 'Brand, name and variant joined, the way the list shows the row.'}, 'needs_cooking': {'type': 'boolean', 'description': 'Food marked for cooking on this trip.'}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': "The row's own, or its folder's when it has none."}}}, 'description': "Rows nested under this one. The parent's weight_g is its own, not the group's."}, 'variant': {'type': 'string', 'description': 'Size, length or configuration. User text.'}, 'weight_g': {'type': 'number', 'description': 'One unit, in grams to a tenth. 0 when the row has no weight.'}, 'worn_qty': {'type': 'number', 'description': 'Of qty, how many are worn rather than carried.'}, 'gear_type': {'type': 'string', 'description': 'What kind of thing it is. User text.'}, 'carried_by': {'type': 'string', 'description': "Who carries it. A nested row without one is carried by its parent's carrier. User text."}, 'catalog_id': {'type': 'number', 'description': 'The catalog row the item was picked from.'}, 'display_name': {'type': 'string', 'description': 'Brand, name and variant joined, the way the list shows the row.'}, 'needs_cooking': {'type': 'boolean', 'description': 'Food marked for cooking on this trip.'}, 'classification': {'enum': ['base', 'worn', 'consumable'], 'type': 'string', 'description': "The row's own, or its folder's when it has none."}}}}}}, 'description': "In the list's order, each with its rows in order. A folder with no rows is left out; rows in no folder come last, under Unfiled."}, 'truncated': {'type': 'object', 'properties': {'rows': {'type': 'integer'}, 'notes': {'type': 'boolean'}, 'fields': {'type': 'array', 'items': {'enum': ['description', 'days', 'trail', 'people'], 'type': 'string'}}}, 'description': "Present only when the list was too large to return whole, naming what was cut: notes (true: every row's note), rows (how many came off the end, nested rows counted), fields (which of description, days, trail and people went, only when the rest alone was too large). The totals still count every row. get_list_markdown holds about three times as many rows, without notes, and is cut the same way only past that."}, 'share_code': {'type': 'string', 'description': "The list's share code, the read capability."}, 'share_link': {'type': 'string', 'description': "The list's share link."}, 'description': {'type': 'string', 'description': "The list's own notes. User text."}}}
Esquema de entrada
{'type': 'object', 'required': ['share_code'], 'properties': {'share_code': {'type': 'string', 'description': "The list's share code, or its share link (mahonia.app/s/CODE). Not an edit link."}}}
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 25, 'minimum': 1, 'description': 'Up to 25. Default 12.'}, 'query': {'type': 'string', 'description': 'Two characters or more.'}}}
Esquema de salida
{'type': 'object', 'required': ['query', 'results'], 'properties': {'query': {'type': 'string', 'description': 'The query as searched: trimmed, at most 100 characters.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'variant', 'weight_g', 'verified', 'weight_source', 'kcal', 'brand', 'name', 'display_name', 'gear_type', 'category'], 'properties': {'id': {'type': 'integer', 'description': 'The catalog row id, the one add_items and create_list take as catalog_id.'}, 'kcal': {'type': ['number', 'null'], 'description': 'Calories per unit, on food.'}, 'name': {'type': 'string', 'description': 'The product name, without brand or variant.'}, 'brand': {'type': ['string', 'null']}, 'variant': {'type': ['string', 'null'], 'description': 'Size, length or rating; null on a product sold one way.'}, 'category': {'type': ['string', 'null'], 'description': "The catalog's category: shelter, sleep, pack, and so on."}, 'verified': {'type': 'boolean', 'description': 'Whether the cited weight has been verified.'}, 'weight_g': {'type': 'number', 'description': 'The cited weight in grams, to a tenth.'}, 'gear_type': {'type': ['string', 'null'], 'description': 'What kind of thing it is: Tent, Quilt, Trail runners.'}, 'display_name': {'type': 'string', 'description': 'Brand, name and variant joined.'}, 'weight_source': {'enum': ['manufacturer', 'measured', 'community', 'imported'], 'type': 'string', 'description': 'Where the weight comes from.'}}}, 'description': 'Best first.'}}}
Esquema de entrada
{'type': 'object', 'required': ['edit_link'], 'properties': {'unit': {'enum': ['g', 'kg', 'oz', 'lb'], 'type': 'string', 'description': 'The unit the list displays in. Weights are in grams regardless.'}, 'title': {'type': 'string', 'maxLength': 200}, 'end_date': {'type': 'string', 'description': 'YYYY-MM-DD, or an empty string to clear.'}, 'edit_link': {'type': 'string', 'description': "The list's edit link, whole (mahonia.app/e/CODE#token). The part after # is the write capability."}, 'trail_url': {'type': 'string', 'maxLength': 2000, 'description': 'An http(s) link, or an empty string to clear the trail and everything that came with it (label, distance, climb, route).'}, 'start_date': {'type': 'string', 'description': 'YYYY-MM-DD, or an empty string to clear.'}, 'trail_label': {'type': 'string', 'maxLength': 120}, 'trail_distance_km': {'type': 'number', 'minimum': 0, 'description': "Stored in metres and shown in the list's own distance unit."}}}
Esquema de salida
{'type': 'object', 'required': ['title', 'unit', 'dates', 'trail', 'share_link'], 'properties': {'unit': {'enum': ['g', 'kg', 'oz', 'lb'], 'type': 'string', 'description': 'The unit the list displays in. Weights are in grams regardless.'}, 'dates': {'type': ['object', 'null'], 'required': ['start', 'end'], 'properties': {'end': {'type': ['string', 'null'], 'description': 'YYYY-MM-DD.'}, 'start': {'type': ['string', 'null'], 'description': 'YYYY-MM-DD.'}}}, 'title': {'type': 'string', 'description': 'User text.'}, 'trail': {'type': ['object', 'null'], 'required': ['url', 'label', 'distance_m', 'ascent_m', 'descent_m'], 'properties': {'url': {'type': ['string', 'null']}, 'label': {'type': ['string', 'null'], 'description': 'User text.'}, 'ascent_m': {'type': ['number', 'null']}, 'descent_m': {'type': ['number', 'null']}, 'distance_m': {'type': ['number', 'null']}}}, 'share_link': {'type': 'string'}}}
Cambios recientes en herramientas
Servidores MCP similares
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
Calcgrid
Runs general-purpose calculators for loans, dates, lunar and solar terms, time zones, units, and a larger catalog of specialized …
Local MCP
Connects AI assistants to Mac email, calendars, reminders, notes, tasks, files, Microsoft 365, Todoist, spreadsheets, and daily b…
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
hopi
Provides read-only calculators, converters, validators, text utilities, encoders, and generators for everyday and technical tasks.
mu
Supports personal and collaborative tasks including web browsing, app creation, blogs, bookmarks, discussions, and contact manage…
John's Essentials
Analyzes and converts documents, images, audio, video, archives, data files, and other media formats, with PDF chat and file insp…
Dayze — Life Context
Provides authenticated personal life-context data and tools for contacts, memories, events, expenses, trips, assets, places, and …