Saltar al contenido

Desarrolladores · API · MCP · A2A

Agentplace para desarrolladores y agentes

Todo Agentplace se lee por máquina: una API pública, un servidor MCP, un agente A2A y el Storegraph abierto. Catálogos de catorce tiendas argentinas con precio, stock y el vecindario de cada producto, listos para que tu agente busque, compare y recomiende como un buen vendedor. Sin registro y sin claves.

API
https://agentplace.crossup.ai/api/v1
OpenAPI
/openapi.json (3.1)
MCP
https://agentplace.crossup.ai/mcp (Streamable HTTP)
A2A
https://agentplace.crossup.ai/a2a · agent card
Auth
No hace falta (auth.md)
01

Empezá en 30 segundos

Tres pedidos alcanzan para entender el modelo: buscar en todas las tiendas, abrir un producto con su vecindario en el grafo y listar las tiendas. Las respuestas son JSON; los precios están en la moneda de cada tienda (ARS hoy).

# Buscar en todas las tiendas, sólo con stock
curl -s "https://agentplace.crossup.ai/api/v1/products?q=aceite%20de%20limpieza&in_stock=true"

# Un producto con su vecindario: complementos, sets, un paso más, alternativas
curl -s "https://agentplace.crossup.ai/api/v1/products/kosmos/196162638"

# Las tiendas, con su cobertura del grafo
curl -s "https://agentplace.crossup.ai/api/v1/stores"

¿Preferís MCP? Sumá Agentplace a Claude Code con claude mcp add --transport http agentplace https://agentplace.crossup.ai/mcp y preguntale por un producto.

02

API REST

Base https://agentplace.crossup.ai/api/v1. Sólo lectura (GET y HEAD), JSON, CORS abierto (Access-Control-Allow-Origin: *) y sin autenticación. La descripción completa, con cada campo, está en OpenAPI 3.1; el catálogo de APIs del dominio, en /.well-known/api-catalog (RFC 9727).

PedidoQué devuelve
GET /api/v1/storesLas tiendas: nombre, rubro, país, moneda, sitio, cantidad de productos y cobertura del grafo.
GET /api/v1/stores/{store}Una tienda con sus categorías.
GET /api/v1/productsBúsqueda y listado en todas las tiendas, con filtros y paginación (ver abajo).
GET /api/v1/products/{store}/{id}Un producto (por id numérico de Tiendanube o por handle) con variantes, imágenes y su vecindario en el grafo.
GET /api/v1/graphEl manifiesto del Storegraph: tiendas, archivos y cuántos nodos, relaciones y sets tiene cada una.
GET /api/v1/graph/{store}El grafo de una tienda en JSON: nodos, relaciones y sets.
GET /api/v1/statusEstado del servicio y fecha de los datos.

Buscar y filtrar productos

ParámetroQué hace
qTexto libre; no distingue mayúsculas ni tildes (colchon encuentra colchón).
storeId de tienda (kosmos, ganga-home, …).
departmentDepartamento del marketplace (belleza, hogar-y-deco, descanso, …).
categorySlug de categoría de la tienda (va con store).
min_price · max_priceRango de precio, en la moneda de la tienda.
on_sale · in_stock · free_shippingtrue para quedarte sólo con ofertas, con stock o con envío gratis.
sortrelevance (por defecto), price_asc, price_desc o discount.
page · per_pagePaginación; la respuesta trae el total y los links a la página siguiente y anterior.

El vecindario de un producto

GET /api/v1/products/{store}/{id} devuelve el producto y lo que lo rodea en el grafo. Cada vecino trae su relation y el reason en lenguaje natural, el mismo que muestra la página. Sólo aparecen relaciones que pasaron los umbrales de calidad: un bloque vacío significa que no hay una recomendación confiable, no que falten datos.

BloqueQué significa
complementsSe usan juntos: lo que conviene sumar.
setsKits y rutinas que la tienda vende o que el grafo arma con productos que van juntos.
step_upUn paso más: la versión superior o el mismo producto en pack.
alternativesOtra opción para la misma necesidad; con el producto sin stock, primero las que sí tienen.
other_versionsEl mismo producto en otro color, talle o presentación.

Cada producto trae además url (su página en Agentplace), markdown_url (la misma página en markdown) y buy_url, el link para comprar.

Para comprar: buy_url

buy_url apunta a /go/<tienda>/<id> y redirige a la página del producto en la tienda, con atribución utm (y ?via=api, mcp, a2a, webmcp o ucp según desde dónde lo pediste). La compra, el pago y el envío los hace la tienda en su propio checkout: la API no crea carritos ni cobra.

03

Servidor MCP

https://agentplace.crossup.ai/mcp es un servidor Model Context Protocol remoto: Streamable HTTP, sin estado y sin autenticación. Su tarjeta está en /.well-known/mcp/server-card.json.

ToolPara qué
search_productsBuscar en todas las tiendas con texto y filtros (tienda, departamento, precio, ofertas, stock).
get_productUn producto con variantes, stock y su vecindario en el grafo, con el motivo de cada relación.
list_storesLas tiendas, su rubro y cuántos productos tienen.
get_storegraphEl grafo de una tienda: tamaño, sets y el archivo completo; o las relaciones de un producto.
get_buy_linkEl link para comprar un producto en su tienda (no arma carritos).
# Claude Code
claude mcp add --transport http agentplace https://agentplace.crossup.ai/mcp

