Skip to main content
Glama

mcp-edd

MCP server for Easy Digital Downloads REST API - access sales data, customers, products, and analytics from your EDD store.

npm version License: GPL-3.0

Features

  • ๐Ÿ“Š Sales Analytics - Revenue, transaction counts, date ranges

  • ๐Ÿ‘ฅ Customer Data - Purchase history, lifetime value

  • ๐Ÿ›๏ธ Product Catalog - Pricing tiers, licensing info

  • ๐Ÿท๏ธ Discount Codes - Usage stats and configuration

  • ๐Ÿ“ฅ Download Logs - File download tracking

  • ๐Ÿ”’ Type Safety - Full Zod schema validation

Related MCP server: WooCommerce MCP Server

Installation

Quick Install (Claude Desktop)

Download the Desktop Extension for one-click installation:

Release page (download .mcpb asset)

Double-click the downloaded file to install. You'll be prompted for your API credentials.

npm Install

npm install -g @verygoodplugins/mcp-edd

Or add to your Claude Desktop configuration directly (see below).

Configuration

Environment Variables

Set these environment variables before running the server:

export EDD_API_URL="https://your-store.com/edd-api/"
export EDD_API_KEY="your-api-public-key"
export EDD_API_TOKEN="your-api-token"

Or create a .env file in your working directory.

Getting API Credentials

  1. In WordPress admin, go to Downloads โ†’ Settings โ†’ API

  2. Generate a new API key for your user

  3. Copy the Public Key and Token

  4. Your API URL is https://your-site.com/edd-api/

Claude Desktop Configuration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "edd": {
      "command": "npx",
      "args": ["-y", "@verygoodplugins/mcp-edd"],
      "env": {
        "EDD_API_URL": "https://your-store.com/edd-api/",
        "EDD_API_KEY": "your-api-public-key",
        "EDD_API_TOKEN": "your-api-token"
      }
    }
  }
}

Available Tools

Setup / Diagnostics

Tool

Description

edd_validate_connection

Validate your Store API URL and credentials

Products

Tool

Description

edd_list_products

List all products with pricing and stats

edd_get_product

Get detailed product info by ID

Sales

Tool

Description

edd_list_sales

List recent sales with filters

edd_get_sale

Get sale by ID or purchase key

Customers

Tool

Description

edd_list_customers

List customers with purchase stats

edd_get_customer

Get customer by ID or email

Note: edd_list_customers returns the EDD customer ID as id (usable with edd_get_customer(customerId=...)) and includes userId when available.

Statistics

Tool

Description

edd_get_stats

Get earnings/sales totals

edd_get_stats_by_date

Get daily stats for date range

edd_get_stats_by_product

Get stats breakdown by product

Discounts

Tool

Description

edd_list_discounts

List all discount codes

edd_get_discount

Get discount details by ID

Downloads

Tool

Description

edd_get_download_logs

Get file download history

Example Usage

Once configured, you can ask Claude:

  • "Show me this month's sales revenue"

  • "List the top 10 customers by lifetime value"

  • "How many licenses were sold for WP Fusion last month?"

  • "Show me all active discount codes"

  • "Get the purchase history for customer@example.com"

Development

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test                    # Unit tests
npm run test:integration    # Integration tests (requires credentials)
npm run test:all           # All tests

# Lint
npm run lint

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes with tests

  4. Submit a pull request

API Reference

This server wraps the EDD REST API. See their documentation for detailed endpoint information.

License

GPL-3.0 - see LICENSE for details.

Support

For issues, questions, or suggestions:


Built with ๐Ÿงก by Very Good Plugins

Available Tools

16 tools
edd_get_customerGet EDD CustomerA

Get detailed customer information by EDD customerId or email. Returns full customer data including date_created and additional_emails.

ParametersJSON Schema
NameRequiredDescriptionDefault
customerIdNoCustomer ID to retrieve
emailNoCustomer email to retrieve

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behavior. It mentions returns 'full customer data' and lists specific fields, but no info on permissions, error handling, or side effects.

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?

Two short sentences, front-loaded with key action and resource. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with two params and no output schema, the description covers retrieval and returned fields. Could improve by noting potential errors or authentication needs.

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 coverage is 100%, so baseline 3. Description adds that parameters are alternate identifiers, but doesn't elaborate on format or constraints beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get' and resource 'customer', and specifies retrieval by 'customerId or email', which distinguishes it from sibling tools like edd_list_customers.

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 on when to use this tool vs alternatives, nor any mention of prerequisites or exclusions. For example, it doesn't specify when to use customerId vs email.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_discountGet EDD DiscountC

