# Apps on the agent doors

> How what a merchant's installed apps add reaches AI agents buying over MCP, UCP and ACP.

Source: https://storeware.ai/docs/agents/apps

A merchant's installed apps add to what an AI agent sees and gets at their shop. Three kinds of contribution reach the agent doors, each from the release that shop approved.

## Checkout functions

[Checkout functions](https://storeware.ai/docs/build-apps/checkout-functions) run wherever a basket is priced: the shop's own checkout, ACP, UCP, MCP checkout, x402 and MPP. A function runs when a basket is created and each time it changes. Its answer is kept on the basket, so placing the order charges what the agent was shown.

| What the app does      | UCP                                                                               | ACP                                                       |
| ---------------------- | --------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Takes an amount off    | Each discount is its own entry in `discounts.applied`, titled with the app's name | Inside the one `discount` total                           |
| Changes delivery       | The changed options in the fulfilment choices                                     | The changed options in `fulfillment_options`              |
| Hides a payment method | Left out of the session's `payment_handlers`, and refused at complete             | Left out of the payment handlers, and refused at complete |
| Refuses the basket     | A `basket_refused` message on the line, with the app's name and reason            | An `invalid` message that `requires_buyer_input`          |

A refused basket is `needs_details` until it changes; x402 answers `409 basket_refused`. A function that fails or answers late is set aside, so a basket never fails because an app did. A function is told the channel, `web` or `agent`, so an app that answers by channel gives agents a different price.

## Knowledge

An app with [`[knowledge]`](https://storeware.ai/docs/build-apps/manifest) adds product attributes and links between products, merged into the shop's catalogue. What it adds reaches an agent through:

- search on every door: MCP `search_products`, UCP catalogue search and `search_catalog` over UCP's MCP binding, with what each product matched;
- [Ask](https://storeware.ai/docs/agents/ask), over REST, MCP and UCP;
- MCP `get_product`, in `attributes`, and `related_products`, with the app named in `asserted_by`.

It is not in the ACP product feed or in a UCP product record, which carry the shop's own fields.

## Tools

An app's `[[mcp.tools]]` are offered on the shop's [MCP server](https://storeware.ai/docs/agents/mcp), named `plugin_<app>_<tool>`, with the app named in each description. They are not on UCP's MCP binding, whose tools are the protocol's own.

Tools an app gives the merchant's own assistant are a separate list: see [Tools for the merchant's assistant](https://storeware.ai/docs/build-apps/assistant-tools).
