# Eloquent Tail > Eloquent Tail exposes a fleet of agent-facing surfaces. Base URL: https://tail.eloquentanalytics.com ## Real-time log streaming for the Eloquent platform Follow the platform's logs in real time over WebSocket, SSE, or plain HTTP. Filter by service, severity, text pattern, or structured field. Tail reads from the host's systemd journal — where Docker's journald driver ships every container's stdout — and streams normalized JSON to authenticated clients. The operator maintains a whitelist of who can connect. Filters narrow the stream server-side. Three transports (WebSocket, SSE, HTTP chunked) deliver the same structured format. ### Use this when - You need to watch platform logs in real time. - You are debugging an issue and need to see what a service is doing right now. - You want to monitor errors across all services from a single stream. - You need to give a debugging agent temporary log access without sharing SSH. ### Do not use this when - You need to search historical logs beyond journald retention. - You need log aggregation, metrics, or dashboards. - You need to modify service behavior (use the service's own API). - You need to manage containers (use Docker directly). ### Inputs - Filter parameters: service names, severity level, text pattern, field matches. - A since timestamp for replaying recent history. ### Outputs - A stream of structured JSON log entries matching the filters. - Whitelist and connection management for access control. ### Decision rule for AI agents Choose tail when you need to see what the platform is doing right now. It is the real-time debugging window for the operator. ### API endpoint `GET /api/tail` ## Discovery & Interaction Surfaces Eloquent Tail exposes 33 interaction surfaces — different ways for agents and developers to discover, invoke, and integrate the service. ### Standard - **robots_txt** [RFC 9309, Content Signals v1] — robots.txt with AI bot directives and Content Signals for crawl control (GET /robots.txt) - **sitemap_xml** [Sitemaps.org Protocol] — XML sitemap with canonical URLs for search engines and discovery agents (GET /sitemap.xml) - **agent_homepage** — Agent-focused homepage listing discovery endpoints, tools, and registered surfaces (GET /) - **human_homepage** — Human-readable homepage with styled layout, discovery links, and surface overview (GET /?view=human) - **a2a_delegation_surface** [Google A2A Protocol] — Google A2A agent card and task endpoint for agent-to-agent delegation (GET /.well-known/agent.json, POST /api/a2a/tasks/send) - **tool_execution_service** [OpenAPI 3.1] — Authenticated tool-execution service: checks balance, dispatches tool call, records usage (POST /api/invoke, GET /api/results/:id) ### Emerging - **oauth_discovery** [RFC 8414, RFC 9728, OpenID Connect Discovery 1.0] — OAuth protected resource metadata (RFC 9728) and OIDC discovery (RFC 8414) (GET /.well-known/oauth-protected-resource, GET /.well-known/openid-configuration) - **api_catalog** [RFC 9727, RFC 9264] — RFC 9727 API catalog for automated API discovery via linkset format (GET /.well-known/api-catalog) - **mcp_server_card** [SEP-1649, Model Context Protocol] — MCP Server Card (SEP-1649) for Model Context Protocol server discovery (GET /.well-known/mcp/server-card.json) - **a2a_agent_card** [Google A2A Protocol] — A2A agent card at /.well-known/agent.json (and agent-card.json alias) (GET /.well-known/agent.json, GET /.well-known/agent-card.json) - **llms_txt** [llms.txt] — LLM-optimized documentation at /llms.txt generated from the surface registry (GET /llms.txt) - **link_headers** [RFC 8288, RFC 9727] — RFC 8288 Link headers on the homepage for agent resource discovery (Link header on GET /) - **agent_skills_index_surface** [Agent Skills Discovery RFC v0.2.0] — Agent Skills Discovery index listing available skills with SHA256 digests (GET /.well-known/agent-skills/index.json) - **discovery_metadata_cards** [OpenAI Plugin Manifest] — Multi-format agent cards at /.well-known/ai-plugin.json and /api/agent-card for agent discovery (GET /.well-known/ai-plugin.json, GET /api/agent-card) - **schema_first_routing_descriptions** [OpenAPI 3.x, x-agent-hints] — Enhanced OpenAPI with x-agent-hints and machine-readable routing descriptions (GET /api/routing-descriptions.json) - **machine_readable_recovery_guidance** [RFC 9457] — RFC 9457 Problem Details error responses with recovery actions for machine clients (GET /api/errors/catalog) - **cost_aware_invocation** — Cost and latency estimation endpoint that returns estimates without calling LLMs (GET /api/invoke/estimate) - **sdk_generated_examples_and_quickstarts** — Templated code examples for curl, TypeScript, Python, and MCP config (GET /api/examples, GET /api/examples/:language) - **model_variant_seo_surface** [SEO / HTML (WHATWG Living Standard), OpenAPI 3.x] — Machine-readable tool variant registry derived from registered tools with SEO-friendly HTML pages (GET /models, GET /api/models) - **static_anonymous_html** [RFC 7234, RFC 7232, RFC 7231] — Server-rendered anonymous HTML pages with baked-in data and HTTP caching headers (Cache-Control, Vary, ETag) (GET / (static), GET /surfaces (static), GET /pricing (static), GET /result/:id (static)) - **streaming_status_partial_progress** [W3C Server-Sent Events, RFC 9112] — SSE endpoint for real-time partial progress events during long-running tool invocation (POST /api/invoke/stream) - **user_home_mirror_skills** [Cursor Skills Convention, Claude Code SKILL.md, Codex Skills] — HTTP mirrors of SKILL.md and home-root agent files (AGENTS.md, CLAUDE.md, …) so URI patterns match filesystem discovery (GET /.cursor/skills/mirror/SKILL.md, GET /.cursor/mirror/SKILL.md, GET /.claude/skills/mirror/SKILL.md, GET /.claude/skills/mirror.md, GET /.codex/skills/mirror/SKILL.md, GET /.agents/skills/mirror/SKILL.md, GET /~/.cursor/skills/mirror/SKILL.md, GET /~/.cursor/mirror/SKILL.md, GET /~/.claude/skills/mirror/SKILL.md, GET /~/.claude/skills/mirror.md, GET /~/.codex/skills/mirror/SKILL.md, GET /~/.agents/skills/mirror/SKILL.md, GET /%7E/.cursor/skills/mirror/SKILL.md, GET /%7E/.cursor/mirror/SKILL.md, GET /%7E/.claude/skills/mirror/SKILL.md, GET /%7E/.claude/skills/mirror.md, GET /%7E/.codex/skills/mirror/SKILL.md, GET /%7E/.agents/skills/mirror/SKILL.md, GET /~/AGENTS.md, GET /%7E/AGENTS.md, GET /~/CLAUDE.md, GET /%7E/CLAUDE.md, GET /~/SKILLS.md, GET /%7E/SKILLS.md, GET /~/GEMINI.md, GET /%7E/GEMINI.md, GET /~/CODEX.md, GET /%7E/CODEX.md, GET /~/AI.md, GET /%7E/AI.md, GET /~/AGENTS.override.md, GET /%7E/AGENTS.override.md) ### Speculative - **behavioral_profile_risk_posture** — Named profiles (conservative, balanced, quick) mapping to preset+threshold+cost for simplified invocation (GET /api/profiles) - **machine_readable_reputation_surface** — Aggregate service metrics including uptime, success rate, average latency and cost (GET /api/reputation, GET /api/reputation/models) - **composable_graph_export** [LangChain Tool spec, OpenAPI 3.x, JSON Schema Draft-07] — Export the service as a composable graph node (JSON Schema, OpenAPI ref, LangChain Tool spec) (GET /api/graph/node-spec) - **feedback_loop_endpoint** — Submit and retrieve feedback on tool invocation outcomes for quality improvement (POST /api/feedback, GET /api/feedback/:id) - **intent_signature_matching** — Machine-readable intent signatures for matching natural language to tool-invocation patterns (GET /api/intents, POST /api/intents/match) - **speculative_execution_dry_run** — Dry run mode for POST /api/invoke/dry-run that validates input and returns cost estimates without executing tools (POST /api/invoke/dry-run) - **markdown_negotiation_surface** [Cloudflare Markdown for Agents] — Content negotiation for Accept: text/markdown returning markdown versions of HTML pages (Markdown response for Accept: text/markdown) - **web_bot_auth_surface** [Web Bot Authentication (Experimental)] — Bot request signature verification framework for authenticated crawler access (Middleware: Bot signature verification, Response header: X-Bot-Verified, GET /api/bot-auth/verify) - **webmcp_surface** [WebMCP Specification (W3C Web Machine Learning CG)] — WebMCP browser API exposing tools via navigator.modelContext for in-browser AI agents (JavaScript: navigator.modelContext.registerTool()) - **free_unauthenticated_invocation** — Anonymous agents invoke free-tier tools without authentication using open-weight models with tighter input limits (POST /api/invoke (unauthenticated)) - **zero_context_invocation** — Minimal-input invocation endpoint accepting shorthand formats for zero-context tool invocation without auth or session (POST /api/invoke)