Skip to main content
Glama
thehesiod

io.github.thehesiod/costco

by thehesiod

Costco MCP Server

MCP Registry PyPI

An MCP (Model Context Protocol) server that gives Claude access to Costco warehouse receipts and online orders. Talks directly to Costco's internal GraphQL API using OAuth2 refresh tokens extracted from a browser session — no scraping, no runtime headless browser. Multi-account (e.g. personal, spouse) with per-account token storage.

Available on the MCP Registry as io.github.thehesiod/costco.

Disclaimer

This project is not affiliated with, endorsed by, or sponsored by Costco Wholesale Corporation. "Costco" and all related names, logos, and trademarks are the property of their respective owners.

This server communicates with Costco's undocumented internal APIs — endpoints that are not published, not guaranteed to be stable, and may change or be blocked at any time without notice. Use of those APIs may violate Costco's Terms of Service; you are responsible for reviewing the ToS and deciding whether your use is acceptable.

Use at your own risk. The authors and contributors accept no responsibility for any consequences of using this software, including but not limited to: account suspension or termination, data loss or corruption, incorrect receipt/order information, failed purchases, financial discrepancies, API rate-limit strikes, IP blocks, or any other direct or indirect damages. No warranty is provided — see LICENSE for the full MIT no-warranty clause.

If Costco publishes an official API, this project should be considered deprecated in favor of that.

Related MCP server: nutrition-mcp

Features

Warehouse

  • list_warehouse_receipts — In-store receipts for a date range (barcode, warehouse, total)

  • get_receipt_detail — Full itemized receipt by barcode (products, quantities, prices, coupons, department codes)

  • get_all_receipt_details — Bulk fetch every receipt's full detail for a date range

Online Orders

  • list_online_orders — Costco.com orders for a date range (order number, status, items, totals)

Products

  • lookup_products — Resolve item numbers to full product names + departments. Uses a local SQLite cache (~/.costco-mcp/products.db) so repeated lookups are free.

Authentication

  • check_auth_status — Report token freshness and list configured accounts

  • save_refresh_token — Register or update an account's refresh token

Setup

Install in Claude Code

claude mcp add --transport stdio costco -- \
    uvx --from "costco-mcp-server @ git+https://github.com/thehesiod/costco-mcp" costco-mcp-server

Once published to PyPI, the above simplifies to:

claude mcp add --transport stdio costco -- uvx costco-mcp-server

Authentication

Costco doesn't expose a public OAuth app, so refresh tokens are extracted from your browser's Azure AD B2C session storage. Refresh tokens are valid for ~90 days; bearer tokens are minted transparently on each API call.

Semi-automated flow (recommended). Uses a dedicated Chrome profile + chrome-devtools-mcp so Claude extracts and registers the token for you. After first setup, each re-auth is "launch the browser, ask Claude to refresh."

  1. Launch the auth browser (cross-platform console script):

    uvx --from "costco-mcp-server @ git+https://github.com/thehesiod/costco-mcp" costco-auth-browser

    Chrome starts on port 9223 with a persistent profile at ~/.costco-mcp/chrome-profile/.

  2. Register a chrome-devtools-mcp instance pointed at that port (one time):

    claude mcp add costco-browser -- npx -y chrome-devtools-mcp --browserUrl http://127.0.0.1:9223
  3. Log into costco.com in the launched browser window (first time only — the profile persists).

  4. Ask Claude to refresh:

    Extract my Costco refresh token and save it for account "personal".

    Claude reads the msal.*.refreshtoken entry from localStorage via chrome-devtools-mcp and calls save_refresh_token.

Manual fallback. If you'd rather not wire up a second MCP: log into costco.com, open DevTools → Application → Local Storage → https://www.costco.com, find the key containing refreshtoken, copy the secret field from its JSON value, then:

uvx --from "costco-mcp-server @ git+https://github.com/thehesiod/costco-mcp" \
    costco-mcp-server --save-token personal <REFRESH_TOKEN>

Multi-Account

Every tool takes an optional account argument (e.g. "personal", "spouse"). Omitting it uses the default account (first registered, or most recently set). Account data is isolated per name under ~/.costco-mcp/accounts/<name>/.

How It Works