Get detailed information about a specific discount code

ParametersJSON Schema
NameRequiredDescriptionDefault
discountIdYesThe discount ID to retrieve

TDQS

C2.7/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 but only says 'Get detailed information'. No mention that this is a read-only operation, no disclosure of side effects, permissions, or other behavioral traits.

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?

Description is a single sentence, concise and to the point. No wasted words. Could be slightly improved but is efficient.

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 low complexity (1 param, no nested objects, no output schema), description is minimally adequate. Lacks differentiation from sibling tools and elaboration on what 'detailed information' includes.

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 coverage is 100%, so baseline 3. The description adds no extra context about the discountId parameter such as how to obtain it or constraints. No improvement over schema.

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 it gets detailed information about a discount, but uses 'discount code' which may conflate with the sibling tool edd_get_discount_by_code. The actual parameter is a numeric discount ID. Purpose is clear enough but could cause confusion.

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 explicit usage guidelines, no comparison with sibling tools like edd_get_discount_by_code or edd_list_discounts. Agent must infer when to use this vs alternatives from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_discount_by_codeGet EDD Discount by CodeA

Look up a discount by its code string (case-insensitive)

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe discount code to look up (case-insensitive)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must fully disclose behavior. Only states it looks up by code and case-insensitivity. Does not mention return value, error handling on missing code, or any side effects. For a read operation, more details are needed.

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?

Single sentence, front-loaded with key action and unique feature (case-insensitivity). No wasted words.

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?

Simple tool with one parameter and no output schema. Description is adequate for basic understanding but lacks return value details or error behavior. Would benefit from noting what is returned (e.g., discount object or null) to be fully complete.

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 coverage is 100% with parameter description matching tool description. The description adds case-insensitivity but that is also in the schema. Does not add new meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it looks up a discount by its code string with case-insensitivity. Distinguishes from siblings like edd_get_discount (likely by ID) and edd_list_discounts (list all).

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?

Implies usage when you have a discount code, but no explicit when-to-use or when-not-to-use compared to alternatives like edd_get_discount. Lacks direct guidance on sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_download_logsGet EDD Download LogsB

Get file download history, optionally filtered by product or customer

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of logs to return (default: 10)
productIdNoFilter by product ID
customerIdNoFilter by customer ID

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description does not disclose behavioral traits such as pagination, ordering, rate limits, or what constitutes a 'download log' entry. For a tool returning a list, this is insufficient 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, front-loaded sentence that efficiently conveys the core action and optionality. Every word earns its place, with no redundancy or unnecessary detail.

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 absence of an output schema and annotations, the description is too sparse. It does not explain the nature of the returned data (e.g., list structure, fields like date or file name), pagination behavior, or how to interpret the log entries. This leaves the agent guessing about the tool's full capabilities.

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 input schema already describes all three parameters (number, productId, customerId) with 100% coverage. The description's mention of 'optionally filtered by product or customer' mirrors the schema without adding new meaning, so it meets the baseline but does not enhance understanding.

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 retrieves file download history with optional filtering by product or customer. However, it does not explicitly differentiate this from sibling list tools like edd_list_sales, though the specificity of 'download logs' provides some distinction.

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 for obtaining download history with optional filters, but it does not provide guidance on when to use this tool versus siblings, nor does it state prerequisites or exclusions. The 'optionally filtered' phrase gives some context but lacks explicit alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_productGet EDD ProductB

Get detailed information about a specific product by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
productIdYesThe product ID to retrieve

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states it gets information, but no disclosure of error handling, authentication needs, rate limits, or whether the operation is read-only.

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?

One sentence, front-loaded with the key action and resource. No wasted words, though it could be slightly more informative.

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?

Adequate for a simple get-by-ID tool, but lacks details on return format, error responses, and what 'detailed information' includes, especially without an output schema.

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 has 100% description coverage, so baseline is 3. The description adds no extra meaning beyond what the schema already provides for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get), resource (product), and method (by ID), and distinguishes from sibling tools like edd_list_products which lists all products.

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 on when to use this tool vs alternatives (e.g., edd_list_products) or what to do if the ID is invalid. The context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_saleGet EDD SaleB

Get detailed information about a specific sale by ID or purchase key

