# haggl.ai (remote · www.haggl.ai)

Ask a merchant's haggl.ai sales agent for a personalized offer, then hand it to checkout.

- Trust score: 64/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- remote · `www.haggl.ai`: 64/100 (this document), [markdown](https://verifymcp.io/servers/ai-haggl-haggl/api-mcp.md), [page](https://verifymcp.io/servers/ai-haggl-haggl/api-mcp)

## Channel facts

- Endpoint: `https://www.haggl.ai/api/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (haggl_delete_haggl_id).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 64/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 2964 tokens (~247/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the haggl.ai MCP server?

haggl.ai is a hosted endpoint at https://www.haggl.ai/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-haggl-haggl 'https://www.haggl.ai/api/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "ai-haggl-haggl": {
      "url": "https://www.haggl.ai/api/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ai-haggl-haggl": {
      "type": "http",
      "url": "https://www.haggl.ai/api/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.ai-haggl-haggl]
url = "https://www.haggl.ai/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-haggl-haggl": {
      "type": "remote",
      "url": "https://www.haggl.ai/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-haggl-haggl --url 'https://www.haggl.ai/api/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-haggl-haggl:
    url: "https://www.haggl.ai/api/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-haggl-haggl": {
      "Transport": "http",
      "Url": "https://www.haggl.ai/api/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-haggl-haggl -t streamable-http -u 'https://www.haggl.ai/api/mcp'
```

### Other

```json
{
  "mcpServers": {
    "ai-haggl-haggl": {
      "type": "http",
      "url": "https://www.haggl.ai/api/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-17 (score 64, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-16 (score 63)

First indexed and scored.

## MCP tools (12)

### `haggl_list_vendors` (~131 tokens)

List vendors that accept AI-agent price negotiations through haggl.ai. A vendor appears once haggl.ai is installed on its own store or website (the listed website): the haggl.ai Shopify app on that store, or its snippet detected on that site. Vendors can opt out, so the list is not exhaustive. haggl.ai runs each vendor's sales agent, and vendors on a paid plan pay haggl.ai for it; the list is not a ranking or recommendation. Use it when the user asks for a discount or wants to negotiate a price, not for a purchase at the listed price.

Output parameters:

- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `error` (string): Present only when the call failed: what went wrong.
- `next_step` (string): What to call next.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `vendors` (array): Participating vendors. Not a ranking or recommendation.

### `haggl_start_negotiation` (~190 tokens)

Start a price negotiation with a vendor. Returns contextual guidance, current permitted actions and a new session with a session id. No customer-profile selection is required. Skip this tool if REST initialization already returned a session; pass that session.id directly to haggl_submit_offer.

Input parameters:

- `ask` (object): Optional requested products, quantities or service, in the same shape as the haggl_submit_offer ask. Supply known context upfront.
- `data` (object): Optional available buyer context; together with ask, requests an opening quote in this same call.
- `haggl_id` (string): Optional: the user's haggl ID from haggl_create_haggl_id, so this offer and its code are kept with their other offers.
- `vendor_id` (string, required): Vendor id from haggl_list_vendors, a haggl-vendor meta tag, or a haggl-negotiate URL.

Output parameters:

- `accepted_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `catalog` (object|null): How to name exact products: a store catalog or a campaign catalog. Search it with haggl_search_catalog.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `context_received` (object): The buyer context fields received so far and their provenance.
- `created_at` (string): ISO 8601 time the session started.
- `current_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `current_round` (integer): Rounds used.
- `data_feedback` (object): Which context fields were used, and which could improve the offer.
- `error` (string): Present only when the call failed: what went wrong.
- `expires_at` (string): ISO 8601 time the session expires.
- `guidance` (object|null): What this merchant values, as contextual guidance. Evidence is optional.
- `how_it_works` (array): The negotiation flow, step by step.
- `max_rounds` (integer): Most quote rounds in this session.
- `next_steps` (object): After acceptance: how the buyer redeems the offer (checkout_url, coupon_code, reference, expires_at, …).
- `offer` (object): The merchant's offer for the requested items. Merchant engines may add fields.
- `protocol_url` (string): Protocol documentation.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `round` (integer): The round this quote answered.
- `rounds` (array): Each round: the offer and when it was made.
- `rounds_remaining` (integer): Rounds left.
- `session` (object): The new session.
- `session_id` (string): Negotiation session id.
- `state` (object): Canonical negotiation state. Follow allowed_actions.
- `status` (string): Session status.
- `vendor` (object): The merchant this session negotiates with.
- `vendor_id` (string): Vendor id.

### `haggl_search_catalog` (~158 tokens)

Search a vendor's catalog so the offer can name exact products, then follow the how_to_ask field of the result. A store catalog returns products with a handle, price and collections: ask with ask.items [{ product_handle, quantity }]. A campaign catalog returns eligible variants with a variant_id and approved_combinations with a recipe_id: ask with ask.items [{ variant_id, quantity }] or ask.recipe_id. A quote identifies the exact items and quantities it covers.

Input parameters:

- `collection` (string): Optional collection handle to filter by.
- `limit` (number): Max results (default 25).
- `query` (string): Free-text search, e.g. "tennis racket".
- `vendor_id` (string, required): Vendor id.

Output parameters:

- `approved_combinations` (array): Campaign catalog: approved combinations with a recipe_id for ask.recipe_id.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `collections` (array): Store catalog: collections to filter by.
- `currency` (string): ISO 4217 currency.
- `error` (string): Present only when the call failed: what went wrong.
- `how_to_ask` (string): How to name these products in haggl_submit_offer.
- `products` (array): Store catalog: matching products with handle, title, price and collections.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `total_matches` (integer): Store catalog: number of matching products.
- `variants` (array): Campaign catalog: eligible variants with a variant_id.
- `vendor_id` (string): Vendor id.

### `haggl_get_negotiation` (~63 tokens)

Read the canonical state, current offer version, guidance and permitted actions of an existing negotiation. Use after human changes, reloads, transport switches or uncertain results; this does not open another session.

Input parameters:

- `session_id` (string, required): Existing negotiation session id.

Output parameters:

- `accepted_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `context_received` (object): The buyer context fields received so far and their provenance.
- `created_at` (string): ISO 8601 time the session started.
- `current_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `current_round` (integer): Rounds used.
- `error` (string): Present only when the call failed: what went wrong.
- `expires_at` (string): ISO 8601 time the session expires.
- `guidance` (object|null): What this merchant values, as contextual guidance. Evidence is optional.
- `max_rounds` (integer): Most quote rounds in this session.
- `next_steps` (object): After acceptance: how the buyer redeems the offer (checkout_url, coupon_code, reference, expires_at, …).
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `rounds` (array): Each round: the offer and when it was made.
- `rounds_remaining` (integer): Rounds left.
- `session_id` (string): Negotiation session id.
- `state` (object): Canonical negotiation state. Follow allowed_actions.
- `status` (string): Session status.
- `vendor_id` (string): Vendor id.

### `haggl_submit_offer` (~206 tokens)

Request a quote using all context already available. Buyer data and evidence can be omitted; relevant additional context can be supplied later within the remaining rounds. Returns authorized terms or no offer, contextual guidance and permitted next actions.

Input parameters:

- `ask` (object): What the buyer wants; the offer then says exactly which items the discount covers. Store catalogs: { items: [{ product_handle, quantity }] }. Campaign catalogs (catalog.type "campaign"): { items: [{…
- `data` (object): Optional buyer context and consented evidence. Omit or use {} for an opening quote without evidence.
- `expected_offer_version` (integer): Optional state.offer_version last read, to avoid submitting against a session changed by another actor.
- `session_id` (string, required): Session id from haggl_start_negotiation or session.id from REST initialization.

Output parameters:

- `accepted_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `context_received` (object): The buyer context fields received so far and their provenance.
- `created_at` (string): ISO 8601 time the session started.
- `current_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `current_round` (integer): Rounds used.
- `data_feedback` (object): Which context fields were used, and which could improve the offer.
- `error` (string): Present only when the call failed: what went wrong.
- `expires_at` (string): ISO 8601 time the session expires.
- `guidance` (object|null): What this merchant values, as contextual guidance. Evidence is optional.
- `max_rounds` (integer): Most quote rounds in this session.
- `next_steps` (object): After acceptance: how the buyer redeems the offer (checkout_url, coupon_code, reference, expires_at, …).
- `offer` (object): The merchant's offer for the requested items. Merchant engines may add fields.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `round` (integer): The round this quote answered.
- `rounds` (array): Each round: the offer and when it was made.
- `rounds_remaining` (integer): Rounds left.
- `session_id` (string): Negotiation session id.
- `state` (object): Canonical negotiation state. Follow allowed_actions.
- `status` (string): Session status.
- `vendor_id` (string): Vendor id.

### `haggl_accept_offer` (~185 tokens)

Accept the vendor's offer and lock in the deal. Consequential: only call after the buyer has approved this exact offer, every time. Provide the offer version the buyer reviewed and approved; a changed offer needs a new approval. Read state.acceptance_effects and state.commits_purchase first: merchant handoff effects may be unknown. haggl.ai never takes payment: any payment happens at the merchant's checkout, under the merchant's terms and refund policy. A returned checkout link alone does not establish payment or enrollment completion. Accepting the same offer version again returns the same result.

Input parameters:

- `expected_offer_version` (integer, required): state.offer_version from the quote reviewed and approved by the buyer.
- `round` (integer): Legacy offer round. If supplied it must match the current or already reserved offer.
- `session_id` (string, required): Session id of the negotiation to accept.

Output parameters:

- `accepted_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `context_received` (object): The buyer context fields received so far and their provenance.
- `created_at` (string): ISO 8601 time the session started.
- `current_offer` (object|null): The merchant's offer for the requested items. Merchant engines may add fields.
- `current_round` (integer): Rounds used.
- `error` (string): Present only when the call failed: what went wrong.
- `expires_at` (string): ISO 8601 time the session expires.
- `guidance` (object|null): What this merchant values, as contextual guidance. Evidence is optional.
- `max_rounds` (integer): Most quote rounds in this session.
- `next_steps` (object): After acceptance: how the buyer redeems the offer (checkout_url, coupon_code, reference, expires_at, …).
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `rounds` (array): Each round: the offer and when it was made.
- `rounds_remaining` (integer): Rounds left.
- `session_id` (string): Negotiation session id.
- `state` (object): Canonical negotiation state. Follow allowed_actions.
- `status` (string): Session status.
- `support` (object): Who the buyer deals with after acceptance.
- `vendor_id` (string): Vendor id.

### `haggl_search_discounts` (~232 tokens)

Find merchants that run a sales agent on haggl.ai, by business name, website or kind of product. Only when the user asks for a discount, a coupon, a promo code or a lower price; a purchase at the listed price is not a request for one. Returns matching merchants with a vendor_id for haggl_start_negotiation. Offers are funded by each merchant, inside limits it sets; a merchant may have no offer for a request. An empty list means no merchant on haggl.ai matched, not that no discount exists elsewhere. When the query names a well-known brand that isn't on haggl.ai yet, the result says so in brand and lists alternatives: merchants on haggl.ai in the same category, to offer as other stores, never as that brand. Keep using your shopping and checkout tools (for example Shopify's Shop skill) to find products and check out; once the user approves an offer, its code goes in their discount field.