The server uses httpx[http2] to hit Costco's internal GraphQL endpoints directly:

  • ecom-api.costco.com/ebusiness/order/v1/orders/graphql — warehouse receipts + online orders

  • ecom-api.costco.com/ebusiness/product/v1/products/graphql — product lookups

Authentication uses Azure AD B2C (signin.costco.com). The public client IDs baked into auth.py (tenant, policy, MSAL/WCS client IDs) ship in Costco's own browser bundle — they are not secrets. No credentials (username/password) are handled by this server.

See CLAUDE.md for architecture details and development notes.

Platform Notes

Fully cross-platform (macOS, Linux, Windows). No shell scripts — all entry points are Python console scripts.

The semi-automated auth flow requires Chrome or Chromium installed at a standard location. costco-auth-browser searches:

  • macOS: /Applications/Google Chrome.app/...

  • Windows: %ProgramFiles%, %ProgramFiles(x86)%, %LocalAppData% under Google\Chrome\Application\chrome.exe

  • Linux / fallback: google-chrome, google-chrome-stable, chromium, chromium-browser on PATH

Override the debugger port with COSTCO_AUTH_PORT.

Security Notes

  • Refresh tokens are stored plaintext in ~/.costco-mcp/. Rely on OS-level home directory permissions.

  • No credentials handled by this server. Authentication happens entirely in your browser's Costco login flow.

  • The Azure AD B2C client IDs in auth.py are public SPA identifiers that ship in Costco's browser bundle — not secrets.

License

MIT — see LICENSE.

mcp-name: io.github.thehesiod/costco

Available Tools

7 tools
check_auth_statusA

Check if authenticated with Costco. Shows token status and expiry.

Args: account: Account name (optional, uses default if empty). Use list_accounts to see all.

ParametersJSON Schema
NameRequiredDescriptionDefault
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It describes the tool as checking authentication status and showing token/expiry, implying a read-only operation. However, it omits details like required permissions or side effects, making it adequate but not thorough.

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 plus a concise parameter note. Every sentence is useful, no filler. Front-loaded with the core action.

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 an output schema exists and only one optional parameter, the description adequately covers functionality and parameter usage. It lacks elaboration on the output format, but that's handled by the schema, so this is sufficient.

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

Parameters5/5

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

Schema coverage is 0%, so description must compensate. It explains the account parameter is optional, uses a default if empty, and advises how to list all accounts. This adds significant meaning beyond the schema's type definition.

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 purpose: checking authentication status with Costco, showing token status and expiry. It distinguishes itself from sibling tools like save_refresh_token and receipt retrieval tools.

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 guidance on the optional account parameter and references list_accounts for available accounts. It implicitly indicates when to use this tool (when needing auth status check) with no ambiguity about alternatives.

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

get_all_receipt_detailsA

Get full itemized details for ALL warehouse receipts in a date range.

Fetches the receipt list then retrieves full details for each one.

Args: start_date: Start date as M/DD/YYYY. Defaults to 90 days ago. end_date: End date as M/DD/YYYY. Defaults to today. account: Account name (optional, uses default).

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The description reveals it fetches a receipt list then retrieves full details for each, indicating multiple internal calls. However, it omits potential side effects, rate limits, pagination behavior, or performance implications. Without annotations, more behavioral disclosure is 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?

The description is lean (5 lines), front-loaded with the primary purpose, and structured with clear argument descriptions. Every sentence adds value without unnecessary fluff.

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 has an output schema (unknown content) but the description explains the two-step process. However, it does not mention if the operation could be long-running or hit limits. Given the batch nature, a note on scalability would improve completeness.

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 0% schema description coverage, the description fully compensates by specifying format (M/DD/YYYY), defaults (90 days ago / today), and optionality for each parameter. The account parameter mention 'uses default' is slightly vague but acceptable.

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 gets 'full itemized details for ALL warehouse receipts in a date range', with a specific verb and resource. It distinguishes itself from siblings like 'get_receipt_detail' (single) and 'list_warehouse_receipts' (list only) by combining listing and details retrieval.

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 for batch full detail retrieval but does not explicitly state when to use it over alternatives or when not to. Sibling names provide context, but the description lacks direct guidance on trade-offs.

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

get_receipt_detailA

Get full itemized receipt detail for a warehouse purchase.

Returns all line items with descriptions, prices, quantities, tax flags, plus payment tender details and tax breakdown.

