pricewatcha
Server Details
Track prices & price history on any online shop, with alerts and an API
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- pricewatcha/pricewatcha-api
- GitHub Stars
- 1
- Server Listing
- Pricewatcha MCP Server
Available Tools
11 toolscreate_price_alertCreate price alertAInspect
Create a price alert for a product. Use notify_on_drop / notify_on_rise for any price change without a numeric threshold, and/or min_threshold_price / max_threshold_price for target prices. At least one of those four settings is required. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/en/developers#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional alert name | |
| api_key | Yes | Pricewatcha API key (pwk_live_...) | |
| product_id | Yes | Public product ID (prod_... or demo_...) | |
| webhook_url | No | Optional HTTPS webhook URL | |
| notify_email | No | Send email notifications (default true) | |
| notify_on_drop | No | Notify on any price drop. No threshold required. | |
| notify_on_rise | No | Notify on any price increase. No threshold required. | |
| max_threshold_price | No | Notify when the price rises to or above this value. | |
| min_threshold_price | No | Notify when the price drops to or below this value. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| alert_id | Yes | |
| currency | Yes | |
| is_active | Yes | |
| created_at | Yes | |
| product_id | Yes | |
| updated_at | Yes | |
| webhook_url | No | |
| notify_email | Yes | |
| notify_on_drop | Yes | |
| notify_on_rise | Yes | |
| last_triggered_at | No | |
| max_threshold_price | No | |
| min_threshold_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only 'false' annotation flags, the description carries the behavioral burden, and it does so by specifying the API key format, location, and the structured error contract. It doesn't describe post-creation side effects or whether the alert starts immediately, but this is a modest gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded in the first sentence, followed by focused sentences on parameter choice, requirement, auth prerequisite, and error output. Each clause carries semantic weight, though the paragraph is slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since the tool has an output schema, the definition doesn't need to describe successful return values. The description covers authentication, the mandatory conditional fields, API key source, and error structure, giving an agent all crucial non-obvious context for a successful call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers 100% of parameter details, giving a baseline of 3. The description adds value beyond the schema by grouping the threshold-free flags separately from the numeric threshold settings and by introducing the cross-field requirement that at least one is mandatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Create' combined with 'price alert' and 'for a product' states exactly what the tool does. The subtle distinction with siblings like update_price_alert is immediately obvious from the verb choice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains the two operating modes: threshold-free notify_on_drop/notify_on_rise vs numeric min/max_threshold_price, and states the crucial 'at least one of those four settings is required' constraint. It provides clear create-context, though it doesn't explicitly name update_price_alert as the alternative for modifying existing alerts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_price_alertDelete price alertADestructiveIdempotentInspect
Delete a price alert. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/en/developers#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Pricewatcha API key (pwk_live_...) | |
| alert_id | Yes | Alert ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
| deleted | Yes | |
| alert_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey destructiveHint=true and readOnly=false, so the description does not need to restate that this deletes data. It adds useful behavioral detail beyond annotations by requiring a live API key and by documenting the structured error object returned on failure, including error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and every sentence earns its place: the operation, the authentication prerequisite with source URL, and the error contract. It is front-loaded with the verb and resource, and contains no filler or redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with annotations, a complete schema, and an output schema, the description is nearly sufficient. It covers the required API key, where to get it, and exactly what error information is sent back on failure. The only absence is explicit guidance about choosing this tool over alternatives, and minor wording about the successful result could be added.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so api_key and alert_id are already documented in the input schema. The description adds the developer URL for obtaining the API key but gives no additional semantics for alert_id beyond 'Alert ID to delete', which is adequate but not rich given the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Delete a price alert', a clear verb+resource statement that distinguishes this tool from siblings like create_price_alert, update_price_alert, and list_price_alerts. It does not expand much beyond the title, but the verb is unambiguous and correctly implies destructive action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete prerequisite: a Pricewatcha API key (pwk_live_...) is required and the URL for obtaining it is included. However, it does not state when to choose delete_price_alert over the alternative update_price_alert or list_price_alerts, so the tool-selection guidance is mostly implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_statusGet API statusARead-onlyIdempotentInspect
Check whether the Pricewatcha public API is available. Returns health and discovery metadata. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| health | Yes | |
| base_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context about failure responses, detailing the structured error object fields, which goes beyond the annotations. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, then covers both success and failure outcomes. No extraneous information, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (zero parameters, read-only, idempotent) and an output schema exists (per context), the description covers the essential behavioral aspects including error handling. It is sufficiently complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100%. The description does not need to add parameter details, and the baseline for zero parameters is 4. The description is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks whether the Pricewatcha public API is available, with a specific verb and resource. It distinguishes from sibling tools like get_job_status or search_products by focusing on API health.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking API availability but does not explicitly specify when to use or avoid this tool compared to alternatives. There is no mention of prerequisites or exclusions, leaving the agent to infer based on tool name and purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statusGet job statusARead-onlyIdempotentInspect
Poll an async tracking job by job_id. Returns status (queued, running, completed, or failed). On completion, product is populated; on scrape failure, error is populated (HTTP 200 job lookup — not a transport error). On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job ID from track_product |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| job_id | Yes | |
| status | Yes | |
| product | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent), it clarifies that HTTP 200 indicates job lookup success, not a transport error, and details the error object structure on failure. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no filler. Front-loaded with core purpose, immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers all necessary states (statuses, populated fields on completion/failure) and error details, making it complete for a polling tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes job_id with 100% coverage; description adds extra context that job_id comes from track_product, which aids understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('Poll') and resource ('async tracking job by job_id'). It lists exact statuses and outcomes, clearly distinguishing from siblings like get_product or get_api_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage after initiating a tracking job (job_id from track_product) and explains behavior for completion and failure, but does not explicitly exclude use cases or mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_alertGet price alertARead-onlyIdempotentInspect
Get one price alert by alert_id. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/en/developers#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Pricewatcha API key (pwk_live_...) | |
| alert_id | Yes | Alert ID from create_price_alert or list_price_alerts |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| alert_id | Yes | |
| currency | Yes | |
| is_active | Yes | |
| created_at | Yes | |
| product_id | Yes | |
| updated_at | Yes | |
| webhook_url | No | |
| notify_email | Yes | |
| notify_on_drop | Yes | |
| notify_on_rise | Yes | |
| last_triggered_at | No | |
| max_threshold_price | No | |
| min_threshold_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail beyond the annotations by documenting the structured error object that is returned on failure, including fields for error codes, HTTP status, and retry recommendations. This is genuinely helpful information for agents handling failures, and there is no contradiction with the annotation-driven hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is immediately front-loaded with the tool's core purpose, then provides the required key and failure contract in two sentences without redundancy. Every clause contributes useful information, and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, full schema coverage, and presence of an output schema, the description supplies the important pieces that are not present elsewhere: the API key requirements and the detailed error response structure. An AI agent does not have to guess about the failure mode or required keys.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already explains both api_key and alert_id completely, including alert_id provenance from create_price_alert or list_price_alerts. The description does not add meaningful parameter-level information beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get one price alert'), a specific resource ('price alert'), and the exact identifying parameter ('alert_id'). The word 'one' implicitly distinguishing from list_price_alerts and the clarity of scope make it a clear, purpose-defining statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives us context: you need an API key and an alert_id, so usage is implicitly scoped to retrieving a single alert by ID. However, no explicit guidance is given about when to prefer this vs alternatives like list_price_alerts to get multiple alerts or get an ID for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_historyGet price historyARead-onlyIdempotentInspect
Get historical prices, aggregates (low/high/average), trend, and data points for a product. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Public product ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| trend | No | |
| preview | No | |
| currency | Yes | |
| product_id | Yes | |
| data_points | Yes | |
| average_price | No | |
| current_price | No | |
| historical_low | No | |
| historical_high | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds valuable context about structured error objects on failure and mentions return components (aggregates, trend), going beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence covers purpose and return, second covers error handling. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity, annotations, and output schema, the description adequately covers purpose and key behaviors. However, it omits potential constraints like date range limits or pagination, which could be relevant.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with 'Public product ID' for product_id. The description does not add any additional meaning to the parameter 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'historical prices' for a product, specifying return types (aggregates, trend, data points). It naturally distinguishes from siblings like get_product or search_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving price history but lacks explicit guidance on when to use this tool versus alternatives (e.g., get_product) or any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productGet productARead-onlyIdempotentInspect
Get structured product price intelligence by product_id (e.g. demo_iphone_15_pro or prod_xxx from a completed job). On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes | Public product ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| shop | Yes | |
| status | No | |
| preview | No | |
| currency | Yes | |
| product_id | Yes | |
| product_url | No | |
| current_price | No | |
| last_checked_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds transparency by detailing the structured error object returned on failure, including fields like error.code and error.retry_after_seconds. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundant words. The main purpose is front-loaded, and the error information is efficiently appended. Every sentence contributes meaningfully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter, rich annotations, and an output schema (mentioned but not shown), the description covers the essential: what it retrieves, how to specify the product, and error handling. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for product_id. The description adds value by giving example IDs and linking them to completed jobs, which provides context beyond the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to get structured product price intelligence by product_id. It provides specific examples of valid IDs (demo_iphone_15_pro, prod_xxx) and distinguishes itself from siblings that handle API status, job status, price history, search, or tracking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying that product IDs come from completed jobs and providing example IDs. However, it does not explicitly state when to use this tool over siblings or 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.
list_price_alertsList price alertsARead-onlyIdempotentInspect
List your price alerts. Optionally filter by product_id. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/en/developers#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Pricewatcha API key (pwk_live_...) | |
| product_id | No | Optional public product ID filter |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| alerts | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds useful behavior beyond those annotations by explaining the API key requirement and detailing the structured error fields returned on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description starts with the core purpose and then adds filter, auth, and error details. The error field enumeration is verbose but justified because it describes a non-obvious structured error behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only listing tool with a full output schema, the description is sufficiently complete: it covers purpose, optional filtering, authentication source, and failure behavior. No critical details for tool selection or invocation are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents api_key and product_id. The description only restates the optional product_id filter and the API key requirement without adding new semantic detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and resource: 'List your price alerts' with an optional product_id filter. However, it does not explicitly distinguish itself from the sibling get_price_alert, so the differentiation is only implicit in the word 'list.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool does but not when to prefer it over alternatives such as get_price_alert, which likely retrieves a single alert. The optional filter hint gives some context, but there is no when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch productsARead-onlyIdempotentInspect
Searches the Pricewatcha product catalog by keyword (token AND; word order does not matter). Supports minus-prefixed exclude terms: e.g. "iPhone 15 -cover -case" returns devices only. Returns product-level data only — not user accounts or alert settings. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search keywords (token AND). Supports minus-prefixed exclude terms: e.g. "iPhone 15 -cover -case" |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | Yes | |
| query | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, and non-destructive hints, so the description adds value by explaining exact query behavior: token AND, irrelevant word order, and minus-prefixed exclusions. It also documents the exact failure response shape, which is useful operational behavior not captured by the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, all of which are informative and non-redundant. The primary action is front-loaded, key query semantics are compactly explained, and the error object detail is concrete without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only one input parameter, full schema coverage, output schema presence, and safety/caching hints already provided by annotations, the description fills the remaining gaps: search semantics, scope of results, and structured failure mode. Nothing essential is missing for an agent to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the query parameter 100%, so the description is not strictly required to add parameter info. It does add meaningful behavior beyond the schema by explaining word order, AND semantics, and exclude-term syntax, which helps the agent formulate a properly structured query.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Searches the Pricewatcha product catalog by keyword.' It also distinguishes this tool from siblings by clarifying that it returns product-level data only, not user accounts or alert settings, and explains the query semantics. This is a clear and non-tautological statement of what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes clear it is for keyword-based product catalog search and explicitly excludes user accounts and alert settings, giving a when-not-to-use signal. However, it does not explicitly name alternative sibling tools (e.g., use get_product for a direct product lookup), so the guidance is helpful but not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_productTrack productAInspect
Submit a public product URL for price tracking. Waits up to ~25s server-side; fast shops return status "completed" with product in one call. Slow jobs return status "running" with job_id — poll get_job_status. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public product page URL from a supported shop |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| error | No | |
| job_id | Yes | |
| status | Yes | |
| product | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (which show destructiveHint=false, etc.), the description reveals key behavioral traits: server-side wait time, possible response statuses, the need for polling, and the full error object structure. This is comprehensive and alerts the agent to potential long-running operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 4 sentences, each serving a distinct purpose: what the tool does, timing, possible outcomes, and error details. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's asynchronous nature, the description is complete: it explains the request-response cycle, how to handle both fast and slow cases, and the error contract. No missing information given that an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameter (url with description), so the description adds no further parameter semantics. It simply restates 'public product URL' without additional format or usage constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Submit a public product URL for price tracking.' It distinguishes itself from sibling tools like get_job_status by explaining when to use each (e.g., poll get_job_status for slow jobs).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: it explains the expected behavior (waits up to ~25s), how to handle fast vs. slow responses (immediate completion vs. polling get_job_status), and what to do on failure (structured error object with retry details).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_price_alertUpdate price alertAIdempotentInspect
Update a price alert. You can switch to threshold-free notify_on_drop / notify_on_rise, change thresholds, or toggle is_active. At least one setting must remain. Requires a Pricewatcha API key (pwk_live_...) from https://pricewatcha.com/en/developers#api-keys. On failure, returns a structured error object with fields error.code, error.message, error.http_status, error.retry_recommended, and error.retry_after_seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| api_key | Yes | Pricewatcha API key (pwk_live_...) | |
| alert_id | Yes | Alert ID to update | |
| is_active | No | ||
| webhook_url | No | ||
| notify_email | No | ||
| notify_on_drop | No | Notify on any price drop. No threshold required. | |
| notify_on_rise | No | Notify on any price increase. No threshold required. | |
| max_threshold_price | No | Max threshold, or null to clear. | |
| min_threshold_price | No | Min threshold, or null to clear. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| alert_id | Yes | |
| currency | Yes | |
| is_active | Yes | |
| created_at | Yes | |
| product_id | Yes | |
| updated_at | Yes | |
| webhook_url | No | |
| notify_email | Yes | |
| notify_on_drop | Yes | |
| notify_on_rise | Yes | |
| last_triggered_at | No | |
| max_threshold_price | No | |
| min_threshold_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not contradict the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false); it adds meaningful behavior: updates require at least one setting to remain, calls require a Pricewatcha API key with a linked developer URL, and failures return a structured error object with specific fields. This goes well beyond the structured annotations and is genuinely useful for an agent invoking the tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: 'Update a price alert' appears first, followed by the specific behaviors, the invariant, and then auth/error details. Every sentence contributes concrete information; there is no repetition of schema field definitions or boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 10 parameters, a mutation operation, an output schema, and annotations, the description covers the key non-obvious aspects: allowed operation, the 'at least one setting must remain' constraint, API key authentication, and the exact error object shape. Success return behavior is not described but the presence of an output schema makes that acceptable. This is a complete update-tool description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds important semantic meaning not obvious from the schema: notify_on_drop and notify_on_rise are threshold-free booleans, thresholds can be updated, and is_active can be toggled. It also clarifies that an update must leave at least one setting. With 60% schema coverage, this compensation is valuable, though a few optional parameters like webhook_url and notify_email are not described further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the exact action and resource: 'Update a price alert.' It then enumerates the supported mutation types — switching to threshold-free notify_on_drop/notify_on_rise, changing thresholds, and toggling is_active — which makes the tool clearly distinguishable from create_price_alert, get_price_alert, list_price_alerts, and delete_price_alert.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this tool is for updating an existing alert and lists the kinds of allowed changes, so an agent can match it to an update intent. It does not explicitly name sibling tools as alternatives or state 'for creation use create_price_alert', although the constraint 'At least one setting must remain' provides a useful boundary. The context is clear enough, but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Track price drops, stock-outs, restocks, and new/removed products across Shopify stores.
Real-time Amazon prices, product search, 90-day history, AI forecasts, and price drop alerts.
Compare prices across Swiss and European shops — barcode (GTIN) lookup and daily price history.
Create AI-monitored web alerts from plain English — just say "Alert me when..."
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).15MIT- FlicenseNot gradedqualityCmaintenanceMonitors and analyzes product prices across major e-commerce platforms (Taobao, JD, PDD, 1688, Amazon) with tools for price alerts, competitor comparison, market trends, and deal detection.
- AlicenseNot gradedqualityDmaintenanceAPI-first website change detection with native MCP supportMIT
- AlicenseAqualityAmaintenanceReal Amazon (US, UK, DE, CA, AU) & Walmart shopping data for AI assistants: ranked product shortlists, current prices, live stock, real ratings, and price/BSR history from a 17M+ product warehouse. Free hosted endpoint, no signup — 30 queries a day.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool clearly maps to a distinct resource and action: price alert CRUD verbs (create/get/list/update/delete) are unambiguous, and get_api_status vs get_job_status are separated by scope (service health vs async job polling). track_product, search_products, get_product, and get_price_history each address a different part of the product workflow with no meaningful overlap.
All 11 tools follow a consistent verb_noun snake_case pattern: create_price_alert, get_price_history, track_product, list_price_alerts, and so on. Verbs are precise and nouns are stable across the set, making the API surface predictable.
At 11 tools, the server is well-scoped for its purpose: alert management, product search, price history, tracking, and status checks each earn their place. No tool feels redundant or excessive for a price-intelligence domain.
The price alert lifecycle is fully covered with create/get/list/update/delete, and product search/tracking/history are solid. A minor gap is the lack of a way to list or stop all tracked products/jobs besides polling a known job_id, but this can be worked around and core workflows are complete.