Wardrobe Capsule
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Wardrobe Capsulesuggest an outfit for cool rainy errands"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wardrobe-capsule-mcp-server
A calmer closet, one small tool at a time. A local MCP server that gives an AI assistant a grounded, honest view of the clothes you actually own - no shopping feeds, no trend pressure, no "philosophy of style" essay. You log what you have; the server does the boring math.
Built by Asdale Dynamics, LLC - low-energy friendly, ADHD-aware, and strictly local-first: your closet lives in one JSON file on your machine, and nothing ever leaves it.
What it does
Log clothes you own with name, category, color, seasons, style tags, notes, and a 1-5 wearability score (5 = zero effort).
Get outfit suggestions for weather (temperature or words like "cool and rainy") and occasion (errands, casual, work, cozy, active, fancy). Simple, predictable scoring rules - no mystery.
Track what keeps unworn. An "Unworn watch" quietly lists anything not worn in the last 90 days (or never worn at all).
Packing lists for trips built from your real items, with rotation across days and honest gap warnings ("3 days usually wants 2 tops; you have 1 logged - expect to re-wear").
Donate-bag triage by last-worn date. Sorts the closet into a donate bag, keepers, and "your call". Nothing is moved until you actively run
mark_donated.
Three deliberate design choices:
Low-energy friendly. Every flow works in one-line entries, every failure message says what to do next, and nothing nags.
localStorage-style JSON store. One indented, human-readable
wardrobe.jsonthat you can open in any editor.Distinct from other tools. This is not a fashion tracker (no brands, sizes, or shopping) and not a craft/WIP tracker (no projects) and has nothing to say about health - just clothes and calm.
Related MCP server: ai-journal
Requirements
Python 3.10+
The
mcppackage (works with SDK 1.x and 2.x)
Install
pip install -e .Run
# as an installed command
wardrobe-capsule-server
# or as a module
python -m wardrobe_capsule.serverThe server speaks MCP over stdio. Point your MCP client at it:
{
"mcpServers": {
"wardrobe-capsule": {
"command": "wardrobe-capsule-server"
}
}
}Set WARDROBE_CAPSULE_PATH to choose the wardrobe file location
(default: data/wardrobe.json next to the package).
Tools
Tool | What it does |
| Log one piece: name, category, color, seasons, styles, wearability 1-5, optional notes and last-worn date. |
| Show the closet, optionally filtered by category. |
| Count an item as worn today (or a given date); keeps rotation honest. |
| Pick an outfit for a temperature (or weather words) and occasion. |
| What hasn't been worn in N days (default 90), plus your most-worn item. |
| Sort into donate bag / keep / your call by last-worn date (default 180 days). |
| Move one item out of the closet into the donate bag (recorded in the file). |
| Multi-day trip list from your real items, with per-day occasions and gap warnings. |
There is also a get_dressed_today prompt: a gentle, low-energy
walkthrough that asks about energy and weather before suggesting one
easy outfit.
How suggestions work (the boring math)
Weather picks a season: 24°C+ is summer, under 12°C is winter, in between is spring/fall.
Each item scores: +3 for season match ("all-season" always matches), +2 for matching the occasion's style, +0..+5 for wearability, and +1 if it hasn't been worn in 14+ days (a gentle rotation nudge). High score wins; ties break by id so results are repeatable.
Fancy occasions prefer a dress when you've logged one; cold snaps add outerwear; work and fancy get an accessory if you own one.
The donate rules are equally plain: worn within 180 days -> keep; not worn in 180+ days -> donate bag; never worn but new (under 90 days) -> keep; never worn 90+ days -> "your call"; never worn 180+ days -> donate bag. You make every final call.
Privacy
Everything is stored in one JSON file on your machine. No accounts, no cloud, no analytics.
data/wardrobe.jsonis git-ignored by default so your closet never ends up in source control.Questions never ask for anything sensitive - colors and seasons are plenty.
Testing
pip install pytest
pytestThe suite covers the suggestion rules (season mapping, scoring, outfit assembly), donate triage rules, the JSON store, packing rotation and gap warnings, every MCP tool end-to-end, and a stdio smoke test that boots the real server and talks MCP to it.
Project layout
src/wardrobe_capsule/
store.py # JSON wardrobe store (the "localStorage")
outfits.py # season mapping + scoring + outfit assembly
triage.py # unworn watch + donate-bag sorting
packing.py # trip packing lists from your real items
server.py # MCP tools over stdio
tests/Status
Early and calm. See STATUS.md for what works, how it was verified,
and known gaps.
Credits and license
Built and maintained by Asdale Dynamics, LLC as part of its
beginner-friendly, local-first AI tooling. Released under the
MIT License - Copyright (c) 2026 Asdale Dynamics, LLC.
More from the LLC: dylanasdale.github.io
AI explained like a friend would: plain English, step by step, never condescending.
Available Tools
8 toolsadd_itemB
Log one piece of clothing you own.
category: tops, bottoms, dresses, outerwear, shoes or accessories. seasons: e.g. "all", "summer", "summer, spring". styles: casual, work, dressy, cozy, active or home. wearability: 1-5, how easy it is to throw on (5 = zero effort). last_worn: optional YYYY-MM-DD if you happened to note it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| color | No | ||
| notes | No | ||
| styles | No | casual | |
| seasons | No | all | |
| category | Yes | ||
| last_worn | No | ||
| wearability | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Log' implies a create/write action, but the description does not disclose persistence behavior, duplicate handling, permissions, or other side effects; it mainly provides field-value guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in one sentence, followed by a compact field guide. Every line adds useful value and there is no wasted prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter write tool with no annotations, the description does a good job explaining ambiguous parameters and the output schema covers return values. It remains incomplete on mutation behavior and sibling selection guidance, which an agent would need to invoke it confidently in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for the ambiguous fields: category values, seasons formats, styles values, wearability scale meaning, and last_worn date format. It does not explain name, color, or notes, but those are largely self-evident.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: logging one owned clothing item. It is clear enough to distinguish from siblings like record_wear or list_items, though it does not explicitly name those adjacent tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied as adding a clothing item to the inventory, and the field guidance helps with filling the item out. However, it does not say when to use this versus record_wear, list_items, or other siblings, nor does it state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
donate_triageB
Sort the closet into a donate bag and keepers by last-worn date.
Nothing is moved - read the list first, act only when you're ready.
| Name | Required | Description | Default |
|---|---|---|---|
| min_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does add the crucial disclosure that nothing is moved — important because "sort into a donate bag" reads as a mutation. It stops short of stating permissions, whether the result is persisted, or that the output is a proposal rather than an applied change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and followed by the safety caveat. "Act only when you're ready" is mildly redundant filler, but there is no bloat overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values need not be described, and the non-destructive nature is covered. Yet for a triage tool with one undocumented threshold parameter, the description leaves unclear how the cutoff is applied and how the agent should proceed to actually donate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter min_days is never named or explained. "By last-worn date" hints that a wear-date threshold is involved but gives no units, no mention of the 180-day default, and no indication of what happens at the boundary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it sorts the closet into donate-bag versus keeper buckets keyed on last-worn date, which is distinct from list_items, unworn_report, and mark_donated. However, it never names or contrasts those siblings, so an agent must infer the division of labor from names alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Read the list first, act only when you're ready" implies a preview-then-commit workflow, which is real usage guidance. But it never says which tool performs the commit step (mark_donated) or when unworn_report would be the better choice, so the guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_itemsB
Show what's in the closet (optionally one category).
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral-disclosure burden. 'Show' implies a read-only operation, which is useful, but the description does not explicitly confirm non-destructiveness or mention any operational limits such as pagination or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It communicates the main action and the optional filter immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return details need not be in the description. But with no annotations and no category-value guidance, the definition is only minimally complete for an agent trying to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 0% schema description coverage, so the description must compensate. It says the category is optional, but it does not explain accepted category values or filtering behavior beyond restating the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Show what's in the closet' with an optional category filter. It clearly distinguishes the operation from siblings like add_item, record_wear, and donation tools, though it does not explicitly name any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool — when the user wants to view closet contents, optionally filtered by one category. It does not state when to use alternatives such as packing_list or unworn_report, leaving usage boundaries mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mark_donatedC
Move one item out of the closet into the donate bag.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| donated_to | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the key behavioral effect — the item leaves the closet and enters the donate bag — implying a state mutation and removal from active inventory, but it says nothing about reversibility, whether the item's history is retained, or whether donated_to affects records.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It is efficient, though its brevity contributes to the gaps in parameter and usage coverage rather than being purely a virtue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, but the tool has two undocumented parameters, no annotations, and no usage context. For a mutation that removes an item from the closet, the description does not give an agent enough to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two parameters, and the description only hints at 'one item' for the required item field. The optional donated_to parameter is never mentioned in either the schema or the description, so the agent has no idea what it does or what format it expects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (move) and resource (one item out of the closet into the donate bag), which clearly conveys a donation-marking mutation. It does not differentiate itself from the sibling donate_triage, so an agent could confuse the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus donate_triage or list_items, nor any prerequisite or exclusion. The agent must infer the workflow entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
packing_listC
A trip packing list from your real items.
days is trip length (>=1), temp_c the average temperature (or weather_words like 'cool and rainy'), occasions a comma list per day (default casual, e.g. 'casual, work, fancy').
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | ||
| temp_c | No | ||
| occasions | No | ||
| weather_words | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not state whether the tool only reads wardrobe data, whether it writes or stores the generated list, what permissions are required, or whether the packing list can be regenerated safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the purpose before explaining parameters. The parameter sentence is dense but efficient; the only minor weakness is slightly awkward grammar and line breaks.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description need not explain return values. However, with no annotations and several sibling tools, it is missing enough routing guidance and behavioral context to be fully complete for an agent deciding when and how to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so well: days is defined as trip length with a >=1 constraint, temp_c as average temperature, weather_words with an example, and occasions as a comma-separated per-day list with a default. It adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the artifact as a trip packing list built from the user's real items, which is more specific than the tool name alone. However, it does not use a clear verb such as generate/create and does not explicitly distinguish the tool from the sibling suggest_outfit, leaving the agent to infer the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a trip-planning context but gives no explicit guidance on when to use this tool versus suggest_outfit or other wardrobe siblings. It also provides no conditions, prerequisites, or exclusions to route the agent correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_wearA
Mark an item as worn today (or a YYYY-MM-DD date).
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| item | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the default behavior (defaults to today when no date is given) and the accepted date format, which the schema does not. It does not say what happens if the item string doesn't match a known item, whether repeated marks are idempotent, or that this is a write operation — meaningful gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core action first and the date nuance in a parenthetical. Nothing is wasted, though the extreme brevity leaves several behaviors unstated rather than merely being efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and only two simple parameters are involved. Still, for an unannotated write tool the description should mention failure behavior for unknown items and whether a call records a new wear entry each time; those omissions leave it only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it largely does: it explains that 'item' is the thing being marked worn and that 'date' accepts a YYYY-MM-DD value or defaults to today. That resolves the ambiguous bare-string and null-default schema for both parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: "Mark an item as worn." That is unambiguous and implicitly distinguishes it from siblings like mark_donated or unworn_report, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to call it (recording that an item was worn), and the parenthetical clarifies the two supported date modes. However, there is no explicit when-not guidance, no mention of alternatives such as suggest_outfit or unworn_report, and no note on whether repeat calls are expected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_outfitB
Suggest one outfit for today's weather and occasion.
Give a temperature in Celsius, or words like 'cool and rainy', or both. Occasions: errands, casual, work, cozy, active, fancy.
| Name | Required | Description | Default |
|---|---|---|---|
| temp_c | No | ||
| occasion | No | casual | |
| weather_words | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure and falls short. It doesn't say whether the suggestion draws from the user's actual wardrobe (which would make list_items or unworn_report relevant), whether the call is read-only, whether it's deterministic, or whether repeated calls give varied results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short lines, zero filler, with the core action front-loaded and the input hints following. Nothing in it could be removed without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values needn't be explained, and the input story is mostly covered. But for a tool with no annotations sitting alongside inventory-mutating siblings, the description should clarify that it recommends rather than records or reserves anything — an agent can't rule out side effects from the text alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate — and it does the most important work: it maps temp_c to Celsius, explains that weather_words accepts phrases like 'cool and rainy', and allows either or both. It also effectively supplies the missing enum for occasion. It doesn't mention that all three parameters are optional or that occasion defaults to 'casual', which the schema carries silently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Suggest one outfit") scoped to today's weather and occasion, so its function is immediately clear. It does not name the closest sibling (packing_list) or otherwise differentiate itself from the other wardrobe tools, so a 4 rather than a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives operational guidance on how to supply weather input (Celsius, descriptive words, or both) and enumerates valid occasions, which is genuinely useful. However, it never says when to reach for this tool versus packing_list or the item-inspection tools, and it doesn't state what happens when no arguments are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unworn_reportB
What hasn't been worn lately (default: last 90 days).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It confirms the default lookback of 90 days but says nothing about what objects are counted (items? categories?), how results are ordered, or whether the threshold is inclusive/exclusive — meaningful gaps for a report whose whole semantics hinge on the window.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with the core concept front-loaded and the default immediately following. Nothing superfluous.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be described, and the tool is a simple single-parameter read. Still, with zero annotations the description should say more about scope (which items are eligible) and result behavior to be fully self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain 'days'. It does implicitly frame it as a lookback window via 'last 90 days (default)', but never defines the unit boundary (calendar days vs. days since last wear) or valid ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific outcome — a report of items not worn within a time window — which is clearly distinct from siblings like record_wear and packing_list. It lacks an explicit verb (e.g. 'list/return'), but the resource and scope are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this versus alternatives such as list_items or donate_triage, nor any prerequisites. The use case is only implied by the phrase 'what hasn't been worn lately'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
add_item - First observed
donate_triage - First observed
list_items - First observed
mark_donated - First observed
packing_list - First observed
record_wear - First observed
suggest_outfit - First observed
unworn_report
TDQS
Scored across 8 tools
Most tools target a distinct resource+action (add_item, list_items, record_wear, mark_donated are unambiguous). The main overlap is packing_list vs suggest_outfit, which both consume weather + occasion inputs, though the multi-day trip list vs single-outfit framing keeps them separable. unworn_report vs donate_triage is close but descriptions distinguish reporting from triage sorting.
All names are snake_case, but conventions are mixed: add_item/list_items/record_wear/suggest_outfit/mark_donated use verb_noun while packing_list/unworn_report/donate_triage are noun phrases. Readable overall, but the pattern is not predictable enough to guess an unseen tool's name.
Eight tools is well within the ideal 3-15 range for a personal wardrobe assistant. Each tool maps to a distinct user intent: capture, view, wear tracking, suggestion, packing, and decluttering. No filler tools.
The surface covers adding, listing, wear tracking, outfit suggestion, and donation lifecycle, but lacks any update/edit operation — you cannot correct an item's category, seasons, style, or wearability after logging. There is also no get-item detail view or way to undo mark_donated, creating dead ends.
Maintenance
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Cloud-hosted MCP server for durable AI memory
Governed personal world model and memory for your AI agent. Pair once, connect over MCP.
Self-hosted AI workspace: semantic RAG document search, long-term memory, and AI chat via MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLocal-first MCP server for safely searching, reading, summarizing, tagging, deduplicating, and organizing local files with scoped access, read-only defaults, and dry-run plans.19MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server for journaling, organizing, and recalling your work. It captures entries as plain markdown files, indexes them for full-text and structured search, and enables querying via natural language.1MIT
- AlicenseNot gradedqualityDmaintenanceA private, local-first MCP server that gives any AI long-term memory — its own diary. Zero models, zero network, zero subscription; smarter search than Notion, running entirely on your machine.MIT
- FlicenseAqualityCmaintenanceA local-first MCP server that handles daily work tasks through your AI assistant: converts meeting notes into todos, manages todo lifecycle, tracks work hours, generates daily/weekly reports, organizes files via move-only operations, and diagnoses dev environments, all guarded by a human-maintained preview/apply safety model.25-