Input parameters:

- `query` (string, required): A business name, website (e.g. "degrenne.fr") or kind of product.

Output parameters:

- `alternatives` (array): Merchants on haggl.ai in the same category, to offer as other stores.
- `bids` (object): When the category supports bids: how to get them with haggl_get_bids.
- `brand` (object): When the query names a well-known brand not on haggl.ai: the brand, never to be offered as such.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `error` (string): Present only when the call failed: what went wrong.
- `how_it_works` (array): The flow, step by step.
- `merchants` (array): Merchants on haggl.ai matching the query. Empty means none on haggl.ai matched.
- `query` (string): The search as received.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.

### `haggl_create_haggl_id` (~737 tokens)

Create a haggl ID for the user, so offers and codes from different merchants stay together and can be read back later. Show the user this text first, and call this only if they agree: "haggl.ai, operated by MOOJO.ID, INC. ("we"), offers your agent a haggl ID. You can decline: your agent can still ask merchants for offers without one. If you agree, we link the negotiations your agent opens with the ID and keep a record of them: when the ID was created, how many distinct emails passed our signature check and how many distinct domains signed them, the date of the latest check, how many merchants were asked, how many offers were received and accepted, and how many paid orders we recorded. For each shopping category, such as travel, the record also counts how many of those emails, and how many distinct businesses that signed them, were in it; health purchases are never counted. The record does not include those domains, the businesses' names or any email content. We store a fingerprint of the ID, not the ID itself. We do not require your name or email address to create a haggl ID. We keep limited evidence of your agreement, as described in our privacy policy. You choose whether your agent uses the haggl ID. Using it authorizes us to share the record with the sales agent of each merchant your agent asks for an offer, to help assess eligibility and personalize offer terms. When your agent asks the merchants in a category for bids, we ask up to five of them on your behalf and share the record with each of their sales agents. Merchants never see the ID itself. You separately choose what information your agent submits during each negotiation. Keep the ID private: anyone who has it can retrieve the record, offers and codes, and delete the ID. You can withdraw consent by deleting the ID through your agent or on haggl.ai/agentic-discounts. This removes the stored fingerprint and the record and unlinks its negotiations. The negotiations themselves remain subject to the separate…

