# signal:// ASCII > Convert images and video into ASCII / ANSI art. The browser studio streams > video and webcam in real time; the HTTP API renders single images for agents > and automations. Version 0.1.1. ## What it does - Live video-to-ASCII studio (runs entirely client-side in the browser). - Trusted A2V handoff: open https://a2v.platphormnews.com and stream latest ASCII frames from video or webcam with fixed-origin window.postMessage. - Server API to convert uploaded/base64 images or trusted HTTPS image URLs to text, ANSI (24-bit color), HTML, JSON, or SVG. - MCP server so agents can render ASCII as a tool call. - Public-safe W3C render and MCP lifecycles in Trace when server-side platform auth is configured; image bytes remain redacted. - Source-aware Auto Director with bounded quality-rubric rounds and honest target_met/best_effort evidence. - Adaptive rate-distortion glyph codebooks with measured RMSE, plus compact rgb24-b64-v1 chroma for deASCII/A2V handoffs. ## Math under the hood - Linear-light perceptual luminance (sRGB -> linear -> Rec.709 -> re-encode). - High-quality pyramid downscaling for clean, alias-free source sampling. - Unsharp-mask detail enhancement that restores fine texture lost when the frame is shrunk to the character grid. - Floyd-Steinberg error-diffusion dithering for gradient fidelity. - Adaptive recursive Bayesian temporal filter (Kalman-style gain) that denoises static regions while staying crisp on motion — the key to a stable stream. ## Endpoints - GET https://v2a.platphormnews.com/api/health — liveness + capabilities - POST https://v2a.platphormnews.com/api/v1/render — image -> ascii (multipart image, or JSON { imageUrl | imageBase64 }) - GET https://v2a.platphormnews.com/api/v1/a2v-handoff — public-safe V2A -> A2V handoff protocol - POST https://v2a.platphormnews.com/api/mcp — Model Context Protocol (JSON-RPC 2.0), tool: render_ascii - GET https://v2a.platphormnews.com/api/openapi.json — OpenAPI 3.1 spec - GET https://v2a.platphormnews.com/api/docs — platform route and limitation reference - GET https://v2a.platphormnews.com/api/v1/interoperability — ASCII/deASCII/V2A/A2V roles, APIs, MCP endpoints, and handoff boundaries ## Render parameters - columns (integer 8–400, default 120): Output width in characters. - charset (enum, default detailed): One of: standard, detailed, blocks, binary, dots, minimal. - format (enum, default text): text | ansi | html | json | json-compact | svg. - color (boolean, default false): Per-cell 24-bit color (ignored by plain text). - invert (boolean, default false): Invert luminance mapping. - contrast (float 0.2–4, default 1.15): Tonal contrast multiplier. - brightness (float -150–150, default 0): Luminance offset. - saturation (float 0–4, default 1.4): Color-mode saturation boost. - gamma (float 0.2–3, default 1): Perceptual midtone response. - edges (boolean, default false): Sobel edge-detection line-art mode. - edgeStrength (float 0.1–5, default 1.8): Edge magnitude multiplier. - dither (boolean, default false): Floyd–Steinberg error diffusion. - sharpen (float 0–1, default 0.35): Unsharp-mask detail enhancement. - autoLevels (float 0–1, default 0.9): Automatic percentile histogram stretch. - structure (float 0–1, default 0.55): Contour-aware directional glyph substitution ( - / | \ ). - denoise (float 0–1, default 0.35): Edge-preserving bilateral denoising before detail recovery. - motionSensitivity (float 0–1, default 0.7): Motion responsiveness in the final Bayesian posterior update. - autoOptimize (float 0–1, default 0.9): Strength of source-aware Auto Director tuning against the selected quality rubric. - qualityTarget (enum, default balanced): balanced | portrait | motion | low-light | round-trip. - glyphStrategy (enum, default adaptive): adaptive chooses the smallest glyph codebook under maxGlyphRmse; fixed preserves the selected ramp. - maxGlyphRmse (float 0.005–0.1, default 0.03): Maximum normalized luminance quantization RMSE for adaptive glyph selection. - monoColor (hex, default #e5e5e5): Color for mono/ansi/svg/html output. ## Quick start curl -F "image=@photo.jpg" "https://v2a.platphormnews.com/api/v1/render?columns=120&format=ansi&color=true" Remote imageUrl hosts are restricted to asciicast.stream, *.platphormnews.com, and explicit V2A_IMAGE_FETCH_ALLOWLIST entries. Redirects, DNS results, content type, response size, and time are bounded. ## A2V handoff - Target: https://a2v.platphormnews.com - Protocol: platphorm.v2a.a2v.handoff.v1 - Webcam launch: https://a2v.platphormnews.com/?handoff=v2a&protocol=platphorm.v2a.a2v.handoff.v1&mode=webcam-stream&source=v2a.platphormnews.com&traceId=TRACE_ID - Backend async checks use PLATPHORM_API_KEY when configured. - REST and MCP responses expose the accepted or generated trace ID and Trace URL; measured output evidence is linked to the producing render span. - Boundary: webcam/video media stays local; only ASCII text frames and render metadata are posted to the trusted A2V origin. - Chroma: exact optional rgb24-b64-v1 per-cell RGB; connection status requires platphorm:a2v:ack. ## deASCII handoff - Fixed target: https://deascii.platphormnews.com - Small frames use an inline base64url JSON fragment; every frame also uses trusted postMessage. - Payload: platphorm-v2a-handoff.v2 with line-preserving ASCII, optional rgb24-b64-v1 colorGrid, and processing evidence. - Connection status requires platphorm.deascii.acceptedAsciiPayload. curl -X POST https://v2a.platphormnews.com/api/v1/render \ -H "Content-Type: application/json" \ -d '{"imageUrl":"https://asciicast.stream/test-portrait.png","columns":160,"format":"html","color":true}' ## MCP POST https://v2a.platphormnews.com/api/mcp with a JSON-RPC body: {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"render_ascii","arguments":{"imageUrl":"https://asciicast.stream/test-portrait.png","columns":100,"color":true}}}