StashDog MCP Server
The StashDog MCP Server provides a natural language interface for managing your StashDog inventory through an AI assistant.
Authentication: Log in with email and password credentials.
Inventory Management: Add, update, search, delete, and organize items using plain English, with support for tags, notes, custom fields, and containers.
Collection Management: Create, update, and delete collections, and manage items within them.
URL Import: Import items directly from product pages or image URLs.
Tag Management: Create, search, rename, and delete tags.
Smart Search: Perform intelligent natural language searches across your inventory with complex queries, multiple criteria, and pagination.
Inventory Statistics: Retrieve item, collection, and tag counts.
User Management: Fetch user details and retrieve notifications with filtering (read/unread) and pagination.
Group Management: Fetch groups associated with your account.
Subscription Management: Fetch pricing details and manage subscriptions by country and currency.
Provides tools for managing a StashDog inventory instance hosted on Supabase, enabling natural language operations for items, collections, tags, and user data.
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., "@StashDog MCP ServerAdd my new MacBook Pro with tags electronics, work, and expensive"
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.
StashDog MCP Server
A Model Context Protocol (MCP) server that provides natural language tools for managing your StashDog inventory. This server enables AI assistants to interact with your StashDog inventory through intuitive natural language commands.
š Features
Natural Language Interface: Use plain English to manage your inventory
Comprehensive Item Management: Add, update, search, delete, and organize items
Collection Management: Create and manage collections with ease
Smart Search: Intelligent search across your inventory with complex queries
Tag Management: Create, rename, and organize tags
URL Import: Import items directly from URLs
Authentication: Secure authentication with your StashDog account
Rich Formatting: Beautiful, formatted responses with emojis and structured data
Related MCP server: lista-compras-mcp
š ļø Installation
Clone or download this MCP server to your local machine:
git clone <repository-url> cd stashdog-mcp-serverInstall dependencies:
npm installBuild the server:
npm run buildConfigure environment variables:
cp .env.example .env # Edit .env with your StashDog API configuration
āļø Configuration
Environment Variables
Create a .env file in the root directory:
# StashDog Supabase Configuration
STASHDOG_SUPABASE_URL=http://localhost:54321
STASHDOG_SUPABASE_ANON_KEY=your_anon_key_here
STASHDOG_AUTH_TOKEN=your_auth_token_here
# Optional: Pre-configured credentials
STASHDOG_EMAIL=your_email@example.com
STASHDOG_PASSWORD=your_passwordThis server only uses user access tokens for requests. Do not provide a service role key.
MCP Client Configuration
Add this server to your .cursor/mcp.json or similar MCP client configuration:
{
"mcpServers": {
"stashdog": {
"command": "node",
"args": ["/path/to/stashdog-mcp-server/dist/index.js"],
"env": {
"STASHDOG_SUPABASE_URL": "http://localhost:54321",
"STASHDOG_SUPABASE_ANON_KEY": "your_anon_key_here",
"STASHDOG_AUTH_TOKEN": "your_token_here"
}
}
}
}š§ Available Tools
1. authenticate
Authenticate with your StashDog account.
Example:
authenticate with email: user@example.com and password: mypassword2. manage_inventory_items
Add, update, search, delete, or manage inventory items using natural language.
Examples:
"Add a new MacBook Pro with tags electronics, work, expensive""Search for items tagged with kitchen""Update item abc123 to add note about warranty expiring soon""Delete item xyz789""Find all storage containers""Add item called 'Wireless Mouse' with notes 'Logitech MX Master 3' and tags office, electronics"
3. manage_collections
Create, update, delete collections or manage items within collections.
Examples:
"Create a new collection called 'Kitchen Appliances'""Add items abc123, def456 to collection xyz789""Delete collection old-stuff""Update collection xyz789 to change name to 'Home Office'"
4. import_from_url
Import items from URLs (product pages, images, etc.).
Example:
import_from_url: https://example.com/product/laptop5. manage_tags
Create, search, rename, or delete tags.
Examples:
"Create tag electronics""Search for tags containing kitchen""Rename tag old-name to new-name""Delete tag unused-tag"
6. get_inventory_stats
Get statistics about your inventory.
Example:
get_inventory_stats7. smart_search
Perform intelligent searches with natural language queries.
Examples:
"Show me all electronics in the office""Find kitchen items that are favorited""List storage containers with more than 5 items"
8. manage_users
Fetch user details.
Example:
manage_users with userId: abc1239. manage_notifications
Fetch user notifications.
Examples:
"Fetch all unread notifications""Get notifications with a limit of 10"
10. manage_groups
Fetch user groups.
Example:
manage_groups11. manage_subscriptions
Manage subscriptions including fetching details and creating subscriptions.
Examples:
"Get subscription details for US in USD""Create a subscription with tier PREMIUM"
š Usage Examples
Adding Items
Add a new item called "Gaming Keyboard" with notes "Mechanical switches, RGB lighting" and tags gaming, electronics, desk-setupSearching Items
Find all items tagged with electronics that are in storage containersManaging Collections
Create a new collection called "Home Office Setup" with description "Everything needed for working from home"Complex Operations
Search for items with tags kitchen, appliances limit 10šÆ Natural Language Parsing
The server includes sophisticated natural language parsing that understands:
Actions: add, create, update, modify, delete, remove, search, find, favorite, etc.
Tags: Supports
#hashtagformat and comma-separated listsItem IDs: Automatically detects UUIDs in various formats
Custom Fields: Parses
field_name: valuepatternsStorage Indicators: Recognizes storage/container keywords
Quotes: Handles quoted names and descriptions
Limits and Offsets: Understands pagination keywords
š Authentication
The server supports multiple authentication methods:
Environment Token: Set
STASHDOG_AUTH_TOKENin your environmentRuntime Authentication: Use the
authenticatetool to log inAuto-login: Configure
STASHDOG_EMAILandSTASHDOG_PASSWORDfor automatic authentication
š Response Format
All responses follow a consistent format:
{
"success": true,
"message": "ā
Successfully added item 'Gaming Keyboard' with ID: abc123",
"data": {
"id": "abc123",
"name": "Gaming Keyboard",
"tags": ["gaming", "electronics", "desk-setup"]
}
}š Error Handling
The server provides detailed error messages for common scenarios:
Missing required parameters
Authentication failures
Network connectivity issues
Supabase REST errors
Validation errors
š Project Structure
stashdog-mcp-server/
āāā src/
ā āāā index.ts # Main MCP server
ā āāā client.ts # Supabase REST client wrapper
ā āāā types.ts # TypeScript types
ā āāā nlp-utils.ts # Natural language processing
ā āāā graphql/
ā āāā operations.ts # Legacy GraphQL queries (unused)
āāā dist/ # Compiled JavaScript
āāā package.json
āāā tsconfig.json
āāā .env.example
āāā README.mdš Development
Running in Development Mode
npm run devBuilding
npm run buildTesting
npm testš¤ Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
š License
MIT License - see LICENSE file for details.
š Support
If you encounter any issues:
Check that your StashDog API is running and accessible
Verify your authentication credentials
Check the server logs for detailed error messages
Ensure all dependencies are properly installed
š Examples in Action
Complete Workflow Example
# Authenticate
authenticate with email: user@example.com and password: mypassword
# Add some items
Add a new MacBook Pro with tags electronics, work, laptop and notes "16-inch, M2 chip, 32GB RAM"
# Create a collection
Create a new collection called "Work Equipment" with description "All items for remote work"
# Search for items
Find all items tagged with electronics
# Get stats
get_inventory_stats
# Import from URL
import_from_url: https://example.com/product/wireless-mouse
# Smart search
Show me all work-related items that are favoritedThis MCP server makes managing your StashDog inventory as easy as having a conversation with an AI assistant!
Available Tools
11 toolsauthenticateC
Authenticate with StashDog using email and password.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address | ||
| password | Yes | Password |
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 of behavioral disclosure. It states the tool authenticates but doesn't describe what happens upon success (e.g., returns a token, sets a session), failure behavior, rate limits, security implications, or persistence of authentication. For a critical security tool with zero annotation coverage, this is a significant gap in transparency.
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, efficient sentence that directly states the tool's purpose and parameters without any fluff. It's appropriately sized and front-loaded, with every word earning its place, making it easy to parse quickly.
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?
Given the tool's complexity (authentication with security implications), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error handling, or behavioral traits needed for safe and effective use. The description should do more to compensate for these gaps, especially for a tool that likely enables other operations.
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 100%, with both parameters ('email' and 'password') well-documented in the schema. The description adds minimal value beyond the schema by mentioning these parameters generically, but doesn't provide additional context like format requirements or security notes. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the action ('Authenticate') and target ('with StashDog'), specifying the authentication method ('using email and password'). It distinguishes this as an authentication tool, which is different from all sibling tools that manage data or perform searches. However, it doesn't explicitly contrast with potential alternative authentication methods (e.g., OAuth), keeping it from a perfect score.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing authentication before other operations), exclusions, or how it relates to sibling tools like 'manage_users'. Usage is implied only by the tool's name, with no explicit context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_inventory_statsB
Get statistics about your inventory including item count, collection count, and tag count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 of behavioral disclosure. It states what data is returned but doesn't describe how the statistics are computed (e.g., real-time vs. cached), any rate limits, error conditions, or authentication requirements. For a read-only tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.
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, efficient sentence that front-loads the core purpose ('Get statistics about your inventory') and lists the specific counts returned. There is no wasted wording, repetition, or unnecessary detail, making it highly concise and well-structured for quick understanding.
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?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It explains what statistics are returned but lacks details on output format, error handling, or dependencies. For a basic read operation, it meets the minimum viable threshold but doesn't provide a complete picture for reliable agent use.
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 tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds value by implicitly confirming no parameters are needed, as it doesn't mention any filtering or options. This aligns with the schema, earning a baseline 4 for zero-parameter tools where the description doesn't contradict.
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 clearly states the tool's purpose with a specific verb ('Get') and resource ('statistics about your inventory'), listing the specific metrics returned (item count, collection count, tag count). It distinguishes itself from sibling tools like 'manage_inventory_items' or 'smart_search' by focusing on aggregated statistics rather than item-level operations. However, it doesn't explicitly contrast with all siblings, keeping it at 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?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like whether authentication is required), when it's appropriate versus using other inventory-related tools, or any constraints on usage. With siblings like 'manage_inventory_items' for detailed operations, the lack of comparative context leaves usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_from_urlC
Import items from URLs (e.g., product pages, images) into the inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to import from (product pages, images, etc.) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('import') but doesn't describe what happens during import (e.g., data extraction, validation, error handling), whether it requires specific permissions, or what the output looks like. This leaves critical behavioral traits undocumented for a tool that likely involves external data fetching and database writes.
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, efficient sentence that front-loads the core action. It avoids unnecessary words and directly states the tool's function. However, it could be slightly more structured by separating usage context from the core purpose.
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?
Given the tool's complexity (importing from external URLs likely involves network calls, data parsing, and inventory updates), the description is incomplete. With no annotations and no output schema, it fails to cover behavioral aspects like error handling, response format, or side effects. The description alone is inadequate for safe and effective use by an AI agent.
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 100%, so the schema already documents the single 'url' parameter with its description. The tool description adds minimal value beyond the schema by repeating the example types ('product pages, images'), but doesn't provide additional syntax, format details, or constraints. This meets the baseline for high schema coverage.
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 clearly states the tool's purpose with a specific verb ('import') and resource ('items'), and specifies the source ('from URLs'). It distinguishes this from sibling tools like 'manage_inventory_items' by focusing on external import rather than internal management. However, it doesn't explicitly differentiate from all siblings (e.g., 'smart_search' might also involve URLs).
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like authentication), when not to use it, or how it differs from sibling tools like 'manage_inventory_items' or 'smart_search'. The example URLs ('product pages, images') hint at context but lack explicit usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_collectionsC
Create, update, delete collections or manage items within collections using natural language instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | Natural language instruction for collection operations. Examples: "Create a new collection called Kitchen Appliances", "Add items abc123, def456 to collection xyz789", "Delete collection old-stuff" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions operations (create, update, delete) but doesn't specify permissions needed, whether deletions are reversible, rate limits, or what the response looks like. This is inadequate for a mutation tool with zero annotation coverage.
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, efficient sentence that front-loads key operations and uses natural language, with zero wasted words. It effectively communicates the core functionality without redundancy.
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?
Given the tool's complexity (handling multiple operations like create/update/delete), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like error handling, response format, or security requirements, leaving significant gaps for an AI agent.
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 100%, so the schema already documents the single parameter 'instruction' with examples. The description adds no additional meaning beyond what the schema provides, such as syntax details or constraints, meeting the baseline for high coverage.
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 clearly states the tool's purpose with specific verbs ('create, update, delete') and resources ('collections' and 'items within collections'), distinguishing it from siblings like manage_inventory_items or manage_tags. However, it doesn't explicitly differentiate from manage_groups, which might have overlapping functionality.
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 provides no guidance on when to use this tool versus alternatives like manage_groups or manage_tags, nor does it mention prerequisites (e.g., authentication) or exclusions. It only states what the tool does, not when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_groupsB
Fetch user groups.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. 'Fetch' implies a read operation, but it doesn't specify whether this requires authentication, returns paginated results, includes metadata, or has any rate limits. For a tool with zero annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence with zero wasted words. It's front-loaded with the core action and resource, making it immediately scannable and appropriately sized for a simple tool.
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?
Given the tool's simplicity (0 parameters, no output schema), the description is minimally adequate. However, with no annotations and no output schema, it doesn't address what the fetch returns (e.g., list format, fields) or behavioral aspects like authentication needs, leaving room for improvement despite the low complexity.
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 tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description doesn't need to add parameter details, and 'Fetch user groups' appropriately implies no filtering or arguments are required, aligning with the empty 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 'Fetch user groups' clearly states the verb ('fetch') and resource ('user groups'), making the tool's purpose immediately understandable. However, it doesn't differentiate this tool from potential siblings like 'manage_users' or 'manage_collections' that might also handle user-related data, preventing a perfect score.
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 provides no guidance on when to use this tool versus alternatives. With siblings like 'manage_users' and 'smart_search' that might overlap with user data retrieval, there's no indication of whether this tool is for administrative group management, simple listing, or other specific contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_inventory_itemsB
Add, update, search, delete, or manage inventory items using natural language instructions. Supports complex operations like adding items with tags, notes, custom fields, and organizing them in containers.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | Natural language instruction for the item operation. Examples: "Add a new laptop with tags electronics, work", "Search for items tagged with kitchen", "Update item abc123 to add note about warranty", "Delete item xyz789" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions operations like add, update, delete (implying mutations) and supports complex features, but fails to disclose critical traits such as authentication needs, rate limits, error handling, or whether changes are reversible. This is inadequate for a multi-operation tool with zero annotation coverage.
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 appropriately sized with two sentences that efficiently cover purpose and features. It's front-loaded with core operations and avoids unnecessary details, though the second sentence could be slightly more streamlined.
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?
Given the tool's complexity (multiple operations like add/delete), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances needed for safe invocation, leaving significant gaps for an AI agent.
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 schema description coverage is 100%, so the input schema already documents the single parameter thoroughly with examples. The description adds no additional parameter semantics beyond what's in the schema, such as format constraints or edge cases, meeting the baseline for high schema coverage.
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 clearly states the tool's purpose with specific verbs (add, update, search, delete, manage) and resource (inventory items), distinguishing it from siblings like get_inventory_stats or manage_tags. However, it doesn't explicitly differentiate from manage_collections or manage_groups, which might handle similar resources.
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 usage through natural language instructions for inventory operations, but provides no explicit guidance on when to use this tool versus alternatives like smart_search or manage_tags. It mentions complex operations but doesn't specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_notificationsB
Fetch user notifications.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter notifications by status (e.g., UNREAD, READ). | |
| limit | No | Maximum number of notifications to fetch. | |
| offset | No | Offset for pagination. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Fetch' implies a read-only operation, but it doesn't specify authentication requirements, rate limits, pagination behavior beyond the offset parameter, or what format the notifications are returned in. For a tool with 3 parameters and no output schema, this leaves significant behavioral gaps.
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 perfectly concise at just three words ('Fetch user notifications'). It's front-loaded with the core purpose and contains zero wasted words. Every element of the description earns its place.
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?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is minimally adequate but incomplete. It states what the tool does but lacks crucial context about authentication, return format, and usage guidelines. The absence of an output schema means the description should ideally explain what gets returned, but it doesn't.
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 schema description coverage is 100%, with clear descriptions for all three parameters (status, limit, offset). The description adds no additional parameter information beyond what's already in the schema. According to the scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.
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 'Fetch user notifications' clearly states the verb ('fetch') and resource ('user notifications'), making the tool's purpose immediately understandable. However, it doesn't distinguish this tool from potential sibling notification tools (none are listed, but the name 'manage_notifications' suggests broader functionality than just fetching).
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 provides no guidance on when to use this tool versus alternatives. While there are no obvious sibling notification tools in the list, the name 'manage_notifications' implies this might be part of a notification management suite, but the description doesn't clarify if this is the primary fetch tool or if other tools handle different notification operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_subscriptionsC
Manage subscriptions including fetching details and creating subscriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| countryCode | Yes | Country code for subscription pricing. | |
| currencyCode | Yes | Currency code for subscription pricing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'fetching details' (read) and 'creating subscriptions' (write), implying both read and write operations, but doesn't specify permissions required, side effects, rate limits, or response formats. This is inadequate for a tool that performs mutations.
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, efficient sentence that avoids redundancy. However, it could be more front-loaded with critical details (e.g., specifying the resource type) to improve clarity without sacrificing brevity.
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?
Given the complexity of a tool that handles both read and write operations for subscriptions, with no annotations and no output schema, the description is incomplete. It fails to explain key behavioral aspects like authentication needs, error handling, or what 'fetching details' returns, leaving significant gaps for agent understanding.
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 schema description coverage is 100%, with both parameters ('countryCode' and 'currencyCode') clearly documented in the schema. The description adds no additional meaning beyond implying these are used for 'subscription pricing,' which is already covered by the schema descriptions. Baseline 3 is appropriate as the schema does the heavy lifting.
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 the tool can 'fetch details and create subscriptions,' which provides a general purpose but lacks specificity about what resources are involved or how it differs from potential sibling tools like 'manage_users' or 'manage_notifications.' It's vague about the exact scope of 'subscriptions' (e.g., user subscriptions, product subscriptions).
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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., after authentication), or exclusions, leaving the agent to infer usage based on the name alone among many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_tagsC
Create, search, rename, or delete tags using natural language instructions.
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | Natural language instruction for tag operations. Examples: "Create tag electronics", "Search for tags containing kitchen", "Rename tag old-name to new-name", "Delete tag unused-tag" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the operations (create, search, rename, delete) but doesn't cover critical aspects like authentication needs, rate limits, error handling, or what happens on deletion (e.g., irreversible). This leaves significant 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?
The description is a single, efficient sentence that front-loads the key operations without any wasted words. It's appropriately sized for the tool's complexity and gets straight to the point.
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?
Given the tool's complexity (handling multiple operations like create and delete), lack of annotations, and no output schema, the description is incomplete. It doesn't explain return values, error conditions, or behavioral nuances, which are essential for safe and effective use.
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 100%, so the schema already documents the single parameter 'instruction' with examples. The description adds no additional meaning beyond what's in the schema, such as format constraints or edge cases, meeting the baseline for high coverage.
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 clearly states the tool's purpose with specific verbs (create, search, rename, delete) and resource (tags), making it immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'manage_collections' or 'manage_groups' which might have similar patterns, so it doesn't reach the highest score.
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 provides no guidance on when to use this tool versus alternatives like 'manage_collections' or 'manage_groups', nor does it mention prerequisites or exclusions. It only states what the tool does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_usersC
Manage users including fetching user details.
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | ID of the user to fetch details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The description mentions 'managing users' which implies mutation capabilities, but only explicitly mentions 'fetching user details' which suggests read operations. It doesn't clarify what specific management actions are possible, what permissions are required, whether changes are reversible, or what the response format looks like. For a tool with 'manage' in its name and no annotation coverage, this is inadequate.
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, efficient sentence that gets straight to the point. There's no wasted verbiage or unnecessary elaboration. However, the structure could be improved by front-loading the most critical information more clearly - the vague 'manage users' followed by the more specific 'fetching user details' creates some ambiguity about the tool's primary function.
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 a tool named 'manage_users' with no annotations and no output schema, the description is incomplete. It hints at both management operations and fetching details without clarifying the scope. The description doesn't explain what 'managing' entails beyond fetching, what the tool returns, or how it differs from related sibling tools. Given the complexity implied by the name and the lack of structured documentation, more comprehensive description is needed.
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 schema description coverage is 100% with the single parameter 'userId' well-documented in the schema. The description doesn't add any meaningful parameter information beyond what's already in the schema. It doesn't provide context about valid user ID formats, where to find user IDs, or how this parameter relates to the tool's functionality. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.
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 'Manage users including fetching user details' which provides a general purpose but is vague. It mentions 'fetching user details' as one aspect of management, but doesn't specify what other management actions might be possible. The description doesn't clearly distinguish this tool from potential sibling tools like 'manage_groups' or 'manage_collections' that might also involve user-related operations.
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 provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, specific contexts where this tool is appropriate, or when other tools might be better suited. With sibling tools like 'authenticate', 'manage_groups', and 'manage_notifications' that could potentially overlap with user management, the lack of differentiation is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
smart_searchC
Perform intelligent searches across your inventory with natural language queries that can include multiple criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural language search query. Examples: "Show me all electronics in the office", "Find kitchen items that are favorited", "List storage containers with more than 5 items" | |
| limit | No | Maximum number of results to return (default: 20) |
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 of behavioral disclosure. It mentions 'intelligent searches' and 'natural language queries,' which imply some processing, but doesn't describe key behaviors: whether this is read-only or has side effects, how results are formatted, if there are rate limits, authentication needs, or error handling. For a search tool with zero annotation coverage, this leaves significant gaps.
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, efficient sentence that front-loads the core purpose. There is no wasted text or redundancy, making it highly concise and well-structured for quick understanding.
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?
Given the complexity (search tool with natural language processing), no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, how results are structured, or any behavioral traits like performance or limitations. For a tool that likely processes queries intelligently, more context is needed to guide effective use.
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 100%, so the schema already documents both parameters ('query' and 'limit') with examples and defaults. The description adds minimal value beyond the schemaāit reiterates 'natural language queries' but doesn't provide additional syntax, constraints, or usage context. Baseline 3 is appropriate when the schema does the heavy lifting.
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 clearly states the tool's purpose: 'Perform intelligent searches across your inventory with natural language queries that can include multiple criteria.' It specifies the verb ('perform searches'), resource ('inventory'), and method ('natural language queries'). However, it doesn't explicitly distinguish this from potential sibling search tools (none are listed among siblings, but the description doesn't address this).
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 provides no guidance on when to use this tool versus alternatives. It mentions 'natural language queries' but doesn't specify scenarios where this is preferred over structured search tools or other inventory access methods. No exclusions, prerequisites, or comparison to sibling tools (like 'get_inventory_stats') are provided.
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.
11 tool updates
v1.0.0- First observed
authenticate - First observed
get_inventory_stats - First observed
import_from_url - First observed
manage_collections - First observed
manage_groups - First observed
manage_inventory_items - First observed
manage_notifications - First observed
manage_subscriptions - First observed
manage_tags - First observed
manage_users - First observed
smart_search
TDQS
Scored across 11 tools
Most tools have distinct purposes targeting different resources (inventory, collections, tags, users, etc.), but 'manage_inventory_items' and 'smart_search' could overlap in search functionality, and 'manage_collections' and 'manage_groups' might be confused for similar organizational concepts. Descriptions help clarify, but some ambiguity remains.
Tool names follow a highly consistent verb_noun pattern throughout, all using snake_case with clear action verbs like 'manage', 'get', 'import', and 'authenticate'. This predictability makes it easy for agents to understand and select tools.
With 11 tools, the count is well-scoped for an inventory management server, covering authentication, core operations (inventory, collections, tags), and auxiliary features (users, notifications, subscriptions). Each tool appears to earn its place without bloat or thinness.
The toolset provides comprehensive CRUD/lifecycle coverage for inventory management, including import, search, and organization features. Minor gaps exist, such as no explicit tool for updating user details or handling subscription cancellations, but agents can likely work around these with the available 'manage' tools.
Maintenance
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Save and organize web finds in persistent, user-controlled collections for AI assistants.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage inventory items, locations, and labels in a self-hosted Homebox instance using natural language, with support for flexible URL configurations.214MIT
- FlicenseAqualityDmaintenanceEnables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.8-
- AlicenseBqualityBmaintenanceEnables AI assistants to manage 3D printer filament inventory through Spoolman's API, allowing natural language queries and commands for CRUD operations on vendors, filaments, spools, settings, and more.349 npm12MIT
- AlicenseAqualityFmaintenanceEnables AI assistants to manage 3D printing inventory, filament spools, printers, projects, and print trackers through a self-hosted Print Vault instance.40AGPL 3.0