ParametersJSON Schema
NameRequiredDescriptionDefault
saleIdNoSale ID to retrieve
purchaseKeyNoPurchase key to retrieve

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It indicates a read operation ('Get detailed information') but does not disclose limitations, authentication needs, or what fields constitute 'detailed information'. Lacks explicit safety guarantees.

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?

Single sentence, no wasted words, clearly front-loaded with the action and resource. Highly efficient.

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?

No output schema, so description should elaborate on return structure. It merely says 'detailed information' without specifics on fields, pagination, or behavior when sale is not found. Incomplete for a get operation with no annotation context.

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 coverage is 100% with both parameters having descriptions. The tool description echoes these ('by ID or purchase key') but adds no new meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'detailed information about a specific sale', and specifies two identification methods (by ID or purchase key), distinguishing it from sibling tools like edd_list_sales which lists sales.

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 when a sale ID or purchase key is known, but lacks explicit guidance on when not to use or alternative tools. No contrast with edd_get_customer or edd_list_sales.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_statsGet EDD StatsB

Get earnings or sales statistics (current month, last month, and all-time totals)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of stats: sales (count) or earnings (revenue)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It fails to state that the operation is read-only, lacks any mention of side effects, permissions, or rate limits. Only the returned scope is mentioned.

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 concise sentence that is front-loaded with key information and contains no extraneous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (single parameter, no output schema), the description is mostly complete. It could be improved by briefly noting the output format (e.g., numbers or currency), but it is adequate for an 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 coverage is 100% and the schema already describes the 'type' parameter with enum values and their meanings. The description adds no additional semantic value beyond what is in the 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 clearly states the tool retrieves earnings or sales statistics for three specific time frames (current month, last month, all-time). This distinguishes it from siblings like edd_get_stats_by_date or edd_get_stats_by_product, which are more specialized.

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?

Usage is implied: use when you need aggregate totals for the specified periods. However, no explicit guidance on when not to use it or mention of alternatives (e.g., presets or product-specific stats) is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_stats_by_dateGet EDD Stats by Date RangeB

Get daily earnings or sales statistics for a custom date range

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of stats: sales (count) or earnings (revenue)
startDateYesStart date in YYYYMMDD format (e.g., 20250101)
endDateYesEnd date in YYYYMMDD format (e.g., 20250131)

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. However, it only describes the tool's purpose without mentioning any behavioral traits such as data aggregation, return format, or potential side effects. For a read operation, the description should at least confirm it is non-destructive.

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, concise sentence with no unnecessary words. It is front-loaded and efficient, though it may sacrifice completeness for 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?

The tool has three parameters, one enum, and no output schema. The description fails to explain the return structure (e.g., whether it returns daily breakdowns or totals). Given the absence of output schema and annotations, the description is incomplete for an agent to fully understand the tool's behavior.

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 coverage is 100%, with each parameter having a description in the schema. The tool description adds minimal additional meaning beyond restating type and date range. It does not clarify date format nuances or provide examples, but the schema already handles this adequately, resulting in a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves daily earnings or sales statistics for a custom date range. It specifies the resource (stats) and verb (get), and mentions the key parameters, distinguishing it from sibling tools like edd_get_stats_by_preset or edd_get_stats_by_product.

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 explicit guidance on when to use this tool versus its siblings, such as edd_get_stats, edd_get_stats_by_preset, or edd_get_stats_by_product. It lacks any 'when to use' or 'when not to use' context, leaving the agent to infer usage solely from the name and parameter differences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_stats_by_presetGet EDD Stats by Date PresetA

