Skip to main content
Glama
dogfoodlab-io

StashDog MCP Server

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

  1. Clone or download this MCP server to your local machine:

    git clone <repository-url>
    cd stashdog-mcp-server
  2. Install dependencies:

    npm install
  3. Build the server:

    npm run build
  4. Configure 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_password

This 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: mypassword

2. 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/laptop

5. 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_stats

7. 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: abc123

9. 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_groups

11. 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-setup

Searching Items

Find all items tagged with electronics that are in storage containers

Managing 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 #hashtag format and comma-separated lists

  • Item IDs: Automatically detects UUIDs in various formats

  • Custom Fields: Parses field_name: value patterns

  • Storage Indicators: Recognizes storage/container keywords

  • Quotes: Handles quoted names and descriptions

  • Limits and Offsets: Understands pagination keywords

šŸ” Authentication

The server supports multiple authentication methods:

  1. Environment Token: Set STASHDOG_AUTH_TOKEN in your environment

  2. Runtime Authentication: Use the authenticate tool to log in

  3. Auto-login: Configure STASHDOG_EMAIL and STASHDOG_PASSWORD for 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 dev

Building

npm run build

Testing

npm test

šŸ¤ Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests if applicable

  5. Submit a pull request

šŸ“„ License

MIT License - see LICENSE file for details.

šŸ†˜ Support

If you encounter any issues:

  1. Check that your StashDog API is running and accessible

  2. Verify your authentication credentials

  3. Check the server logs for detailed error messages

  4. 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 favorited

This MCP server makes managing your StashDog inventory as easy as having a conversation with an AI assistant!

Available Tools

11 tools
authenticateC

Authenticate with StashDog using email and password.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address
passwordYesPassword

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to import from (product pages, images, etc.)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instructionYesNatural 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

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instructionYesNatural 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

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter notifications by status (e.g., UNREAD, READ).
limitNoMaximum number of notifications to fetch.
offsetNoOffset for pagination.

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryCodeYesCountry code for subscription pricing.
currencyCodeYesCurrency code for subscription pricing.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
instructionYesNatural 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

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesID of the user to fetch details for.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 11 tool updatesv1.0.0
    • First observedauthenticate
    • First observedget_inventory_stats
    • First observedimport_from_url
    • First observedmanage_collections
    • First observedmanage_groups
    • First observedmanage_inventory_items
    • First observedmanage_notifications
    • First observedmanage_subscriptions
    • First observedmanage_tags
    • First observedmanage_users
    • First observedsmart_search

TDQS

B3.3/5.0

Scored across 11 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage inventory items, locations, and labels in a self-hosted Homebox instance using natural language, with support for flexible URL configurations.
    21
    4
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to manage shopping lists and items (create, edit, delete, mark as purchased) via integration with a backend API.
    8
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables 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.
    34
    9 npm
    12
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Enables AI assistants to manage 3D printing inventory, filament spools, printers, projects, and print trackers through a self-hosted Print Vault instance.
    40
    AGPL 3.0