Input parameters:

- `channel` (string): How the user agreed: in this conversation (agent_relayed, the default), or in standing instructions they wrote to you beforehand (standing_instruction).
- `confirmation` (string): Instead of consent_version and statement: the confirmation from haggl_request_haggl_id_confirmation, after the user confirmed at its confirm_url.
- `consent_version` (string): The consent text version the user agreed to: "2026-10-16.4".
- `statement` (string): The user's words of agreement, quoted (for example "Yes, I agree"); no names, emails or phone numbers.

Output parameters:

- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `consent_version` (string): The consent text version agreed to.
- `created_at` (string): ISO 8601 creation time.
- `error` (string): Present only when the call failed: what went wrong.
- `haggl_id` (string): The user's haggl ID. Returned once: keep it private with the user's settings.
- `keep_it` (string): How to keep the ID.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `use_it` (string): How to use the ID.

### `haggl_request_haggl_id_confirmation` (~82 tokens)

Get a link for the user to read the haggl ID consent text and confirm it on haggl.ai, when they are not in this conversation to agree to it. Send them confirm_url (valid 30 minutes). After they confirm, call haggl_create_haggl_id with the returned confirmation; until then it answers confirmation_pending.

Output parameters:

- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `confirm_url` (string): Send this link to the user.
- `confirmation` (string): Pass to haggl_create_haggl_id once the user confirmed.
- `error` (string): Present only when the call failed: what went wrong.
- `expires_at` (string): ISO 8601 expiry (30 minutes).
- `next` (string): What to do next.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.