Args: barcode: Transaction barcode from list_warehouse_receipts account: Account name (optional, uses default).

ParametersJSON Schema
NameRequiredDescriptionDefault
barcodeYes
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/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. It lists return contents (line items, descriptions, prices, quantities, tax flags, tender details, tax breakdown). It does not explicitly state read-only behavior or error handling, but the return details are helpful.

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 clear and structured with an Args section. No redundant sentences, though it could be slightly more compact.

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 that an output schema exists (not shown), the description adequately covers input parameters and high-level output. It could mention error cases or prerequisites like authentication, but overall it is complete enough for the tool's complexity.

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 explains that barcode comes from list_warehouse_receipts and account is optional with default. However, it does not describe format constraints or accepted values for either 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 'Get full itemized receipt detail for a warehouse purchase' with a specific verb ('Get') and resource ('receipt detail'). It distinguishes from siblings like 'list_warehouse_receipts' (summaries) and 'get_all_receipt_details' (broader).

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 the barcode source ('from list_warehouse_receipts') and optional account parameter, providing clear usage context. However, it does not explicitly state when not to use this tool or suggest alternatives.

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

list_online_ordersA

List online Costco.com orders for a date range.

Returns order summaries with order number, date, total, status, and line items with descriptions and shipping info.

Args: start_date: Start date as YYYY-M-DD (e.g. "2026-1-01"). Defaults to 90 days ago. end_date: End date as YYYY-M-DD (e.g. "2026-3-31"). Defaults to today. warehouse_number: Warehouse number (default "847"). page_number: Page number for pagination (default 1). page_size: Results per page (default 25). account: Account name (optional, uses default).

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
warehouse_numberNo847
page_numberNo
page_sizeNo
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided. The description mentions default date ranges but does not disclose side effects, idempotency, rate limits, or authorization requirements. Assumed read-only but not explicit.

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?

Well-structured with summary, return description, and parameter list. Slightly verbose on parameter details but clear and easy to parse.

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?

Covers purpose, parameters, and returns. Lacks error handling, pagination behavior, or output schema details beyond what is stated. Output schema exists but description is sufficient for common usage.

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

Parameters5/5

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

Schema has 0% description coverage; the description provides format, defaults, and purpose for all 6 parameters, greatly exceeding schema info.

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 listing online Costco.com orders for a date range, differentiating from sibling tools like get_receipt_detail and list_warehouse_receipts.

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?

Describes the use case but does not explicitly state when not to use or mention alternative tools. Sibling names are provided but not referenced in the description.

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

list_warehouse_receiptsA

List in-warehouse purchase receipts for a date range.

Returns receipt summaries with date, warehouse name, total, item count, and transaction barcode (use barcode with get_receipt_detail for full items).

Args: start_date: Start date as M/DD/YYYY (e.g. "1/01/2026"). Defaults to 90 days ago. end_date: End date as M/DD/YYYY (e.g. "3/31/2026"). Defaults to today. document_type: Filter: "all", "warehouse", "gas", "carwash". Defaults to "all". account: Account name (optional, uses default).

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNo
end_dateNo
document_typeNoall
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It discloses input format, defaults, and filter options, but omits details like read-only nature, pagination, or return limits. The description is adequate but not exhaustive.

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 well-structured with a concise purpose statement followed by an Args section. It is efficient without redundant text, though slightly verbose with the return field list.

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 presence of an output schema (not shown), the description adequately explains return values and how to use results with get_receipt_detail. It covers all parameters and defaults, though it could mention pagination or sorting for completeness.

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 explaining each parameter: start_date and end_date format, document_type options ('all', 'warehouse', 'gas', 'carwash'), and account as optional. This adds significant meaning beyond the bare 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 lists in-warehouse purchase receipts for a date range, specifies returned fields (date, warehouse name, total, item count, barcode), and hints at relationship with get_receipt_detail. It effectively communicates the core function.

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 indicates when to use the tool (listing receipts) and directs to use barcode with get_receipt_detail for full items. However, it does not explicitly differentiate from sibling tools like get_all_receipt_details or when not to use this tool, leaving room for confusion.

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

lookup_productsA

Look up full Costco product names by item numbers.

Uses a shared local cache — only calls the API for uncached items.

Args: item_numbers: Comma-separated item numbers (e.g. "70476,5887,1532925") warehouse_number: Warehouse number (default "847") account: Account name (optional, uses default).

