A shopping agent needs four things: a way to search, a way to narrow to one exact product, a way to quote it, and a way to pay. This walkthrough shows how to build an AI shopping agent with JENNi's MCP server. You can do it in an afternoon.
The examples show tool-call arguments as JSON. Responses are described by field name, so check the real output on your own connection.
1. Connect to the MCP endpoint
JENNi's server speaks Model Context Protocol and is open to any agent. The endpoint is:
https://shop.jennipro.com/mcpAdd it to your agent's MCP client configuration. Once connected, the agent can list the available tools:
search_catalogget_productget_buying_optionsstart_checkoutcreate_checkout,update_checkout,complete_checkoutget_order_status
A good first test is just to confirm that list appears. If it does, you're connected.
2. Search and narrow to one product
search_catalog takes a query and a 5-digit US ZIP. You can pass a market instead of a ZIP.
{
"query": "<what the shopper asked for>",
"zip": "<5-digit US ZIP>"
}A few behaviors to design around:
- Local delivery items are listed first, then ship-to-home fills in.
- Results come in pages of 20.
- Only in-stock items appear in search.
- Sized goods are often listed one size per product. Put the size in the query, for example the product name followed by the size the shopper wants.
Your agent's job here is to narrow. If the shopper's request is broad, show a short list and ask which one. If it's specific, pick the matching result. Either way you end with one product and its product_id.
Call get_product with that product when you need to confirm product facts before moving on, such as checking that the item is the one the shopper meant.
3. Get buying options
Now ask what it takes to get that product to that shopper. get_buying_options takes four arguments.
{
"product_id": "<product_id from search_catalog>",
"zip": "<5-digit US ZIP>",
"quantity": 1,
"fulfillment_mode": "local_delivery"
}fulfillment_mode is either local_delivery or ship_to_home. Call it once for each mode you want to offer.
The response includes availability, price, delivery fee, delivery promise and the total before tax. Show those to the shopper in plain words. Tax is added at checkout, so say that too.
One rule to build in from the start: treat same day as verified only when the delivery promise says "Get it today." If it doesn't, don't say today. Offer ship_to_home and describe that quote instead.
Every offer reads "Delivered by JENNi," and no store names appear. JENNi is the seller on the order, so don't build any copy that points the shopper to a store.
4. Create the checkout and hand off for payment
You have two ways to finish, and you can support both.
Option A: hosted checkout page. Call start_checkout for the chosen product. It returns a hosted checkout_url. Give that link to the shopper. They review delivery, tax and total, then pay on the secure page, which re-verifies current price and availability. start_checkout creates no order and no charge by itself. This is the simplest path and the one to build first.
Option B: checkout in chat. Call create_checkout, then update_checkout as details change, then complete_checkout. Nothing is charged until complete_checkout, and you should call it only after the shopper has seen and approved the total.
Payment in option B is a one-time shared payment token that starts with spt_. It's created for this one purchase, and your agent passes it to complete_checkout as payment_token. Your agent never needs a card number, and card fields are refused in code, so there's nothing to strip out of your logs.
Checkout refuses stale prices. If the price or availability has moved since the quote, expect a refusal, and tell the shopper plainly.
5. Check on the order
After purchase, the shopper's JENNi order page holds a private order token. With that token, get_order_status returns the order status, the ETA when known, courier tracking and whether the card was charged.
The statuses are placed, processing, out_for_delivery, delivered, needs_attention and cancelled. Map each to a plain sentence for the shopper. For needs_attention, say something is being looked at and point them to their order page.
What it takes to build an AI shopping agent
Your agent now searches near a ZIP, narrows to one product, quotes honestly, hands off to a secure payment step and follows the order after. That's a complete loop, with no payment details in your conversation and no delivery promise your agent can't back up.
Ready to try it? Connect your agent to https://shop.jennipro.com/mcp and run the loop for a product near you.