---
title: "Agentplace para desarrolladores y agentes"
description: "API pública, servidor MCP y agente A2A de Agentplace: buscá productos de 14 tiendas argentinas y leé su grafo de producto. Sin registro ni claves."
canonical: "https://agentplace.crossup.ai/developers"
updated: "2026-10-01"
---

# Agentplace para desarrolladores y agentes

- **API:** `https://agentplace.crossup.ai/api/v1`
- **OpenAPI:** [/openapi.json](https://agentplace.crossup.ai/openapi.json) (3.1)
- **MCP:** `https://agentplace.crossup.ai/mcp` (Streamable HTTP)
- **A2A:** `https://agentplace.crossup.ai/a2a` · [agent card](https://agentplace.crossup.ai/.well-known/agent-card.json)
- **Auth:** No hace falta ([auth.md](https://agentplace.crossup.ai/auth.md))
- **Contacto:** [hola@crossup.ai](mailto:hola@crossup.ai)

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.

## 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).

```bash
# 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.

## 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](https://agentplace.crossup.ai/openapi.json); el catálogo de APIs del dominio, en [/.well-known/api-catalog](https://agentplace.crossup.ai/.well-known/api-catalog) (RFC 9727).

| Pedido | Qué devuelve |
| --- | --- |
| `GET /api/v1/stores` | Las 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/products` | Bú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/graph` | El 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/status` | Estado del servicio y fecha de los datos. |

### Buscar y filtrar productos

| Parámetro | Qué hace |
| --- | --- |
| `q` | Texto libre; no distingue mayúsculas ni tildes (`colchon` encuentra *colchón*). |
| `store` | Id de tienda (`kosmos`, `ganga-home`, …). |
| `department` | Departamento del marketplace (`belleza`, `hogar-y-deco`, `descanso`, …). |
| `category` | Slug de categoría de la tienda (va con `store`). |
| `min_price` · `max_price` | Rango de precio, en la moneda de la tienda. |
| `on_sale` · `in_stock` · `free_shipping` | `true` para quedarte sólo con ofertas, con stock o con envío gratis. |
| `sort` | `relevance` (por defecto), `price_asc`, `price_desc` o `discount`. |
| `page` · `per_page` | Paginació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.

| Bloque | Qué significa |
| --- | --- |
| `complements` | Se usan juntos: lo que conviene sumar. |
| `sets` | Kits y rutinas que la tienda vende o que el grafo arma con productos que van juntos. |
| `step_up` | Un paso más: la versión superior o el mismo producto en pack. |
| `alternatives` | Otra opción para la misma necesidad; con el producto sin stock, primero las que sí tienen. |
| `other_versions` | El 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.

## Servidor MCP

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

| Tool | Para qué |
| --- | --- |
| `search_products` | Buscar en todas las tiendas con texto y filtros (tienda, departamento, precio, ofertas, stock). |
| `get_product` | Un producto con variantes, stock y su vecindario en el grafo, con el motivo de cada relación. |
| `list_stores` | Las tiendas, su rubro y cuántos productos tienen. |
| `get_storegraph` | El grafo de una tienda: tamaño, sets y el archivo completo; o las relaciones de un producto. |
| `get_buy_link` | El link para comprar un producto en su tienda (no arma carritos). |

```bash
# 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
```

```jsonc
// 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`.

## Agente A2A

Agentplace también es un agente [A2A](https://a2a-protocol.org): 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](https://agentplace.crossup.ai/.well-known/agent-card.json) describe las skills y la versión del protocolo.

```bash
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"}]}}}'
```

## Universal Commerce Protocol (UCP)

Para plataformas que hablan [UCP](https://ucp.dev) (2026-08-25): el [perfil](https://agentplace.crossup.ai/.well-known/ucp) 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.

```bash
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}}'
```

## 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.

## Descubrimiento

| Archivo | Qué es |
| --- | --- |
| [/llms.txt](https://agentplace.crossup.ai/llms.txt) | Índice para modelos: cuándo usar Agentplace, tiendas y links. |
| [/openapi.json](https://agentplace.crossup.ai/openapi.json) | OpenAPI 3.1 de la API. |
| [/.well-known/api-catalog](https://agentplace.crossup.ai/.well-known/api-catalog) | Catálogo de APIs (RFC 9727). |
| [/.well-known/mcp/server-card.json](https://agentplace.crossup.ai/.well-known/mcp/server-card.json) | Tarjeta del servidor MCP. |
| [/.well-known/agent-card.json](https://agentplace.crossup.ai/.well-known/agent-card.json) | Agent card A2A. |
| [/.well-known/agent-skills/index.json](https://agentplace.crossup.ai/.well-known/agent-skills/index.json) | Agent Skills con su digest. |
| [/.well-known/ai-catalog.json](https://agentplace.crossup.ai/.well-known/ai-catalog.json) | Catálogo de recursos para agentes (ARD). |
| [/.well-known/storegraph](https://agentplace.crossup.ai/.well-known/storegraph) | Manifiesto del Storegraph 0.1; los grafos por tienda están en `/storegraph/<tienda>.jsonl` y se exploran en `/grafo/<tienda>`. |
| [/.well-known/ucp](https://agentplace.crossup.ai/.well-known/ucp) | Perfil UCP: catálogo (búsqueda y lookup), sin checkout. |
| [/auth.md](https://agentplace.crossup.ai/auth.md) | Cómo autenticarse: no hace falta. |
| [/sitemap.xml](https://agentplace.crossup.ai/sitemap.xml) | Sitemap 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`.

## 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"`).

## 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.

## 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](https://agentplace.crossup.ai/terminos); qué medimos, en la [política de privacidad](https://agentplace.crossup.ai/privacidad). Para dudas, ideas o más volumen: [hola@crossup.ai](mailto:hola@crossup.ai).