Get earnings or sales statistics using a preset date filter (today, yesterday, this_week, this_month, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of stats: sales (count) or earnings (revenue)
dateYesPredefined date filter

TDQS

A3.6/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. It only states the tool's purpose without disclosing behavioral traits such as whether it returns raw counts/revenue values, any side effects (likely none), or data freshness. Minimal disclosure beyond the basic action.

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 14-word sentence that is front-loaded with the key information. Every word serves a purpose, no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two required, fully-described parameters and no output schema, the description is adequate. It covers the tool's purpose and scope. However, it omits any mention of the return format or example, which would be helpful but not strictly necessary given the tool's simplicity.

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% as both 'type' and 'date' parameters have clear descriptions in the schema. The description merely reiterates 'preset date filter', adding no extra meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'earnings or sales statistics', and the specific scope 'using a preset date filter'. It differentiates from siblings like 'edd_get_stats_by_date' and 'edd_get_stats_by_product' by focusing on presets.

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 for quick preset date filters but does not explicitly state when to use this tool versus alternatives like 'edd_get_stats' or 'edd_get_stats_by_date'. No 'when not to use' or comparison with siblings is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_get_stats_by_productGet EDD Stats by ProductB

Get earnings or sales statistics broken down by product

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesType of stats: sales (count) or earnings (revenue)
productIdNoSpecific product ID (omit for all products)

TDQS

B3/5.0
Behavior1/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 traits. It fails to disclose whether the tool is read-only, requires authentication, has rate limits, or any side effects. The word 'Get' weakly implies a read operation but is insufficient.

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?

Single sentence, zero wasted words, front-loaded with purpose. Efficiently conveys the core function despite missing details.

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?

The tool has no output schema, so the description should explain return values. It does not. It also lacks information on default behavior (e.g., what 'omit for all products' returns). Incomplete for effective agent 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 coverage is 100%, and the schema already describes parameters well. The description adds no additional meaning beyond 'earnings or sales' and 'broken down by product', which mirrors the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'earnings or sales statistics', and the scope 'broken down by product'. It distinguishes the tool from siblings that filter by date or preset.

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 explicit guidance on when to use this tool versus alternatives like edd_get_stats_by_date or edd_get_stats_by_preset. The description implies product-level breakdown but leaves usage context to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_list_active_discountsList Active EDD DiscountsA

List only currently active discount codes, filtering out expired and disabled ones

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of discounts to return

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the filtering logic. It does not disclose any behavioral traits such as pagination, authentication requirements, or rate limits, leaving the agent with limited behavioral understanding.

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, well-front-loaded sentence that concisely conveys the tool's purpose without any wasted words.

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 has only one optional parameter and no output schema, the description adequately explains the core functionality but lacks behavioral details such as default behavior or limits, which could be important for an 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 input schema already provides a clear description for the single parameter 'number'. The description adds no additional meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the tool lists only currently active discount codes, filtering out expired and disabled ones, which distinguishes it from the sibling tool 'edd_list_discounts' that likely lists all discounts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to get active discounts) but does not explicitly mention alternatives or when not to use it, though the sibling name implies an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_list_customersList EDD CustomersA

List customers with their purchase statistics (date_created, additional_emails included). Optionally filter by creation date preset (today/yesterday) or a custom date range in YYYYMMDD format.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of customers to return (default: 10)
pageNoPage number for pagination
dateNoFilter by creation date preset
startDateNoStart date in YYYYMMDD format (requires endDate)
endDateNoEnd date in YYYYMMDD format (requires startDate)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description reveals return includes purchase statistics but lacks details on pagination, ordering, or response format. Acceptable for a simple list tool but not comprehensive.

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?

Two sentences, direct, no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a list tool with full schema coverage, but lacks documentation of response structure or pagination behavior. Could specify what 'purchase statistics' includes.

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?

Schema covers all parameters. Description adds functional context: date enum values and custom range requirement. Also mentions additional fields not in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'List customers' and specifies included fields (purchase statistics, date_created, additional_emails). Distinguishes from singular 'edd_get_customer' sibling.

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 explicit guidance on when to use this vs other list tools (e.g., edd_list_sales). Only implies usage for customer listing with optional date filters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_list_discountsList EDD DiscountsB

List all discount codes with their usage statistics

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of discounts to return

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states listing behavior without disclosing any additional traits such as pagination, performance, or data freshness.

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 with no wasted words, though it could be slightly expanded for clarity.

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?

For a simple list tool with one optional parameter and no output schema, the description is minimally adequate but lacks details on return format or default behavior.

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 coverage is 100% for the single 'number' parameter, and description does not add further meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'List all discount codes with their usage statistics', specifying verb and resource, and distinguishes from siblings like edd_get_discount and edd_list_active_discounts.

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 on when to use this tool versus alternatives like edd_list_active_discounts, or any context-specific usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_list_productsList EDD ProductsA

List products from the Easy Digital Downloads store with pricing, stats, and SKU. Optionally search by keyword, filter by category slug/ID, or filter by tag slug/ID. Category and tag filters can be combined.

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of products to return (default: all)
searchNoSearch keyword to match against product titles and descriptions
categoryNoFilter by category slug or ID
tagNoFilter by tag slug or ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries burden. It describes listing products with pricing, stats, and SKU, but does not disclose pagination, default behavior, or side effects. Schema covers the 'number' default, but description adds limited behavioral context.

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?

