AI agents
MCP server
The same catalogue, order and customer calls, as tools an AI agent can use directly over the Model Context Protocol. Nothing to wrap: connect, and the agent can answer “do you have this in blue, size L?” and place the order.
Connect
POSThttps://www.chatcom.in/api/v1/urbanchat/mcp
Transport- Streamable HTTP, stateless, JSON responses. Protocol 2025-06-18 and earlier.
Authentication- The company’s API key as
Authorization: Bearer ucik_…(orX-API-KEY). Same company, rate limit and refusals as the REST API. Sessions- None. GET and DELETE answer 405; every call is a POST.
Client configuration
For any MCP client that supports remote HTTP servers with headers:
{
"mcpServers": {
"urbanchat-ims": {
"type": "http",
"url": "https://www.chatcom.in/api/v1/urbanchat/mcp",
"headers": {
"Authorization": "Bearer ucik_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}Or from the command line, with Claude Code:
claude mcp add --transport http urbanchat-ims https://www.chatcom.in/api/v1/urbanchat/mcp \
--header "Authorization: Bearer ucik_xxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"To try the tools by hand, use the MCP Inspector and choose Streamable HTTP:
npx @modelcontextprotocol/inspectorTools
browse_catalogreadsearch,category,brand,in_stock,limit,offset. Products with options, variants, prices, stock and photos — asGET /catalog/products.get_product_detailsreadid: a product id or SKU, or a variant sku or barcode. Every variant and photo — asGET /catalog/products/{id}.list_categoriesread- Categories and brands with product counts.
find_customerreadphone,recent_orders. AsGET /customers.get_orderreadreference,phone. AsGET /orders/{reference}; pass the phone whenever answering a customer.place_orderwrite- The
POST /ordersbody. Creates a confirmed order and reserves stock. Idempotent onexternal_reference. The only tool that writes. search_products, get_productread- The v1 flat search, kept for agents built against it. Prefer browse_catalog.
Results are JSON text content, in exactly the REST response shapes. A tool that cannot answer returns isError: true with the REST error object, e.g. { "error": { "code": "insufficient_stock", … } }.
Prompting an agent well
- Ask the customer for each option the product lists in
options, then order the variant whoseattributesmatch. Order by the variant’ssku. - Check the variant’s
availablebefore promising anything. If an order comes backinsufficient_stock, offer what is available. - Collect a delivery address with its PIN code and whether the customer is paying cash on delivery, and pass them as
delivery_addressandpayment, so the parcel ships without anyone retyping it. - Give every order an
external_referencederived from the conversation, and reuse it on a retry. - Read the order back from
place_order’s result — it includes the lines, total and address — before confirming to the customer. - Pass the customer’s phone to
get_order, always.