The Model Context Protocol has moved from interesting to structural faster than most integration standards manage. Shopify ships MCP servers to every store; the major assistants can call tools on external systems; and a meaningful share of web traffic now arrives from something automated rather than someone browsing.
For anyone running a commerce platform or a SaaS product, this raises a practical question with a non-obvious answer: you already have an API — why does an agent need something different?
Why Your REST API Is Not Enough
A REST API is designed for a developer who reads documentation, understands your domain, and writes code that calls the right endpoints in the right order. An agent has none of those advantages. It has a tool list, a description of each tool, and one attempt to pick correctly.
The differences that matter:
- Discovery. An agent has to learn what your system can do at runtime, from the interface itself. Your OpenAPI spec describes endpoints; it does not describe intent.
- Granularity. REST APIs are resource-shaped: fetch the order, fetch the customer, fetch the line items, join them yourself. An agent wants one call that answers what is the status of this customer's most recent order — task-shaped, not resource-shaped.
- Ambiguity. A developer resolves the blue one, size medium by reading your variant model. An agent needs a tool that accepts that phrasing and does the resolution.
- Error handling. A
422with a validation object helps a developer. An agent needs an error that says what to do differently, in words. - Blast radius. A developer's mistake is caught in their test suite. An agent's mistake happens in production, on behalf of a customer, at speed.
An MCP server is not a wrapper around your API. It is a different interface, designed for a different consumer, that happens to sit on the same domain logic.
Design the Tools Around Jobs, Not Resources
The single biggest determinant of whether an agent uses your product well is how you name and scope the tools. Prefer few, well-described, task-shaped tools over a faithful mapping of your data model.
A commerce product's starting set usually looks like:
search_products— natural-language query in, ranked results with the attributes needed to choose between them out. Not a raw catalogue dump.get_product_details— everything needed to decide: variants, availability, delivery expectation, returns terms.check_availability— quantity and location, answered directly rather than inferred from a stock object.get_order_status— the question customers actually ask, answered in one call.start_return— a guarded write, subject to your real eligibility rules.get_policy— returns, shipping and warranty terms as text, so the agent quotes your policy rather than its impression of one.
Write the tool descriptions as though for a capable new colleague on their first day: what it does, when to use it, when not to, and what it will refuse. Those descriptions are the entire user manual the agent will ever read, and they do more for correctness than any amount of model quality.
Return refusals that teach. No product matched. Try a broader query, or call search_products with fewer attribute filters. is worth more than a 404, because the agent can act on it.
What Must Never Be a Tool
The exclusions matter more than the inclusions, because a tool you expose is a tool that will eventually be called in a way you did not anticipate.
- Anything touching payment instruments. Tokenise, delegate, and keep card data entirely outside the agent surface.
- Bulk data export. A tool that can return your whole catalogue or customer list is a scraping endpoint with better manners.
- Administrative operations. Price changes, inventory adjustments, user management. If it is in your admin, it is not in your MCP server.
- Anything without a per-tenant permission check, enforced server-side on every single call.
- Cross-customer queries. An agent acting for one customer must be structurally unable to see another's data — not merely unlikely to ask.
Treat every argument an agent sends as untrusted user input, because it is — it is derived from something a person typed. Prompt injection reaches you through tool arguments. Validate server-side exactly as you would for a public form.
Authentication, Permissions and Limits
This is where most implementations are weakest, because the interesting part is the tool design and the tedious part is everything else.
- Authenticate the agent, and separately establish who it acts for. These are two distinct facts, and conflating them is how cross-customer access happens.
- Scope credentials narrowly. An agent doing product discovery does not need order-history access. Issue per-purpose credentials and expire them.
- Rate limit per tenant and per tool. Agents retry enthusiastically. A limit that is generous for a human is trivially exceeded by a loop.
- Log every call with its arguments and outcome. When something goes wrong you will need to reconstruct exactly what was asked and what was returned. This log is also your first line of abuse detection.
- Version your tools. Changing a tool's behaviour silently breaks agents that have learned to rely on it, and unlike a developer integration, nobody will read your changelog.
- Give write tools idempotency keys. An agent that times out and retries must not create two returns.
The Data Underneath Decides Everything
An MCP server exposes your product data. If that data is thin, inconsistent or wrong, the agent will surface it faithfully — confidently, at speed, to a customer.
Before building the interface, be honest about whether the catalogue behind it can support it. Attribute completeness, consistent taxonomy, accurate stock and delivery data, and a returns policy that exists as structured text rather than as a PDF are all prerequisites. We wrote up the pipeline we use to get a catalogue into that state; it is unglamorous and it is the actual project.
Is This Worth Building Yet?
An honest assessment, because this is a fast-moving area and there is a real cost to being early.
Build now if: you are on a platform that already exposes MCP and you are extending it; your product is developer-facing, where agent-assisted usage is already normal; or you sell something an assistant would plausibly be asked to find on a customer's behalf.
Wait if: your product data is not yet in a state you would be happy for a machine to quote verbatim; you have no capacity to monitor and iterate on a live agent surface; or your customers demonstrably do not reach you this way and you have checked rather than assumed.
In either case, do the prerequisite work now. Clean product data, structured policies and a task-shaped domain API are valuable regardless of which protocol wins, and they are the long pole. The MCP layer on top is comparatively quick.
Our Node.js practice builds these interfaces, and the broader question of where agent channels fit in a commerce strategy is what our AI integration work and AI engineering team exist to answer. If your priority is being found by assistants rather than transacted with by them, that is a related but different project — see getting your products recommended by ChatGPT and Perplexity.
Frequently asked questions
What is an MCP server, in plain terms?
A standard interface that lets an AI assistant discover and call tools in your system at runtime. It differs from a REST API in that it is designed to be understood by a model reading tool descriptions, rather than by a developer reading documentation.
Can we just point an agent at our existing REST API?
You can, and it will work poorly. REST APIs are resource-shaped and assume a developer who understands your domain; agents need task-shaped tools, descriptions that state when not to use them, and errors phrased as instructions rather than status codes.
What are the security risks?
Chiefly over-exposure and prompt injection. Every tool argument originates from something a person typed, so validate it server-side as untrusted input, enforce per-tenant permissions on every call rather than at session start, and never expose bulk export or administrative operations.
How do we stop an agent from making expensive mistakes?
Keep write tools few and narrowly guarded, with limits enforced by the tool itself rather than described in a prompt. Add idempotency keys so a retry cannot duplicate an action, and log every call so you can reconstruct what happened.
Is it too early to invest in this?
The MCP layer is the quick part and the standards are still moving, so being early carries some rework risk. The prerequisites — clean product data, structured policies, a task-shaped domain API — carry none, and they are the long pole. Start there regardless.
Start With the Tool List
Before any code, write down the six things an agent should be able to do with your product and the six it must never do. That document is most of the design. We will write it with you. Talk to our team; we reply within a business day.