Two sentences, no wasted words. First sentence states main purpose, second explains filters. Efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with 4 optional parameters, the description covers filtering well. However, missing details about output structure (e.g., per-product fields) and pagination limit completeness slightly. No output schema exists, so description could do more.

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?

Schema coverage is 100%, baseline 3. Description adds value by explaining that category and tag filters can be combined, which is not clear from individual schema descriptions. This helps agents understand parameter relationships.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List products from the Easy Digital Downloads store', specifying the verb and resource. It is distinct from sibling tools that focus on customers, discounts, sales, etc.

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 explains optional filters but does not explicitly guide when to use this tool versus alternatives like edd_get_product for a single product. Context signals imply it is the only product listing tool, but explicit differentiation is missing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_list_salesList EDD SalesB

List recent sales/transactions with optional filtering by email or date range

ParametersJSON Schema
NameRequiredDescriptionDefault
numberNoNumber of sales to return (default: 10)
pageNoPage number for pagination
emailNoFilter sales by customer email
startDateNoStart date (YYYYMMDD format)
endDateNoEnd date (YYYYMMDD format)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description has full burden. Describes tool as listing 'recent' sales but does not define 'recent', default sort order, pagination behavior, or any side effects. Lacks important behavioral details.

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?

Single concise sentence that communicates purpose and primary capability. No unnecessary words, but could be structured with more detail without losing conciseness.

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?

Tool has 5 parameters and no output schema. Description does not explain default return count (number param default 10), pagination details, or output format. Incomplete for an effective agent invocation.

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?

Input schema has 100% description coverage, so baseline is 3. Description adds that filtering is 'optional', but does not provide additional semantics beyond schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states action 'list', resource 'sales/transactions', and optional filters by email or date range. Distinguishes from sibling tools like 'edd_get_sale' (single sale).

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 explicit guidance on when to use this versus alternatives. For example, does not mention that 'edd_get_sale' is for a single sale. No context on prerequisites or default behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edd_validate_connectionValidate EDD ConnectionA

Validate Store API URL and credentials by making lightweight requests (products + one authenticated endpoint).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses making lightweight requests (products + one authenticated endpoint), giving insight into behavior. But it does not specify success/failure responses or potential side effects.

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?

Single sentence, highly concise and front-loaded. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description adequately explains the tool's action. It could mention return value (success/failure), but is mostly complete for a simple validation tool.

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?

With zero parameters, baseline is 4 as per rules. Description does not need to add param info, and schema coverage is 100% implicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates Store API URL and credentials, which is a specific verb-resource from its name. It distinguishes from sibling tools (all get/list operations) by being a validation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions lightweight requests, implying use for testing connection readiness. However, it does not explicitly contrast with alternatives or provide when-not-to-use scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: unique resources (customer, discount, product, sale, stats, logs) with specific operations. Even similar tools like get_discount and get_discount_by_code are differentiated by lookup method, and the multiple stats tools are differentiated by grouping (date, preset, product). No ambiguity.

Naming Consistency5/5

All tools follow the consistent pattern 'edd_verb_noun', using 'get_' for single items and 'list_' for collections, with lowercase and underscores throughout. The only outlier, 'validate_connection', still uses the same verb-noun style and is clearly distinguishable.

Tool Count5/5

With 16 tools, the server covers the core read operations and statistics for an EDD store without being overwhelming. Each tool has a clear role, and the count is well-scoped for a domain-specific server.

Completeness3/5

The server is heavily read-focused (all tools are get/list/validate), lacking any create, update, or delete operations for customers, discounts, products, or sales. While potentially intentional for an analytics-only tool, the absence of write operations is a notable gap for full store management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    WooCommerce MCP Server enables interaction with WooCommerce stores through the WordPress REST API. It provides comprehensive tools for managing all aspects of products, orders, customers, shipping, taxes, discounts, and store configuration using JSON-RPC 2.0 protocol.
    102
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides access to WooCommerce REST API functionality, enabling product, order, customer, and coupon management.
    1,764
    1
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for Envato API that enables searching the marketplace catalog, viewing author statistics, checking buyer purchases, and accessing account details.
    13
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/verygoodplugins/mcp-edd'

If you have feedback or need assistance with the MCP directory API, please join our Discord server