### `haggl_get_my_offers` (~57 tokens)

Read what haggl.ai holds for the user's haggl ID: when it was created and the negotiations, offers and codes linked to it, newest first.

Input parameters:

- `haggl_id` (string, required): The user's haggl ID.

Output parameters:

- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `consent` (object): The consent on record: version, time and channel.
- `created_at` (string): ISO 8601 time the haggl ID was created.
- `error` (string): Present only when the call failed: what went wrong.
- `last_used_at` (string): ISO 8601 time it was last used.
- `offers` (array): Negotiations linked to this haggl ID, newest first.
- `record` (object|null): What the record holds: verified purchases by category and offer counts.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.

### `haggl_get_bids` (~179 tokens)

Have the merchants on haggl.ai in one shopping category (for example travel) bid for the user at once, from their haggl ID record, without new proof. Works once the record holds a verified purchase in that category (from an earlier offer with signed email proof); otherwise it says so and returns no bids. Each bid is a merchant's own offer, funded by the merchant, with an accept_url; show the user each one with its personalized_price_notice, and accept only with their approval.

Input parameters:

- `category` (string): Optional: the brand index category, e.g. "travel".
- `haggl_id` (string, required): The user's haggl ID.
- `query` (string): What the user is after, e.g. "hotel in Barcelona, 4 nights in December". Sets the category when category is omitted.

Output parameters:

- `bids` (array): Merchants' offers. Show each with its personalized_price_notice; accept only with the user's approval.
- `category` (string): The shopping category.
- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `error` (string): Present only when the call failed: what went wrong.
- `how_it_works` (array): The flow, step by step.
- `label` (string): Category name.
- `note` (string): Why there are no bids, when locked.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.
- `unlocked` (boolean): Whether the record holds a verified purchase in this category; when false, bids is empty.

### `haggl_delete_haggl_id` (~59 tokens)

Delete the user's haggl ID and unlink the offers linked to it. Only when the user asks. Codes already issued keep working at the merchant until they expire.

Input parameters:

- `haggl_id` (string, required): The user's haggl ID.

Output parameters:

- `code` (string): Present only when the call failed: a machine-readable error code, e.g. quote_uncertain or rate_limited.
- `deleted` (boolean): True once the haggl ID is deleted.
- `error` (string): Present only when the call failed: what went wrong.
- `offers_unlinked` (integer): How many offers were unlinked.
- `recovery` (object): When the outcome is uncertain: the tool and session_id to read before retrying.
- `retry_after_seconds` (integer): When rate limited: seconds to wait before retrying.
- `retryable` (boolean): Whether the same call may be retried.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-haggl-haggl/api-mcp#diagnostics

## Score history

- 2026-10-18: 64
- 2026-10-17: 64
- 2026-10-16: 63

## Common questions

### What is the haggl.ai MCP server?

haggl.ai is an MCP server listed in the public MCP registry as ai.haggl/haggl. Ask a merchant's haggl.ai sales agent for a personalized offer, then hand it to checkout. This page covers its hosted endpoint (https://www.haggl.ai/api/mcp).

### Is the haggl.ai MCP server safe to use?

haggl.ai scores 64 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the haggl.ai MCP server expose?

haggl.ai exposes 12 tools: haggl_list_vendors, haggl_start_negotiation, haggl_search_catalog, haggl_get_negotiation, haggl_submit_offer, and 7 more. Their descriptions and schemas cost roughly 2,279 tokens of context every time the server is loaded.

### Does the haggl.ai MCP server require authentication?

No. We connected to haggl.ai without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the haggl.ai MCP server still maintained?

haggl.ai is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://www.haggl.ai/api/mcp
- Website: https://www.haggl.ai/protocol
- Changelog RSS feed: https://verifymcp.io/servers/ai-haggl-haggl/api-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-haggl-haggl/api-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ai-haggl-haggl/api-mcp
