Mahonia
Server Details
Read and edit Mahonia backpacking gear lists via share and edit links; no account needed.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ryankiley/mahonia
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 6 tools
Each tool targets a distinct resource+action: create/edit/get for lists, edit/get for the account's gear, and search for the catalog. The list tools split cleanly by verb (create vs. read vs. mutate), and the gear tools are read vs. write only, so an agent can select without guessing.
All six names follow a strict snake_case verb_noun pattern (create_list, edit_list, get_list, edit_my_gear, get_my_gear, search_catalog). The only quirk is that gear has no create_/delete_ counterpart, but that reflects the tool surface rather than inconsistent naming.
Six tools is well within the 3–15 sweet spot and each covers a real slice of the domain (lists, own gear, catalog). Heavy multi-operation behavior is consolidated into edit_list and edit_my_gear instead of exploding into many narrow tools, which keeps the set compact.
Read/write lifecycle is covered for gear (add, update, remove, restore) and for list contents and metadata, plus catalog search for linking. The notable gap is that a list itself can never be deleted—edit_list can strip folders and rows but not the list—and there is no account/identity tool beyond implicit sign-in.
Available Tools
6 toolscreate_listMake a new listAInspect
Creates a list and returns its edit link and share link. Optionally with a title, unit, trip dates, a trail link and rows, grouped into folders; a row with items nested under it is a group (stakes under a tent, snacks under a day). Keep the edit link: it is the only way to change a list that isn't filed under an account. With read-and-change access to an account the list is filed under it too, and saved_to_account says whether it was; otherwise the list belongs to whoever holds the edit link, as every list does.
Inputs: unit, items, title, folders, +5 more. Returns: items, title, totals, folders, +5 more
edit_listChange a listADestructiveInspect
Changes a list that already exists, all of it in one call. list sets the list's own title, display unit, trip dates and trail (only the fields given; an empty string clears a date or the trail). folders renames, reorders, reclassifies or removes folders, named by id or current name; removing one removes its rows. add puts new rows on, into a folder by name (made when missing) or under a group by the parent row's id. update changes rows by the ids get_list gives: any field, null clearing one that can be cleared; a new folder, place or group; a catalog_id to link or relink the row where it sits, null to unlink. remove takes rows off by id, a group's nested rows with it. The parts apply in that order as one change, and nothing is applied unless every part is valid: a row or folder named that isn't there fails the whole call. A name or weight changed on a catalog-linked row is kept as the owner's own. Takes the list's edit link, or its share code under a signed-in account that has filed it.
Inputs: add, list, again, remove, +4 more. Returns: unit, added, dates, title, +9 more
edit_my_gearChange My GearADestructiveInspect
Changes the connector's account's My Gear, in one call. add puts new pieces in; one the account already holds (same brand, name and variant) comes back as already_have and is left as it was. update changes pieces by the ids get_my_gear gives, only the fields sent, null clearing one. A piece that names a catalog_id, as it is added or later, is linked to that catalog row and takes its brand, name, variant, gear type and weight where none were given; null unlinks it. remove puts pieces away by id: they stop being offered on lists, and the lists that still carry them will not bring them back. restore brings put-away pieces back. kit, on a piece added or updated, makes it a kit of other pieces by id (replacing what it held), and null on update turns a kit back into a single piece; a kit's weight is its items', so a kit takes own_weight_g, never weight_g. Each piece answers for itself, in the order sent, with a reason when it wasn't done as sent. What is added or changed here counts as the owner's own word on the piece, so a list saved later cannot overwrite it. Needs read-and-change access.
Inputs: add, remove, update, restore. Returns: added, removed, results, updated
get_listRead a listARead-onlyIdempotentInspect
A shared list by its share code or link, as data or as Markdown; or, with no share_code, the lists filed under the connector's account. Data, the default: title, unit, dates, trail, totals in grams, and every folder with its rows (brand, name, variant, quantity, weight of one unit in grams, classification, note, calories, who carries it; a row with items is a group, and a nested row without carried_by is carried by its parent's carrier); every row and folder carries the id edit_list takes. Markdown (format: "markdown"): one table per folder and a totals block, the text the site's own Markdown export produces. An edit link's address carries the share code too. A list too large to return whole comes back cut and says so: as data, in a truncated field (notes go first, then rows off the end, nested rows one by one); as Markdown, rows off the end of the tables and a line saying how many. The totals still count every row. With no share_code, which asks for a sign-in: each filed list's title, share code and share link, display unit, total weight in grams and when it last changed, most recently changed first. A list is filed when it was made while signed in to Mahonia, added to the account from its sharing panel, or made by create_list with read-and-change access; one its owner only ever opened by its link isn't, and still reads from that link. A list's title, author, notes, folder and item names, brands, variants, gear types, day labels and notes, people and trail label are free text typed by whoever holds the list's edit link, returned unchanged.
Inputs: format, share_code. Returns: object
get_my_gearRead My GearARead-onlyIdempotentInspect
The gear the connector's account owns, most recently used first: for each piece its brand, name, variant, gear type, the kind the gear page files it under, grams for one, classification, calories, price and product link. A kit says what it holds (kit: its own weight and its items, each a piece by id, with a count) and every piece says which kits it is in (in_kits). A query ranks by a search instead. Needs the person signed in to Mahonia from this connector, or an access token from their account page. Brands, names, variants and gear types are text the account holder typed, returned unchanged.
Inputs: limit, query, offset. Returns: gear, total, offset
search_catalogSearch the gear catalogARead-onlyIdempotentInspect
Mahonia's cited gear catalog. With query: a fuzzy search by brand, product or kind of gear ("duplex", "zpacks", "quilt"), best first, each result a catalog row with its id, the cited weight in grams and whether it is verified. With product_id (a row id from a search), or brand and name: every variant of that one product (sizes, lengths, temperature ratings) with the weight and source of each. A row on a list that names a catalog_id takes the catalog's brand, variant, gear type and weight.
Inputs: name, brand, limit, query, +1 more. Returns: query, product, results
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Shared lists with no sign-up: ready-made lists and recipes, and pre-filled links to share.
Campground search, live availability, weather, safety, and gear for 10,000+ US campgrounds.
US outdoor recreation: 37k+ trails, 30k+ campgrounds, parks, weather + wildfire safety. Read-only.
Publish HTML or Markdown to a stable link; pull readers' edits and comments back to revise.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to create password-protected, link-shareable lists and then read, edit, and restyle them — managing typed columns, rows, and per-list CSS, and looking up product pages to fill in prices, photos, and names. It exposes eighteen tools over Streamable HTTP with per-agent bearer tokens, so agents can build and maintain a shared list end to end.MIT
- AlicenseCqualityDmaintenanceAn MCP server that lets AI agents create and manage LighterPack packing lists — add gear, track weights, organize categories, and share lists, all through natural conversation.353MIT
- AlicenseNot gradedqualityAmaintenanceGives AI agents a shared, versioned workspace they can create, read, update, list, restore and hand off as a single link, with content encrypted client-side before upload and destroyed 24 hours after the last edit. Conditional writes prevent concurrent agents from silently overwriting each other, and view-only links let recipients read without ever holding the write capability.19 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to create, read, list, update, restore, and share client-side-encrypted workspaces that any other agent or person holding one link can read and write. Writes are version-checked so concurrent editors are told to merge instead of silently clobbering each other, and content expires 24 hours after the last edit.19 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.