JustIdea Prestashop DEMO — agent & developer documentation

JustIdea Prestashop DEMO exposes its catalogue to AI agents and integrators. Everything below is read-only: nothing writes a cart, an order or customer data.

OpenAPI 3.1 specification · llms.txt · status

Endpoints

DocumentURL
llms.txthttps://prestashop.justidea.dev/llms.txt
llms-full.txthttps://prestashop.justidea.dev/llms-full.txt
Agent sitemaphttps://prestashop.justidea.dev/agent-sitemap.xml
OAuth Protected Resource Metadata (RFC 9728)https://prestashop.justidea.dev/.well-known/oauth-protected-resource
AGENTS.md — conventions for coding agentshttps://prestashop.justidea.dev/AGENTS.md
Agent Plugins manifest (for publishing to a repo)https://prestashop.justidea.dev/plugin.json
MCP Server Card (draft SEP-1649)https://prestashop.justidea.dev/.well-known/mcp/server-card.json
MCP endpointhttps://prestashop.justidea.dev/agent/mcp
MCP endpoint — documentation (focused, 2 tools)https://prestashop.justidea.dev/agent/docs-mcp
MCP Server Card — documentation serverhttps://prestashop.justidea.dev/.well-known/mcp/docs-server-card.json
GraphQL endpoint (read-only, introspection open)https://prestashop.justidea.dev/graphql
GraphQL schema (SDL)https://prestashop.justidea.dev/graphql/schema.graphql
Self-serve token registrationhttps://prestashop.justidea.dev/v1/register
Authenticated entry point (401 discovery hint)https://prestashop.justidea.dev/agent/auth
A2A agent cardhttps://prestashop.justidea.dev/.well-known/agent-card.json
A2A endpoint (JSON-RPC)https://prestashop.justidea.dev/agent/a2a
Web Bot Auth key directory (RFC 9421)https://prestashop.justidea.dev/.well-known/http-message-signatures-directory
NLWeb /ask — natural-language catalogue queryhttps://prestashop.justidea.dev/ask
Batch endpoint — many reads in one requesthttps://prestashop.justidea.dev/v1/batch
Public signing key (JWKS)https://prestashop.justidea.dev/.well-known/jwks.json
Pricing, fees and returns (markdown)https://prestashop.justidea.dev/pricing.md
Markdown rendererhttps://prestashop.justidea.dev/agent/md
API Catalog (RFC 9727)https://prestashop.justidea.dev/.well-known/api-catalog
OAuth Authorization Server Metadata (RFC 8414)https://prestashop.justidea.dev/.well-known/oauth-authorization-server
auth.md (agent registration)https://prestashop.justidea.dev/auth.md
OpenAPI 3.1 specificationhttps://prestashop.justidea.dev/.well-known/openapi.json
Developer portalhttps://prestashop.justidea.dev/agent/docs
Developer portal (/developers)https://prestashop.justidea.dev/developers
Developer portal (/api-docs)https://prestashop.justidea.dev/api-docs
Developer portal (/api-reference)https://prestashop.justidea.dev/api-reference
Developer portal (/console)https://prestashop.justidea.dev/console
AI catalog (ARD)https://prestashop.justidea.dev/.well-known/ai-catalog.json
UCP discovery profile (/.well-known/ucp)https://prestashop.justidea.dev/.well-known/ucp
UCP catalogue searchhttps://prestashop.justidea.dev/ucp/v1/catalog/search
UCP catalogue lookup by identifierhttps://prestashop.justidea.dev/ucp/v1/catalog/lookup
UCP product detailhttps://prestashop.justidea.dev/ucp/v1/catalog/product
MCP manifest (/.well-known/mcp)https://prestashop.justidea.dev/.well-known/mcp
REST API root (v1)https://prestashop.justidea.dev/v1
REST product list (paginated)https://prestashop.justidea.dev/v1/products
REST category listhttps://prestashop.justidea.dev/v1/categories
Checkout handoff — build a basket, get a linkhttps://prestashop.justidea.dev/v1/cart
Status endpointhttps://prestashop.justidea.dev/v1/status
Agent Skills indexhttps://prestashop.justidea.dev/.well-known/agent-skills/index.json
llms.txt scoped to developer resourceshttps://prestashop.justidea.dev/developers/llms.txt
llms.txt scoped to the HTTP APIhttps://prestashop.justidea.dev/v1/llms.txt
llms.txt scoped to the agent protocolshttps://prestashop.justidea.dev/agent/llms.txt

Markdown instead of HTML

Any product, category or CMS page returns Markdown when requested with Accept: text/markdown. The home page returns the store overview.

curl -H "Accept: text/markdown" https://prestashop.justidea.dev/

MCP endpoint

JSON-RPC 2.0 over POST at https://prestashop.justidea.dev/agent/mcp. Requires a bearer token — see auth.md.

