Skip to main content
Glama
TNKfreelance

Amazon FBA Ops MCP Server

by TNKfreelance

Amazon FBA Ops MCP Server

A local MCP server that lets Claude query your Amazon Selling Partner API (SP-API) account directly, for two things:

  • Profitability — revenue, Amazon fees, reimbursements, cost-of-goods (COGS), and net margin, grouped by SKU / order / day.

  • Inventory alerts — FBA stock levels and low-stock warnings based on estimated days-of-supply.

Everything this server does against SP-API is read-only (GET requests). The only writes are to a local JSON file you control (data/sku_costs.json), which stores your own product costs since Amazon has no concept of COGS.

Not built yet (future phases): Amazon Ads/PPC, keyword research, Slack notifications, scheduled/cron runs, a dashboard UI.

1. Get SP-API credentials

You need three values from Amazon: an LWA app ID, an LWA client secret, and a refresh token. No AWS IAM / AWS keys are needed — SP-API dropped that requirement in October 2023.

  1. Seller Central → gear icon → Apps and Services → Develop Apps → Add new app client. Choose Private app (not "Publish for others") — this is for your own seller account only.

  2. When prompted for API access/roles, select the roles that cover Orders, Finances, Inventory and Order Tracking, and Product Listing (label wording can shift in the Seller Central UI — pick whatever maps to those four areas). Amazon may take a short time to approve the role grant even for a private app.

  3. Open the app's detail page and copy the LWA Client ID and LWA Client Secret.

  4. Still under Develop Apps, click Authorize on your app (self-authorization — since you're authorizing against the same account that created the app, no OAuth redirect server is needed). Confirm, and copy the refresh token shown — it's shown only once; if you lose it, re-run Authorize to get a new one.

  5. Find your marketplace (e.g. US, UK, DE, JP) — this determines both the API endpoint region and the encoded marketplace_id.

Related MCP server: amazon-mcp

2. Configure

cp .env.example .env

Fill in .env:

LWA_APP_ID=...
LWA_CLIENT_SECRET=...
SP_API_REFRESH_TOKEN=...
SP_API_DEFAULT_MARKETPLACE=US   # match your seller's marketplace

.env is gitignored — never commit it.

3. Install

python3 -m venv .venv
.venv/bin/pip install -e .

4. Sanity-check credentials before wiring into Claude

PYTHONPATH=src .venv/bin/python3 -c "
from amazon_mcp.orders_service import get_orders
from datetime import datetime, timedelta, timezone
end = datetime.now(timezone.utc)
start = end - timedelta(days=7)
print(get_orders(start.strftime('%Y-%m-%d'), end.strftime('%Y-%m-%d')))
"

If this prints an orders list (even an empty one) instead of an error, your credentials work. If it errors, re-check .env against step 1 before touching the MCP server itself.

5. Set your product costs

Profitability can't be computed without knowing what each SKU costs you to make/source. Use the set_sku_cost tool from Claude once the server is registered, or seed data/sku_costs.json directly (see data/sku_costs.example.json for the shape). SKUs with no configured cost show up in missing_cogs_skus in the profitability output rather than silently being treated as free.

6. Register with Claude Code

A .mcp.json is already checked into this project root. It points at .venv/bin/python, so make sure step 3's install happened inside this directory. Claude Code will pick it up automatically when you open this project — restart Claude Code (or run /mcp to reload) if it doesn't appear right away.

To also register it in Claude Desktop, add the same entry under mcpServers in ~/Library/Application Support/Claude/claude_desktop_config.json.

7. Verify end-to-end

All of these are safe, read-only checks against your real seller account:

  • get_orders over a known recent window — cross-check the count/total against Seller Central's own Orders report.

  • get_inventory_summary() — cross-check fulfillable quantities against the FBA inventory dashboard for 2-3 known SKUs.

  • get_catalog_item(asin) for a known ASIN — confirm title/image match the live listing.

  • calculate_profitability over a short window — manually reconstruct expected profit for 1-2 orders (revenue from Seller Central, fees from the Payments view, COGS from what you entered) and compare.

  • get_low_stock_alerts — temporarily lower days_of_supply_threshold to confirm it flags a SKU you know is low.

Run the unit tests (mocked, no network) any time after changing code:

.venv/bin/pip install -e ".[dev]"
PYTHONPATH=src .venv/bin/pytest

Tools

Tool

Purpose

get_orders(start_date, end_date, order_status?)

List orders in a date range

get_order_items(order_id)

Line items for one order

get_financial_events(start_date, end_date)

Raw fee/refund/reimbursement events

calculate_profitability(start_date, end_date, group_by?)

Revenue/fees/COGS/net profit, grouped by sku|order|day

get_inventory_summary(sku?)

Current FBA inventory levels

get_low_stock_alerts(days_of_supply_threshold?, lookback_days?)

SKUs at risk of stocking out

get_catalog_item(asin)

Product title/image/dimensions

set_sku_cost(sku, cost, effective_date?)

Record a SKU's cost-of-goods

list_sku_costs()

List configured SKU costs

Known limitations

  • Orders and financial events have a ~48-hour lag on Amazon's side — very recent orders won't show up yet.

  • get_low_stock_alerts and calculate_profitability (when grouped by SKU) derive sales velocity/units by calling get_order_items once per order in the window, capped at 200 orders (velocity_sampled / truncated flags tell you if a cap was hit). High-volume sellers will eventually want a Reports-API-based bulk pull instead — not built in this MVP.

  • Financial-event field parsing (finances_service.py) is based on Amazon's documented Finances v0 schema but has not yet been checked against a live response — if the shapes don't match exactly, cross-check get_financial_events's raw output the first time you run it for real and adjust _flatten_* in finances_service.py if needed.

Available Tools

9 tools
calculate_profitabilityA

Compute profitability (revenue, Amazon fees, reimbursements, COGS, net profit, margin %) for a date range (YYYY-MM-DD), grouped by 'sku', 'order', or 'day'. Requires SKU costs to be set via set_sku_cost for accurate COGS -- SKUs missing a cost are flagged in 'missing_cogs_skus' rather than silently treated as zero-cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
group_byNosku
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden. It discloses that SKUs missing costs are flagged in 'missing_cogs_skus' rather than silently treated as zero-cost, which is important behavioral context. It could mention date range inclusivity or grouping semantics, but the key edge-case behavior is covered.

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, front-loaded with the core operation and metrics, then adding a critical prerequisite and edge-case behavior. Every sentence earns its place with no redundancy or filler.

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

Completeness5/5

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

Given the presence of an output schema, the description covers purpose, metrics, grouping, date format, prerequisite tool, and missing-cost behavior. This is complete enough for an agent to select and invoke the tool correctly without additional context.

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 description coverage is 0%, so the description compensates by specifying the date format (YYYY-MM-DD) and the valid group_by values ('sku', 'order', 'day'). It does not clarify requiredness or default values, but those are available in the schema itself.

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 a specific verb ('Compute') and resource ('profitability'), and lists the metrics computed (revenue, Amazon fees, reimbursements, COGS, net profit, margin %), date range, and grouping options. This distinguishes it from sibling data-retrieval tools like get_orders or get_financial_events.

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 by stating that SKU costs must be set via set_sku_cost, explicitly naming the prerequisite tool. It does not offer explicit when-not-to-use guidance or compare against alternatives like get_financial_events, but it gives enough context for appropriate use.

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

get_catalog_itemA

Get a product's title, brand, image, and dimensions from the Amazon catalog by ASIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
asinYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/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 only lists the fields returned (title, brand, image, dimensions) but does not mention whether the operation is read-only, potential errors (e.g., invalid ASIN), or any side effects. For a simple lookup tool, this is minimal but insufficient given the lack of annotation support.

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 sentence that front-loads the action and resource. It is concise, contains no redundant information, and effectively communicates the tool's purpose without unnecessary detail.

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 (one parameter) and the existence of an output schema, the description provides sufficient context for basic usage. It does not explain return structure, but that is covered by the output schema. The description lacks any mention of prerequisites or edge cases, but for a straightforward catalog lookup, this is acceptable.

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 has one required parameter 'asin' with zero description coverage. The description mentions 'by ASIN,' which adds context that the parameter is the Amazon Standard Identification Number, but it does not provide format details, examples, or validation rules. The description partially compensates for the low schema coverage but could be more explicit.

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's function: retrieving a product's title, brand, image, and dimensions from the Amazon catalog by ASIN. It uses a specific verb ('Get') and resource ('product... from the Amazon catalog'), distinguishing it from sibling tools that focus on costs, orders, and inventory.

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 on when to use the tool: when you need catalog product details by ASIN. It does not list alternatives or exclusions, but the sibling tools are clearly in different domains, so the intended usage is unambiguous. No explicit when-not-to-use is given, but the description's clarity makes this a minor gap.

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

get_financial_eventsA

List Amazon financial events (fees, refunds, reimbursements) posted in a date range (YYYY-MM-DD).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description must convey behavior. It states the tool lists events 'posted in a date range,' implying a read-only operation and a filtering constraint, but it does not disclose details like pagination, permissions, or response structure (which is covered by the output schema). It adds some context by specifying the date format.

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 front-loads the core action and resource. Every word adds value, and there is no redundant information or filler.

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 low complexity (two simple string parameters) and the presence of an output schema, this description is quite complete: it identifies the action, the resource, the event categories, and the date-range input. It could be slightly more explicit about when to prefer it over sibling tools, but overall it provides sufficient context for an agent to use it correctly.

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 0%, so the description must compensate. It mentions the date range and format (YYYY-MM-DD), which aligns with start_date and end_date, but it does not explicitly map each parameter to its role or state constraints like start_date must precede end_date. It provides partial semantic support.

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 lists Amazon financial events (fees, refunds, reimbursements) within a date range, using the specific verb 'List' and a well-defined resource. It distinguishes from sibling tools like get_orders and list_sku_costs by focusing on financial events, making the purpose unambiguous.

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 the tool is for retrieving financial events within a date range, but it does not explicitly state when to use it over alternatives or mention exclusions like 'use get_orders for order details.' The context provides some guidance, but it lacks explicit usage direction.

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

get_inventory_summaryA

Get current FBA inventory levels (fulfillable, inbound, reserved, unfulfillable quantities), optionally filtered to one SKU.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden. It discloses the data categories and optional filtering, but does not mention any potential caveats such as data freshness, pagination, or scope limitations. For a read-only tool, this is adequate but not rich.

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 entire description is one clause-rich sentence that front-loads the action and resource, with no redundant 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 has an output schema and only one optional parameter, the description covers the core functionality. It doesn't address potential error scenarios or required permissions, but those are reasonably outside scope.

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 schema only lists 'sku' with no description, and the description adds meaning by explaining it as an optional filter to a single SKU. This compensates for the 0% schema description coverage, though it could offer format or default behavior details.

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 uses a specific verb 'Get' and identifies the resource 'current FBA inventory levels', listing the quantity types (fulfillable, inbound, reserved, unfulfillable). This clearly distinguishes it from sibling tools focused on costs, orders, or profitability.

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 clearly implies the tool is for inventory level queries, and mentions optional SKU filtering. However, it does not explicitly name alternatives or exclusion scenarios, so it falls short of a 5.

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

get_low_stock_alertsA

Flag SKUs at risk of stocking out soon, estimating days-of-supply from current fulfillable inventory and recent sales velocity (units sold over lookback_days).

ParametersJSON Schema
NameRequiredDescriptionDefault
lookback_daysNo
days_of_supply_thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the transparency burden. It discloses that the tool estimates days-of-supply using fulfillable inventory and sales velocity, implying a read-only analytical operation. However, it does not explicitly state there are no mutations or discuss data freshness or authentication, but the context is sufficient for a simple analytical 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, information-dense sentence that front-loads the main purpose. It avoids fluff and clearly states the computation without being verbose.

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?

The tool is relatively simple with two optional parameters and an output schema. The description covers the core logic, and the output format is presumably handled by the schema. However, it lacks a brief note on use cases or what the response contains, but that is not critical given the presence of an output schema. The ambiguity around the threshold is a minor gap.

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 0%, so the description must explain the parameters. It explicitly mentions 'lookback_days' as the period for sales velocity, but the role of 'days_of_supply_threshold' is only implied by the 'at risk' phrase. The parameter names are self-explanatory to some extent, but the description doesn't fully clarify the threshold logic.

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 identifies the tool's function as flagging SKUs at risk of stockout, with a specific calculation method (days-of-supply from inventory and sales velocity). This distinguishes it from sibling tools that handle costs, orders, profitability, and inventory summary.

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 what the tool does but does not explicitly state when to use it over alternatives like get_inventory_summary. The use case is implied by the 'at risk' framing, but there is no direct comparison or exclusions provided.

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

get_order_itemsA

List the SKU/quantity/price line items for one Amazon order.

ParametersJSON Schema
NameRequiredDescriptionDefault
order_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden of behavioral disclosure. It accurately indicates a read-only list operation, but does not mention error behavior, order existence assumptions, or any side effects. The verb 'List' implies safety, but no explicit statement is made.

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 of 10 words. It is front-loaded with the verb and object, contains no filler, and every word contributes to understanding the tool's purpose.

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, one parameter, and the presence of an output schema, the description sufficiently covers what the tool does. It does not explain error cases or pagination, but the output schema likely documents the return structure. The description is complete enough for correct selection and invocation.

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 schema only defines order_id as a string with no description. The tool description adds meaning by stating 'for one Amazon order', clarifying that order_id refers to an Amazon order identifier and that the scope is a single order. This compensates for 0% schema coverage.

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 uses a specific verb ('List') and identifies the exact resource ('SKU/quantity/price line items for one Amazon order'). This clearly distinguishes it from sibling tools like get_orders, which likely returns order headers rather than line items.

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 phrase 'for one Amazon order' provides clear context that this tool is for retrieving line items when a specific order is already identified. However, it does not explicitly name alternatives or state when not to use it, so it stops short of a 5.

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

get_ordersA

List Amazon orders created in a date range (YYYY-MM-DD). Optionally filter by order status (e.g. Shipped, Unshipped, Canceled).

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYes
start_dateYes
order_statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It discloses the core listing behavior and filters, but does not mention pagination, ordering, default status handling, or any access requirements. It is minimally transparent for a simple read operation.

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 two sentences, front-loaded with the main action and resource. Every word adds value, with no filler 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?

The tool is simple with an output schema present, so return values are documented elsewhere. The description covers the main inputs and purpose, though it omits edge-case behavior like invalid date ranges or default status handling. Adequately complete for a listing 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?

Schema description coverage is 0%, so the description compensates by giving the date format (YYYY-MM-DD) and examples of order statuses (Shipped, Unshipped, Canceled). It covers all three parameters, adding meaning beyond the bare 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 a specific action ('List') on a specific resource ('Amazon orders') with a defined scope (date range and optional status filter). This distinguishes it from siblings like get_order_items and get_financial_events, which focus on different 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 for listing orders within a date range and optionally filtering by status, but it does not explicitly mention alternatives or when not to use this tool. The context is present but not compared with get_order_items or other siblings.

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

list_sku_costsA

List all SKU costs currently configured for profitability calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. The verb 'List' strongly implies a read-only operation, and the scope 'currently configured' adds context, but it does not explicitly state safety, pagination, ordering, or auth requirements. It is adequate for a simple, low-risk list operation.

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 directly states the tool's purpose. Every word contributes; no waste or 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?

Given the tool has no parameters and an output schema exists, the description adequately covers the core purpose and scope. It could mention ordering or pagination behavior, but for a simple 'list all' tool, the current description is sufficiently complete.

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 zero parameters, so the baseline is 4. There is nothing further to explain, and the description does not need to add parameter details. The schema coverage is trivially complete.

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 lists all SKU costs for profitability calculations, using a specific verb and resource. It is distinct from siblings like set_sku_cost, but does not explicitly name alternatives or exclusion conditions.

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 use when needing to view all configured SKU costs, but it does not provide explicit when-to-use/when-not-to-use guidance or mention alternative tools. The context is clear but no exclusions are stated.

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

set_sku_costA

Record the cost-of-goods (COGS) for a SKU, used by calculate_profitability_tool. Amazon has no concept of product cost, so this must be maintained manually.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYes
costYes
effective_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 disclosing behavior. It only explains why the tool exists, not what happens on invocation—whether costs are overwritten, how effective_date alters records, idempotency, or failure modes. This is a significant gap 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 two concise sentences, front-loaded with the core action. It adds useful rationale without superfluous words, earning its place.

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?

As a write operation with no annotations, minimal parameter documentation, and no behavioral detail, the description leaves critical gaps around record overwrites, effective-date semantics, and edge cases. The output schema may cover return values, but operational context remains underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for its three parameters. The description adds no clarification for sku, cost, or effective_date beyond 'SKU' and 'COGS'. In particular, effective_date is completely unexplained, leaving agents to guess its purpose and format. The description does not compensate for the missing schema documentation.

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 records COGS for a SKU, using a specific verb and resource. It also distinguishes itself from the read-oriented sibling tools by explaining this is the manual maintenance mechanism for profitability calculations.

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 the tool (because Amazon lacks product cost, it must be maintained manually) and mentions its role in calculate_profitability. However, it does not explicitly name alternatives like list_sku_costs or state when not to use it.

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. 9 tool updatesv0.1.0
    • First observedcalculate_profitability
    • First observedget_catalog_item
    • First observedget_financial_events
    • First observedget_inventory_summary
    • First observedget_low_stock_alerts
    • First observedget_order_items
    • First observedget_orders
    • First observedlist_sku_costs
    • First observedset_sku_cost

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

Each tool targets a distinct domain aspect (costs, orders, order items, financial events, profitability, inventory, low stock, catalog). No two tools serve the same purpose; even similarly named tools like get_orders and get_order_items are clearly differentiated in their descriptions.

Naming Consistency3/5

All tools use snake_case, but the verb prefix is inconsistent: list_sku_costs uses 'list' while get_orders, get_order_items, get_financial_events, and get_low_stock_alerts all use 'get' for list-returning operations. This violates the common convention that 'get' fetches a single item and 'list' fetches multiple, which could mislead an agent.

Tool Count5/5

With 9 tools, the server is well-scoped for Amazon FBA operations. Each tool covers a necessary capability without redundancy, and the count falls comfortably within the ideal 3-15 range.

Completeness4/5

The surface covers the core FBA operations: order retrieval, financials, inventory levels, low stock alerts, catalog lookup, and profitability calculation. Minor gaps include lack of a delete operation for SKU costs and no tool to fetch a single order's full header details, but these are not critical.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Connects Amazon Seller Central and Amazon Advertising to any MCP client. Settlement-accurate P&L - every fee, refund and reimbursement as Amazon posted it - plus contribution margin and breakeven per product, per marketplace, per day. Full Sponsored Products, Brands and Display management: search terms, placements, keyword and competitor research, dayparting, automation rules. 107 tools: 72 read-only, 29 that stage a reviewable diff for your approval, and 6 confirmation/support actions. Write tools stage a reviewable diff; applying it takes a separate confirmation.

  • An MCP server that provides read access to your cloud storage providers, bank accounts and more.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Amazon Selling Partner API and Advertising API, enabling access to orders, inventory, pricing, ads, and reports via natural language.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A lightweight, local inventory-intelligence MCP server that enables querying structured inventory schemas with read-only, zero-config tools for stock levels, velocity metrics, and purchase orders.
    7
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server for querying product inventory, providing tools to retrieve product details and stock quantities.
    -