# info.summary
Read-only access to the VitalPeptides México research-peptide catalog.

# info.description
Public, unauthenticated, read-only. Prices are in MXN and reflect the live
WooCommerce catalog; when WooCommerce is unreachable the API answers from a
bundled snapshot and marks it with `source: "snapshot"`.

All products are sold for laboratory research use only (RUO) and are not
medicines for human consumption. Nothing here exposes user, order or
account data.

Catalog of APIs: https://vitalpeptides.app/.well-known/api-catalog

# tags[].description
Catalog products and their presentations.

# paths./api/v1/products/{slug}.get.summary
Get one product, with every presentation and image

# paths./api/v1/health.get.description
`pass` when WooCommerce answered, `warn` when the bundled snapshot is carrying the catalog.

# paths./mcp.post.summary
Model Context Protocol endpoint (JSON-RPC 2.0)

# paths./mcp.post.description
Streamable-HTTP MCP transport exposing the same catalog as read-only tools: `list_products`, `get_product`, `list_kits`, `list_blog_posts`, `get_blog_post`.

# paths./mcp.post.responses.200.description
JSON-RPC result, as a JSON body or an SSE stream.

# paths./.mcp/list-tools.get.description
Tool names, descriptions and input schemas, without an MCP handshake.

# paths./.well-known/api-catalog.get.responses.200.description
Linkset describing every public API on this origin.

# paths./a2a.post.summary
Agent2Agent endpoint (JSON-RPC 2.0, message/send only)

# paths./a2a.post.description
Invokes the same 5 read-only skills as the MCP server, via A2A's `message/send`. A skill call is a DataPart, not free text: `{"skill":"get_product","input":{"slug":"bpc-157"}}`. See /.well-known/agent-card.json for every skill and a worked example.

# paths./a2a.post.responses.200.description
JSON-RPC result carrying an A2A Message.

# paths./.well-known/agent-card.json.get.responses.200.description
Agent name, skills and the /a2a endpoint they're invoked on.

# paths./.well-known/mcp.json.get.description
Also served at /mcp/server-card — see /desarrolladores for why both exist.

# paths./.well-known/agent-skills/index.json.get.description
Lists this site's published SKILL.md documents with a content digest for each.

# paths./.well-known/ai-catalog.json.get.summary
Agentic Resource Discovery (ARD) catalog

# paths./.well-known/ai-catalog.json.get.responses.200.description
Points a registry at this site's MCP server card, agent card, and OpenAPI document.

# paths./auth.md.get.description
Also served at /.well-known/auth.md. States plainly that nothing here requires authentication.

# components.schemas.Source.description
`live` = answered from WooCommerce; `snapshot` = degraded fallback.

# components.schemas.ProductSummary.properties.price_mxn.description
Decimal amount as a string, to avoid float rounding. MXN.

# components.schemas.ProductSummary.properties.compare_at_mxn.description
Decimal amount as a string, to avoid float rounding. MXN.

# components.schemas.ProductSummary.properties.price_is_from.description
True when the product has several presentations and `price_mxn` is the cheapest one — present it as “desde $X”.

# components.schemas.Product.allOf[].properties.variants.items.properties.price_mxn.description
Decimal amount as a string, to avoid float rounding. MXN.

# components.schemas.BlogPost.allOf[].properties.body.description
Structured blocks: `h2`, `p`, `ul` or `callout`.