ParametersJSON Schema
NameRequiredDescriptionDefault
item_numbersYes
warehouse_numberNo847
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description must carry the full burden. It discloses the caching behavior ('only calls the API for uncached items'), which is a key behavioral trait for a read operation. It does not cover authentication needs or rate limits, but the cache disclosure is valuable and beyond the basic read-only assumption.

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 concise, with a clear first sentence summarizing the tool's purpose, followed by a brief cache note and parameter details. It has no unnecessary words, though the parameter list could be more structured (e.g., bullet points). Still, it efficiently communicates essential 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?

Given that an output schema exists, the description does not need to explain return values. It covers the core functionality (looking up product names) and the caching behavior. However, with no annotations, it lacks safety context (e.g., read-only assurance, authentication requirements). This is a minor gap given the tool's apparent read-only nature, keeping it at a 4.

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

Parameters5/5

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

The input schema has 0% description coverage, so the description must compensate. It provides clear, actionable explanations for all three parameters: item_numbers (with example), warehouse_number (with default), and account (with default and optionality). This adds significant value beyond 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?

The description clearly states the action ('Look up full Costco product names'), the resource ('product names'), and the method ('by item numbers'). It uniquely identifies the tool's purpose and distinguishes it from sibling tools that deal with receipts and authentication.

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 mentions a shared cache for efficiency, implying when to use it (repeated lookups). However, it does not explicitly state when not to use this tool or compare it with alternatives like searching for products in other ways. Sibling tools are unrelated, so no direct conflict guidance is needed, but the absence of when-not guidance keeps it at a 3.

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

save_refresh_tokenA

Save a refresh token obtained from a browser login session.

Use this to add a new account or update an existing one. The refresh token is valid for 90 days.

Args: refresh_token: The OAuth2 refresh token from Costco's Azure AD B2C account: Account name (e.g. "personal", "spouse"). Creates the account if new. If empty, uses default account.

ParametersJSON Schema
NameRequiredDescriptionDefault
refresh_tokenYes
accountNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so the description must disclose behavioral traits. It mentions token validity of 90 days and that creating an account is possible. However, it does not discuss side effects, error behavior, or whether it's destructive/reversible.

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 concise with a clear front-loaded purpose statement. Every sentence adds value, covering purpose, usage, and parameter details without 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 that an output schema exists, the description does not need to cover return values. It adequately explains purpose, usage, parameters, and token lifetime. Minor omission: no mention of error cases or prerequisites, but overall sufficient for a simple save operation.

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

Parameters5/5

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

With 0% schema coverage, the description fully compensates by explaining the source of the refresh token (Costco's Azure AD B2C) and the account parameter with examples and behavior when empty. This adds significant meaning beyond the raw 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 it saves a refresh token from a browser login session, and explicitly says to add a new account or update an existing one. This distinguishes it from siblings like check_auth_status or receipt-related tools.

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?

Provides context for use (adding or updating accounts), but does not explicitly state when not to use or mention alternatives like check_auth_status. Usage is implied rather than clearly bounded.

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

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: auth status, receipt bulk/single detail, online orders, warehouse receipts, product lookup, and token management. There is no overlap or ambiguity between them.

Naming Consistency5/5

All tools use a consistent verb_noun pattern with snake_case, such as check_auth_status, list_warehouse_receipts, and save_refresh_token. The naming is predictable and easy to understand.

Tool Count5/5

Seven tools is an appropriate number for a Costco data retrieval server. It covers authentication, receipts, online orders, product lookup, and token management without being too few or excessive.

Completeness4/5

The tool set covers the main data retrieval needs, but there is a notable gap: check_auth_status references a nonexistent list_accounts tool. Adding that would improve completeness, though core operations are present.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

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
    A
    quality
    A
    maintenance
    Enhanced MCP server for GraphQL with filtered introspection and full variable support.
    26
    2
    6,685
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    A local MCP server for grocery shopping, enabling product search, specials, and browsing across NZ supermarkets, with cart and order history for Countdown/Woolworths via browser-assisted login.
    14
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that relays Walmart order history collected by the Walmart Invoice Exporter browser extension, enabling Claude and other AI clients to query orders and spending.
    7
    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/thehesiod/costco-mcp'

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