Overview
Resumen
agent.json is the machine-readable heart of the Liquid Web Proposal. Like robots.txt tells crawlers what to index, agent.json tells interpreters how to generate a personalised experience from first principles.
agent.json es el núcleo legible por máquinas del Liquid Web Proposal. Igual que robots.txt indica a los rastreadores qué indexar, agent.json indica a los intérpretes cómo generar una experiencia personalizada desde cero.
It separates what a site is from how it appears — the same leap CSS made in 1996, applied to the entire web experience.
Separa lo que un sitio es de cómo aparece — el mismo salto que dio CSS en 1996, aplicado a toda la experiencia web.
File placement
Ubicación del archivo
Where to publish it
Dónde publicarlo
- robots.txt
- sitemap.xml
- agent.json ← publish here← publicar aquí
- index.html
The file must be accessible at https://yourdomain.com/agent.json with no authentication. Served as application/json.
El archivo debe ser accesible en https://tudominio.com/agent.json sin autenticación. Servido como application/json.
Declare it in your HTML
Declárado en tu HTML
Optionally, add a <meta> tag inside the <head> of each page. This lets interpreters discover the protocol without relying solely on file conventions — and signals intent to any agent that reads the page source directly.
Opcionalmente, añade un tag <meta> dentro del <head> de cada página. Esto permite que los intérpretes descubran el protocolo sin depender únicamente de las convenciones de archivo — y señala la intención a cualquier agente que lea el código fuente directamente.
<!-- Inside <head> --> <meta name="liquid-web-agent" content="src=/agent.json; version=1.0">
| Attribute | Value | Description | Descripción |
|---|---|---|---|
| name | liquid-web-agent |
Fixed identifier for the protocol. Interpreters scan for this name. | Identificador fijo del protocolo. Los intérpretes buscan este nombre. |
| content · src | /agent.json |
Path to the agent.json file. Can be absolute or root-relative. | Ruta al archivo agent.json. Puede ser absoluta o relativa a la raíz. |
| content · version | 1.0 |
Protocol version the site declares support for. | Versión del protocolo que el sitio declara soportar. |
The meta tag is optional but recommended. It follows the same convention as <meta name="generator"> or OpenSearch descriptors — a machine-readable hint embedded directly in the page.
El meta tag es opcional pero recomendado. Sigue la misma convención que <meta name="generator"> o los descriptores OpenSearch — una pista legible por máquinas integrada directamente en la página.
Blocks
Bloques
Declares who the organisation is. The foundation of every generated experience. An interpreter reads this first to understand the entity behind the site.
Declara quién es la organización. La base de toda experiencia generada. Un intérprete lee esto primero para entender la entidad detrás del sitio.
"identity": { "name": "Econecta", "type": "SaaS / B2B", "category": "Energy management for SMEs", "tagline": "Energy intelligence for every business", "description": "Platform that helps small and medium businesses understand, reduce and optimise their energy consumption.", "founded": 2023, "language_default": "es", "languages_supported": ["es", "en"] }
| Field | Type | Description | Descripción |
|---|---|---|---|
| name | string | Legal or commercial name of the organisation | Nombre legal o comercial de la organización |
| type | string | Business model descriptor (SaaS, e-commerce, NGO, etc.) | Descriptor del modelo de negocio (SaaS, e-commerce, ONG, etc.) |
| category | string | Industry or vertical | Industria o sector |
| tagline | string | Short positioning line — used in generated headlines | Línea de posicionamiento corta — usada en titulares generados |
| description | string | 1–3 sentence explanation of what the org does | Explicación de 1–3 frases de lo que hace la organización |
| language_default | string | ISO 639-1 code of the primary language | Código ISO 639-1 del idioma principal |
Defines how the site communicates. Interpreters use this to calibrate register, complexity, and emotional temperature of every generated text element.
Define cómo se comunica el sitio. Los intérpretes lo usan para calibrar el registro, la complejidad y la temperatura emocional de cada elemento de texto generado.
"voice": { "tone": ["clear", "direct", "expert without being distant"], "personality": "An engineer who communicates like a teacher", "formality": "professional-relaxed", "avoid": ["corporate jargon", "techno-optimism clichés"], "pronouns": "second-person singular (you)", "adaptation_rules": { "with_experts": "use technical language freely", "with_non_technical": "use analogies, avoid acronyms" } }
Catalogue of what the site offers. Enables interpreters to surface the right product or service based on the visitor's intent and context, without surfacing irrelevant offers.
Catálogo de lo que ofrece el sitio. Permite a los intérpretes mostrar el producto o servicio adecuado según la intención y el contexto del visitante, sin mostrar ofertas irrelevantes.
"products": [ { "id": "dashboard-basic", "name": "Econecta Basic", "description": "Real-time energy monitoring for businesses under 50 employees", "price_from": 49, "currency": "EUR", "audience": ["SME", "first-time buyer"], "key_benefit": "Visible cost savings in the first month", "cta_url": "/start" } ]
Declares what modes of interaction this site can support. The interpreter reads the visitor's likely intent (explore, buy, get support, read) and generates an experience tuned to that mode.
Declara qué modos de interacción puede soportar el sitio. El intérprete lee la intención probable del visitante (explorar, comprar, soporte, leer) y genera una experiencia adaptada a ese modo.
"intents": [ { "type": "explore", "description": "Visitor doesn't know us. Needs to understand what we do and why it matters.", "priority_content": ["hero", "key_benefits", "social_proof"] }, { "type": "buy", "description": "Visitor is ready to purchase or sign up. Reduce friction.", "priority_content": ["pricing", "cta", "trust_signals"] }, { "type": "support", "description": "Existing customer needs help.", "priority_content": ["documentation", "contact"] } ]
Declares whether an AI agent is available, its capabilities, and any constraints. This is the block that activates the interpreter — without it, the file is informational only.
Declara si hay un agente de IA disponible, sus capacidades y limitaciones. Este es el bloque que activa el intérprete — sin él, el archivo es solo informativo.
"agent": { "enabled": true, "version": "1.0", "capabilities": [ "generate_personalised_experience", "answer_product_questions", "route_to_support" ], "limitations": [ "cannot process payments", "cannot access account data" ], "handoff_url": "/contact" }
Visual identity assets. Allows the interpreter to generate experiences that are visually consistent with the brand, even when building layouts from scratch.
Activos de identidad visual. Permite al intérprete generar experiencias visualmente coherentes con la marca, incluso al construir layouts desde cero.
"brand": { "logo_url": "https://yourdomain.com/logo.svg", "logo_dark_url": "https://yourdomain.com/logo-dark.svg", "colors": { "primary": "#1A6B3C", "secondary": "#F0F7F4", "accent": "#E8B84B" }, "fonts": { "headline": "Syne", "body": "EB Garamond" } }
Contact information and location data. Used when a visitor explicitly asks how to reach the organisation, or when intent detection suggests support mode.
Información de contacto y datos de localización. Se usa cuando un visitante pregunta explícitamente cómo contactar a la organización, o cuando la detección de intención sugiere modo soporte.
"contact": { "email": "hello@yourdomain.com", "phone": "+34 900 000 000", "address": "Calle Mayor 1, Madrid, Spain", "support_url": "/help", "social": { "linkedin": "https://linkedin.com/company/yourco", "twitter": "https://twitter.com/yourco" } }
Design preferences and constraints for generated interfaces. Think of it as a brief to the interpreter's design layer.
Preferencias y restricciones de diseño para las interfaces generadas. Piénsalo como un briefing para la capa de diseño del intérprete.
"styles": { "aesthetic": "clean, data-driven, trustworthy", "layout_preference": "editorial grid, generous whitespace", "imagery_style": "real photography, no stock illustrations", "dark_mode": true, "animation_level": "subtle" }
The deeper purpose behind the organisation. Used when a visitor is evaluating whether to trust or join the company, not just buy from it.
El propósito más profundo de la organización. Se usa cuando un visitante evalúa si confiar en la empresa o unirse a ella, no solo comprar.
"mission": { "statement": "Make energy intelligence accessible to every business, not just enterprises.", "problem_solved": "SMEs pay up to 30% more for energy because they lack the data to negotiate and optimise.", "impact": "Every customer reduces their carbon footprint as a direct consequence of reducing waste." }
What the site is trying to achieve commercially. Helps the interpreter understand what a successful visit looks like and optimise the experience accordingly.
Lo que el sitio intenta lograr comercialmente. Ayuda al intérprete a entender cómo es una visita exitosa y optimizar la experiencia en consecuencia.
"goals": { "primary": "free trial signup", "secondary": ["demo request", "newsletter subscription"], "kpis": ["trial_signup_rate", "demo_completion_rate"], "avoid": ["high bounce without interaction", "support overload"] }
The origin story and key messages. Gives the interpreter raw material for storytelling — the kind of copy that builds trust and resonance before a product pitch.
La historia de origen y los mensajes clave. Proporciona al intérprete material bruto para el storytelling — el tipo de copy que construye confianza y resonancia antes de presentar el producto.
"narrative": { "origin": "Founded after discovering that a mid-sized factory was paying triple per kWh versus its large competitors — simply because it lacked data.", "key_messages": [ "Energy data should be democratised", "The best sustainability is the one you can measure", "Small businesses deserve enterprise-grade tools" ], "approved_metaphors": ["energy as a language", "the meter as a compass"], "forbidden_metaphors": ["revolution", "disruptive", "game-changer"] }
Named audience profiles the interpreter can target. When combined with visitor context, this is what enables true personalisation — not just adaptive copy, but adaptive logic.
Perfiles de audiencia nombrados a los que el intérprete puede dirigirse. Combinados con el contexto del visitante, son lo que permite la personalización real — no solo copy adaptativo, sino lógica adaptativa.
"segments": [ { "id": "ops-manager", "description": "Operations or facilities manager. Practical. Responsible for costs. Sceptical of tech that adds complexity.", "priority_message": "Save time and money with zero technical overhead.", "avoid": ["API references", "technical architecture"] }, { "id": "cto", "description": "Technical decision-maker. Evaluates integration complexity, data reliability, security.", "priority_message": "REST API, GDPR compliant, ISO 27001 certified.", "avoid": ["vague claims", "marketing language"] } ]
Compliance constraints for generated content. The interpreter must never generate copy that contradicts these declarations.
Restricciones de cumplimiento para el contenido generado. El intérprete no debe generar nunca copy que contradiga estas declaraciones.
"legal": { "jurisdiction": "Spain / EU", "certifications": ["GDPR compliant", "ISO 27001"], "disclaimers_required": ["energy savings may vary by installation"], "prohibited_claims": [ "guaranteed ROI", "government subsidies without verification" ], "data_processing": "EU servers only. No data sold to third parties." }
Rules governing what the interpreter can and cannot generate. The last line of editorial control — ensures no generated experience diverges from brand, values, or legal constraints.
Reglas que gobiernan lo que el intérprete puede y no puede generar. La última línea de control editorial — garantiza que ninguna experiencia generada se desvíe de la marca, los valores o las restricciones legales.
"content_governance": { "can_generate": [ "product descriptions", "explainer copy", "CTAs", "FAQs" ], "cannot_generate": [ "pricing without approval", "competitor comparisons", "testimonials not in source data" ], "human_review_required": ["legal pages", "press releases"], "update_frequency": "monthly" }
Full example
Ejemplo completo
A minimal valid agent.json includes the five required blocks. Optional blocks can be added as the proposal matures.
Un agent.json mínimo válido incluye los cinco bloques obligatorios. Los bloques opcionales se pueden añadir a medida que la propuesta madura.
{
"protocol": "liquid-web",
"version": "1.0",
"identity": {
"name": "Econecta",
"type": "SaaS / B2B",
"tagline": "Energy intelligence for every business",
"description": "Platform that helps SMEs understand, reduce and optimise their energy consumption.",
"language_default": "es"
},
"voice": {
"tone": ["clear", "direct", "expert without being distant"],
"formality": "professional-relaxed",
"avoid": ["corporate jargon", "buzzwords"]
},
"products": [
{
"id": "basic",
"name": "Econecta Basic",
"description": "Real-time energy monitoring for businesses under 50 employees",
"price_from": 49,
"currency": "EUR",
"cta_url": "/start"
}
],
"intents": [
{ "type": "explore", "priority_content": ["hero", "benefits"] },
{ "type": "buy", "priority_content": ["pricing", "cta"] }
],
"agent": {
"enabled": true,
"version": "1.0",
"capabilities": ["generate_experience", "answer_questions"],
"handoff_url": "/contact"
}
}