Motomarkt para agentes IA
El catálogo de motos en España, descrito de forma legible por máquinas. OpenAPI 3.1, A2A, MCP, llms.txt, JSON-LD y negociación markdown — todo sobre los mismos datos.
Superficies de descubrimiento
Cada agente prefiere una pista distinta. Las exponemos todas para que cualquier integración encuentre lo que necesita sin scraping.
- llms.txt llmstxt.org
Orientation document at site root. Markdown index of the API and sitemaps, designed for LLM ingestion.
curl https://motomarkt.pages.dev/llms.txt - OpenAPI 3.1 OpenAPI 3.1
Machine-readable description of every /api/* endpoint with schemas, examples and error shapes.
curl https://motomarkt.pages.dev/openapi.json - API catalog RFC 8288 linkset
Linkset pointing at the OpenAPI spec and llms.txt. Standard discovery entry-point for crawlers.
curl https://motomarkt.pages.dev/.well-known/api-catalog - A2A agent card Google Agent-to-Agent v0.1
Five skills (search-listings, browse-listings, get-listing, get-taxonomy, get-geo) callable over HTTPS.
curl https://motomarkt.pages.dev/.well-known/agent.json - MCP server card Model Context Protocol
Same skills exposed as MCP tools. Bridges to mcp-remote and any OpenAPI->MCP adapter.
curl https://motomarkt.pages.dev/.well-known/mcp/server-card.json - AI bot policy robots.txt + Content-Signal
Explicit Allow for GPTBot, ClaudeBot, PerplexityBot, Google-Extended and 15+ more. Content-Signal: search=yes, ai-input=yes, ai-train=no.
curl https://motomarkt.pages.dev/robots.txt
Endpoints JSON
Mismos datos que las páginas SSR. Cualquier endpoint acepta ?page y devuelve canonicalUrl + robots para que decidas si seguir el redirect SEO.
-
GET/api/searchNatural-language searchFree-form Spanish query. Returns the parsed interpretation, listings, and a canonical SEO redirect when one matches.
curl "https://motomarkt.pages.dev/api/search?q=Honda+CB500+en+Sevilla+menos+de+5000" -
GET/api/listingsBrowse listings (canonical filters)Same grammar as the SSR catalog: vehicleType, make, model, version, transaction, condition, prov, muni, facets, page, pageSize, sort.
curl "https://motomarkt.pages.dev/api/listings?make=honda&model=cb500f&prov=sevilla" -
GET/api/listings/{id}Listing detailFull listing with schema.org Motorcycle JSON-LD attached.
curl https://motomarkt.pages.dev/api/listings/1 -
GET/api/taxonomyTaxonomyControlled vocabularies for vehicleType, make, model, condition, transaction, fuelType, gearbox, carnet, bodyType.
curl https://motomarkt.pages.dev/api/taxonomy -
GET/api/geoGeographySpanish provinces and municipalities with listing counts.
curl https://motomarkt.pages.dev/api/geo -
GET/api/routes?path=…SEO route lookupResolve a canonical URL like /motos/honda to its QueryState + indexability.
curl "https://motomarkt.pages.dev/api/routes?path=/motos/honda"
Negociación markdown
Las páginas de catálogo y /api/search devuelven una vista markdown compacta cuando envías Accept: text/markdown. ~5x más barata de ingerir que el HTML completo, con la misma información esencial (título, precio, año, km, ubicación, URL canónica).
curl -H "Accept: text/markdown" https://motomarkt.pages.dev/motos/honda curl -H "Accept: text/markdown" "https://motomarkt.pages.dev/api/search?q=naked+A2+segunda+mano" Datos estructurados (JSON-LD)
Cada página de detalle incluye un nodo schema.org/Motorcycle con Offer de venta o renting. Las páginas de catálogo indexables añaden BreadcrumbList, ItemList y AggregateOffer con lowPrice, highPrice y offerCount calculados sobre todo el filtro.
Políticas
- Citas: sí. Queremos aparecer en respuestas generativas y en herramientas de tipo agente.
ai-input=yes, search=yes. - Entrenamiento: no.
ai-train=nopara todos los UAs explícitamente listados. - Sin auth. Toda la API es lectura pública y está cacheada en el edge. Privados:
/panel,/login,/registro. - Estabilidad. El shape JSON de
/api/listingsestá bloqueado; cambios incompatibles llegan con un prefijo de versión.
Soporte
¿Construyes un agente sobre Motomarkt? Abre un issue o escribe a contacto. Compartimos rutas canónicas, vocabulario y geografía para que tu modelo entienda el dominio sin adivinar.