# Probarlo con el inspector oficial (elegí "Streamable HTTP" y pegá la URL)
npx @modelcontextprotocol/inspector
// Cursor: ~/.cursor/mcp.json
{
  "mcpServers": {
    "agentplace": { "url": "https://agentplace.crossup.ai/mcp" }
  }
}

En claude.ai: Settings → Connectors → Add custom connector y pegá https://agentplace.crossup.ai/mcp.

04

Agente A2A

Agentplace también es un agente A2A: otros agentes le hablan por JSON-RPC en https://agentplace.crossup.ai/a2a y les responde qué productos convienen, con su vecindario y el link de compra. Responde con datos del catálogo y del grafo, nunca crea carritos ni pagos. Su agent card describe las skills y la versión del protocolo.

curl -s https://agentplace.crossup.ai/a2a \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"message/send","params":{"message":{"role":"user","messageId":"m1","parts":[{"kind":"text","text":"aceite de limpieza facial con stock"}]}}}'
05

Universal Commerce Protocol (UCP)

Para plataformas que hablan UCP (2026-08-25): el perfil declara la capacidad de catálogo (dev.ucp.shopping.catalog.search y .lookup) sobre REST en https://agentplace.crossup.ai/ucp/v1. Cada variante trae su seller (la tienda que vende), precio en unidades menores (centavos de ARS) y un url que la abre en la tienda. No hay checkout UCP: la compra es en la tienda de cada marca.

curl -s -X POST https://agentplace.crossup.ai/ucp/v1/catalog/search \
  -H 'Content-Type: application/json' \
  -H 'UCP-Agent: profile="https://tu-plataforma.example/.well-known/ucp"' \
  -d '{"query":"sábanas 2 plazas","filters":{"price":{"max":6000000}},"pagination":{"limit":5}}'
06

En el navegador: WebMCP

Cada página de Agentplace registra sus tools en navigator.modelContext cuando el navegador lo soporta: un agente que navega el sitio puede buscar productos, leer el producto que está viendo y pedir el link de compra sin tocar el DOM.

07

Descubrimiento

ArchivoQué es
/llms.txtÍndice para modelos: cuándo usar Agentplace, tiendas y links.
/openapi.jsonOpenAPI 3.1 de la API.
/.well-known/api-catalogCatálogo de APIs (RFC 9727).
/.well-known/mcp/server-card.jsonTarjeta del servidor MCP.
/.well-known/agent-card.jsonAgent card A2A.
/.well-known/agent-skills/index.jsonAgent Skills con su digest.
/.well-known/ai-catalog.jsonCatálogo de recursos para agentes (ARD).
/.well-known/product-graphManifiesto del Storegraph 0.1; los grafos por tienda están en /product-graph/<tienda>.jsonl.
/.well-known/ucpPerfil UCP: catálogo (búsqueda y lookup), sin checkout.
/auth.mdCómo autenticarse: no hace falta.
/sitemap.xmlSitemap de todas las páginas.

Toda página tiene su versión markdown: agregá .md a la URL (la home es /index.md) o pedila con Accept: text/markdown.

08

Límites, caché y versiones

  • Límites. /api/v1/products acepta 120 pedidos por minuto por IP (por instancia del servidor). Cada respuesta trae RateLimit-Policy y RateLimit (IETF); un 429 suma Retry-After. Tiendas y grafo salen de la caché del CDN y no tienen límite.
  • Caché. Cada respuesta dice cuánto se puede cachear en Cache-Control. Los datos se actualizan una vez por día; GET /api/v1/status dice de cuándo son.
  • Versiones. La ruta lleva la versión mayor (/api/v1). Un cambio incompatible sale en /api/v2; antes de retirar algo lo anunciamos con los encabezados Deprecation y Sunset y en esta página.
  • Descripción en cada respuesta. Toda respuesta de la API trae Link a la descripción (rel="service-desc", /openapi.json) y a esta documentación (rel="service-doc").
09

Errores

Los errores de la API, del servidor MCP y del agente A2A usan RFC 9457 (application/problem+json): type apunta a la sección de abajo, y el cuerpo trae title, status, detail, code (por ejemplo rate_limited), hint con qué hacer y instance con la ruta del pedido.

invalid-parameter · 400

Un parámetro no tiene el formato esperado (por ejemplo min_price=barato). detail dice cuál; corregilo y repetí el pedido.

store-not-found · 404

No hay una tienda con ese id. La lista completa está en GET /api/v1/stores.

product-not-found · 404

La tienda existe pero no tiene ese producto publicado hoy. Buscalo de nuevo con GET /api/v1/products?q=…&store=….

not-found · 404

La ruta no existe en la API. Revisá la ruta contra /openapi.json.

method-not-allowed · 405

La API es de lectura: usá GET (o HEAD). El encabezado Allow dice qué métodos acepta la ruta.

rate-limited · 429

Pasaste el límite de pedidos por minuto. Esperá los segundos que indica Retry-After y seguí.

not-acceptable · 406

El encabezado Accept excluye JSON. Pedí application/json (o */*).

internal-error · 500

Algo falló de nuestro lado. Reintentá en unos segundos; si se repite, escribinos con el instance de la respuesta.

10

Uso y atribución

Todo es gratis y de lectura. Pedimos citar a Agentplace y a la tienda cuando muestres sus datos, y mandar a comprar con buy_url. Detalle en los términos de uso; qué medimos, en la política de privacidad. Para dudas, ideas o más volumen: hola@crossup.ai.