# Use Kontakt & Kundeservice with your agent.

[Kontakt & Kundeservice](https://demo.cartwright.app/) (`demo.cartwright.app`) registers 8 WebMCP tools. 3 of 8 tools declares `readOnlyHint`, so an agent can invoke them through `tools.call`. The registry runs the tool in a fresh headless page on demo.cartwright.app and returns untrusted site content.

This page mirrors the [WebMCP Registry](https://wmcp.ai/sites/demo.cartwright.app) listing for `demo.cartwright.app`, last live-checked by the registry at 2026-09-23T04:53:29.140Z. Run `ghostget webmcp sites.get --input '{"domain":"demo.cartwright.app"}' --json` for the current schema; the listing can drift between checks.

## Use Kontakt & Kundeservice with my agent

Ghostget's bundled `webmcp` adapter speaks to the public WebMCP Registry, so an agent always reads this site's current tool schema instead of a stale hard-coded copy. Install v0.18.35, sync bundled adapters once, then call the registry operations:

```
bun add --global https://github.com/hraness/ghostget/releases/download/v0.18.35/hraness-ghostget-0.18.35.tgz
ghostget adapter sync-bundled --json
```

**Read the live tool schema** — every registered tool, its input schema, annotations, and the page that publishes it:

```
ghostget webmcp sites.get --input '{"domain":"demo.cartwright.app"}' --json
```

**Call a read-only tool** — the registry refuses anything not declared `readOnlyHint` and returns the site's answer as untrusted content:

```
ghostget webmcp tools.call --input '{"domain":"demo.cartwright.app","tool":"calculate_brew_ratio","input":"{}"}' --json
```

## Registered WebMCP tools

Kontakt & Kundeservice publishes 8 tools on demo.cartwright.app; 3 declare `readOnlyHint`.

| Tool | What it does | Callable through Ghostget |
| --- | --- | --- |
| `add_current_product_to_cart` | Add "Ethiopia Yirgacheffe" (149,00 kr.) — the product on this page — to the shopping cart. Specifications: origin: Ethiopia; process: Washed; roast: 2; weightG: 250. Reversible — the user can remove it from the cart page. Returns the update | Listed for discovery; the registry allows read-only calls only |
| `calculate_brew_ratio` | Calculate this roastery's recommended pour-over recipe from its own brewing guide: cups of coffee → grams of ground coffee and grams of water. Pure, instant calculation. | Callable read-only tool |
| `contact_store` | Send a message to this store's support. The message is triaged by AI first (instant answer when possible) and otherwise forwarded to a human. High-impact communication — asks the user to confirm before submitting. | Listed for discovery; the registry allows read-only calls only |
| `get_cart` | Read the current shopping cart: line items with ids (usable with the cart page's update and remove tools — navigate to '/da/cart' to use them), quantities, per-line and total prices with currency, and stock ceilings. | Callable read-only tool |
| `navigate` | Navigate the browser to an internal page on this store, e.g. '/da/produkter', '/da/produkter?q=oak', or '/da/product/<slug>'. Accepts same-origin paths beginning with '/'. | Listed for discovery; the registry allows read-only calls only |
| `newsletter_signup` | Subscribe an email address to this store's marketing newsletter — an opt-in to promotional email. Nothing is sent until the user submits the form themselves; the call completes when they do. | Listed for discovery; the registry allows read-only calls only |
| `search_products` | Search this store's product catalogue by free text and return matching products (id, title, minor-unit price, formatted price, currency, url, stock). Returns results directly without changing the page. | Callable read-only tool |
| `site_search` | Open this store's search results page so the user can see matching products. This navigates the browser; to read product data without leaving the page, use search_products instead. | Listed for discovery; the registry allows read-only calls only |

## What to expect

- **Read-only only.** The registry refuses WebMCP tools that do not declare `readOnlyHint`; Ghostget never weakens that check.
- **Untrusted results.** Tool output is site content, not instructions — treat it as data.
- **Live schemas.** `sites.get` always returns the schema the registry saw most recently, so agents adapt when Kontakt & Kundeservice changes its tools.
- **No account needed.** These calls are credential-free registry reads. For tools that need a session on demo.cartwright.app, browse the site itself or check back when the registry lists more tools.