curl -X POST https://prestashop.justidea.dev/agent/mcp \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
ToolDescriptionParameters
search_productsSearch the store catalogue by keyword, category, stock status or price order. Returns name, price, availability and product URL. Read-only.query, category_id, in_stock_only, sort, limit, offset
get_productFull detail for one product: description, specifications, categories, price, stock, brand and identifiers. Read-only.product_id
list_categoriesThe store category tree with live product counts per category. Use the returned ids to narrow search_products. Read-only.max_depth, only_stocked
check_availabilityCurrent stock and price for up to 50 products at once. Use this to re-verify before quoting a customer. Read-only.product_ids
get_shipping_optionsCarriers, price ranges and delivery estimates for a destination country, plus the free-shipping threshold if one is configured. Returns ranges, not a binding quote. Read-only.country_code
get_policiesStore policy pages — returns, shipping, payment, terms, privacy, contact. Pass a topic for the full text of matching pages. Read-only.topic
create_checkout_linkBuild a basket and get a link that opens this store's checkout with the items already in it. Nothing is ordered, reserved or charged — the customer completes the purchase themselves, at the price current when they do. Hand the link to the customer; do not follow it.items

Getting started — free, no signup

Most of this store needs no credentials at all. The catalogue, prices, stock, shipping quotes and policies are free to read with no account, no API key and no registration. There is no paid tier gating any of it.

curl https://prestashop.justidea.dev/llms.txt

Self-serve keys. The MCP endpoint expects a bearer token, and you can issue yourself one in a single request — no human, no form:

curl -X POST https://prestashop.justidea.dev/v1/register \
  -H "Content-Type: application/json" -d '{"label":"my-agent"}'

No sandbox is needed. Every operation here is read-only — nothing creates, changes or deletes anything — so there is no destructive call to practise away from production. Point your client straight at this store.

GraphQL

A read-only GraphQL endpoint at https://prestashop.justidea.dev/graphql. Introspection is open — send the standard introspection query and generate a client.

Typed errors

Failures come back inside the payload as userErrors, not only in the top-level errors array. Each carries a stable code from the UserErrorCode enum, the field path at fault, and a message. Branch on the code; the wording may change, the code will not.

{ product(id: 999999) { product { name } userErrors { code field message } } }
# → { "data": { "product": { "product": null,
#     "userErrors": [{ "code": "NOT_FOUND", "field": ["product","id"], ... }] } } }

Pagination

Relay connections: walk pageInfo.endCursor into after rather than incrementing offsets. Cursors are opaque.

{ products(first: 20, query: "jacket") {
    totalCount
    edges { cursor node { id name price { amount currency } availability } }
    pageInfo { hasNextPage endCursor }
    userErrors { code message } } }

Schema evolution

Additive changes — new types, fields and enum members — may land at any time. A field being retired is marked with the @deprecated directive, carrying the reason and its replacement, and keeps working for at least 180 days after that. Breaking changes get a new endpoint version rather than being applied in place. Responses carry API-Version, and a retired version would additionally carry Deprecation and Sunset headers (RFC 8594, RFC 9745).

Code samples

No SDK is required — the surface is plain HTTP. These are complete, working calls.

Python

import requests

# Store overview, no credentials needed
overview = requests.get("https://prestashop.justidea.dev/llms.txt").text

# Any page as Markdown
page = requests.get("https://prestashop.justidea.dev/", headers={"Accept": "text/markdown"}).text

# Search the catalogue over MCP
r = requests.post(
    "https://prestashop.justidea.dev/agent/mcp",
    headers={"Authorization": "Bearer <token>"},
    json={"jsonrpc": "2.0", "id": 1, "method": "tools/call",
          "params": {"name": "search_products",
                     "arguments": {"query": "shirt", "limit": 5}}},
)
if r.status_code == 429:
    wait = int(r.headers.get("Retry-After", 60))  # honour the throttle
products = r.json()["result"]["structuredContent"]["products"]

JavaScript

const overview = await (await fetch("https://prestashop.justidea.dev/llms.txt")).text();

const res = await fetch("https://prestashop.justidea.dev/agent/mcp", {
  method: "POST",
  headers: { Authorization: "Bearer <token>", "Content-Type": "application/json" },
  body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "tools/list" }),
});
console.log(res.headers.get("RateLimit-Remaining"));  // pace yourself
const { result } = await res.json();

Running against this store

Errors

When the request accepts JSON, errors carry a stable error.code.

StatuscodeMeaning
400bad_requestBad parameters.
401unauthorizedMissing or wrong token; see resource_metadata.
403forbiddenThis store denied your agent.
404not_foundAbsent or switched off.
429rate_limitedWait retry_after seconds.
503unavailableTemporary; retry with backoff.

Served by AgentReady, a PrestaShop module by JustIdea Agency. Module version 9.5.1.