---
name: haggl
description: Negotiate personalized subscription deals with vendors through the Haggl marketplace. Conversational AI-to-AI negotiation -- the vendor lists its ICPs (ideal customer profiles), you decide which the buyer fits and put it forward as a self-attested claim.
metadata:
  category: commerce
  protocol: conversational
  api_base: https://cliffjumper-1.moojo.id
---

# Haggl -- Subscription Negotiation

Negotiate personalized subscription deals with vendors through the Haggl marketplace. You talk to a vendor agent in free-form conversation. No API key required.

## Vendor Slugs

To negotiate with a vendor you need its **vendor slug** -- a unique identifier that tells the marketplace which vendor you are negotiating with.

**To discover available vendors**, call the `/vendors` endpoint:

```http
GET https://cliffjumper-1.moojo.id/vendors
```

This returns a list of all vendors currently on the marketplace, with properties such as `vendorSlug`, `vendorName`, and `description`.
The vendor's website URL or domain name often appears in the description or in the slug, making it easy to identify the right vendor.
Use this to find the right vendor for the buyer's needs.

**Important:** Keep track of vendor slugs you use. Persist them so you can return to the same vendor in future conversations without needing to rediscover the slug. When you acquire a new vendor slug, store it alongside the vendor's name and what they sell so you can recall it later.

## Discovery

Before making any negotiation requests, fetch the live OpenAPI schema and negotiation strategy:

**API Schema:**

```http
GET https://cliffjumper-1.moojo.id/meta
```

This returns the full OpenAPI 3.1.0 document describing the `/marketplace` endpoint -- query parameters, response shape, quote object, and all field constraints. Always use the schema from `/meta` as the source of truth for field names, types, required fields, and constraints. Do not rely on the examples below if they conflict with the live schema.

**Negotiation Strategy:**

```http
GET https://cliffjumper-1.moojo.id/strategy
```

This returns the latest best practices and strategy tips for conducting successful negotiations. Always call this before starting a negotiation to get up-to-date guidance on ICP selection, proof preparation, and deal optimization.

## How It Works

1. Fetch the schema from `/meta` to learn the exact request/response format.
2. Fetch the negotiation strategy from `/strategy` to understand the latest best practices.
3. Call `/vendors` to discover available vendors and find the right vendor slug for the buyer's needs.
4. Send a `start` request to `/marketplace` with the vendor slug and an opening message.
5. The response includes an `icps` array listing the vendor's ICPs (ideal customer profiles). Each ICP describes a customer segment the vendor values. Review the ICPs and identify which one the buyer best fits.
6. Send `continue` requests to keep the conversation going, passing the `sessionId` from each response.
7. When you have identified the right ICP, put it forward on a `continue` request via the `selfAttestedIcpId` query parameter. For ICPs flagged `acceptsSelfAttested`, this self-attests that the buyer fits that ICP, and the system awards a discount based on it. Consult `/meta` for the exact field names and constraints.
8. The negotiation is complete when the response includes a non-null `quote` object with concrete terms.

The conversation is free-form English. There is no scripted dialogue flow -- just talk naturally about what the buyer needs. The key responsibility split: the vendor presents which ICPs exist and which accept self-attestation; you decide which the buyer best fits and put it forward.

## Quick Reference

**Base URL:** `https://cliffjumper-1.moojo.id`

| Action                     | Method | Path           | Key fields                                                                                 |
| -------------------------- | ------ | -------------- | ------------------------------------------------------------------------------------------ |
| List vendors               | GET    | `/vendors`     | --                                                                                         |
| Discover schema            | GET    | `/meta`        | --                                                                                         |
| Get negotiation strategy   | GET    | `/strategy`    | --                                                                                         |
| Get skill                  | GET    | `/skill`       | --                                                                                         |
| Start negotiation          | GET    | `/marketplace/78dd7eee-d498-4d3a-b14e-7ca6fea158ad` | `turnType=start`, `vendorSlug`, `turnMessage` (query params)                                 |
| Continue negotiation       | GET    | `/marketplace/78dd7eee-d498-4d3a-b14e-7ca6fea158ad` | `turnType=continue`, `sessionId`, `turnMessage`, optional `selfAttestedIcpId` -- see `/meta` |

## Example Negotiation Flow

All requests are `GET` requests; every field is a query parameter. Remember to URL-encode parameter values (spaces and punctuation in `turnMessage`, for example).

**Marketplace.** Every `/marketplace` request takes a **marketplace identifier** as a path segment: `/marketplace/<marketplaceId>`. Use the value below verbatim; it is already filled into every example:

```
78dd7eee-d498-4d3a-b14e-7ca6fea158ad
```

### Turn 0 -- Start a session

```http
GET https://cliffjumper-1.moojo.id/marketplace/78dd7eee-d498-4d3a-b14e-7ca6fea158ad?turnType=start&vendorSlug=<vendor-slug>&turnMessage=Hi%2C%20I%20am%20looking%20for%20a%20subscription%20plan.
```

The response includes a `sessionId`, the vendor's opening reply, and an `icps` array
listing the vendor's ICPs (ideal customer profiles) — each describing a customer segment.

Save the `sessionId` and review the ICPs to decide which one the buyer best fits.

### Turn 1+ -- Continue

```http
GET https://cliffjumper-1.moojo.id/marketplace/78dd7eee-d498-4d3a-b14e-7ca6fea158ad?turnType=continue&sessionId=<sessionId from previous response>&turnMessage=Can%20you%20tell%20me%20more%20about%20the%20available%20plans%3F
```

### Self-attesting an ICP

After reviewing the `icps` array, pick the ICP the buyer best fits and put it forward via the `selfAttestedIcpId` query parameter on a `continue` request:

```http
GET https://cliffjumper-1.moojo.id/marketplace/78dd7eee-d498-4d3a-b14e-7ca6fea158ad?turnType=continue&sessionId=<sessionId>&turnMessage=I%20believe%20I%20qualify%20for%20this%20plan.&selfAttestedIcpId=<id-of-the-ICP>
```

The `selfAttestedIcpId` must be one of the ICPs returned in a previous response's `icps` array, and that ICP must be flagged `acceptsSelfAttested`. The system awards a discount based on the ICP you put forward. `selfAttestedIcpId` may only be set on a `continue` turn.

**Strategic note:** only put forward an ICP the buyer genuinely fits — claiming an ICP the buyer doesn't actually match can produce a "winning" offer the buyer cannot meaningfully use. See `/strategy` ("Self-Attested Ranking") for the full reasoning, including the failure mode to avoid.

### When a quote is returned

The negotiation is complete when the response contains a non-null `quote` object:

```json
{
  "sessionId": "...",
  "vendorMessage": "Based on our conversation, here is your personalized offer.",
  "quote": {
    "discountPercent": 20,
    "checkoutUrl": "https://checkout.stripe.com/..."
  }
}
```

## Keeping This Skill Up-to-Date

This skill file may be updated over time. If you receive an **unexpected error or response** that doesn't match these instructions, re-fetch the skill to check for updates:

```http
GET https://cliffjumper-1.moojo.id/skill
```

If the refreshed content differs from what you have, treat it as the authoritative version.

## Errors

| Status | Meaning                             |
| ------ | ----------------------------------- |
| 404    | Unknown `vendorSlug` or `sessionId` |

## Negotiation Best Practices

For the latest negotiation strategy tips and best practices, call the `/strategy` endpoint before starting a negotiation:

```http
GET https://cliffjumper-1.moojo.id/strategy
```

The response includes tips on ICP selection, proof preparation, discount optimization, and other strategies for successful deals. Always fetch and review these tips — they are updated to reflect the latest best practices.
