{
  "schema_version": "1.0",
  "name": "Meow Serial",
  "short_name": "mserial",
  "description": "AI-readable advanced serial and WebSocket workspace centered on custom protocol parsers, importable protocol JSON profiles, named channels, and real-time dashboards.",
  "homepage": "/",
  "serial_app": "/serial",
  "public_api": "/api/mserial",
  "llms_txt": "/llms.txt",
  "robots_txt": "/robots.txt",
  "agent_route": "/ai/agent-route.json",
  "agent_scorecard": "/ai/agent-scorecard.json",
  "agent_playbook": "/ai/agent-playbook.json",
  "custom_parser_primer": "/ai/custom-parser-primer.json",
  "parser_extension_policy": "/ai/parser-extension-policy.json",
  "examples": {
    "protocols": {
      "line_values": "/examples/protocols/line-values.json",
      "json_lines": "/examples/protocols/json-lines.json",
      "tlv": "/examples/protocols/tlv.json"
    },
    "samples": {
      "line_values": "/examples/samples/line-values.txt",
      "json_lines": "/examples/samples/json-lines.txt",
      "tlv_hex": "/examples/samples/tlv.hex"
    },
    "workspaces": {
      "vitals_dashboard": "/examples/workspaces/vitals-dashboard.json"
    }
  },
  "workspace_json": {
    "export_button": "[data-ai=\"export-workspace\"]",
    "file_import_button": "[data-ai=\"import-workspace\"]",
    "url_import_button": "[data-ai=\"import-workspace-url\"]",
    "url_import_param": "/serial?workspace=/examples/workspaces/vitals-dashboard.json",
    "online_examples": ["/examples/workspaces/vitals-dashboard.json"],
    "supported_import_sources": ["local JSON file", "same-origin repository JSON path", "HTTP(S) JSON URL"]
  },
  "validation": {
    "local_command": "pnpm verify",
    "demo_script": "/docs/demo-script.md",
    "agent_route": "/ai/agent-route.json",
    "scorecard": "/ai/agent-scorecard.json",
    "custom_parser_primer": "/ai/custom-parser-primer.json",
    "target_grade": "S",
    "success_signal": "Protocol examples parse into finite named channel values, /api/mserial exposes agentReadiness.grade = S, and /ai/agent-scorecard.json publishes the S/A/B/C/D rubric."
  },
  "agent_readiness": {
    "grade": "S",
    "score": 99,
    "scorecard_url": "/ai/agent-scorecard.json",
    "new_ai_first_actions": [
      "Read /llms.txt.",
      "Read /ai/agent-route.json.",
      "Read this manifest.",
      "Read /api/mserial.",
      "Read /ai/custom-parser-primer.json.",
      "Read /ai/agent-scorecard.json.",
      "Use /ai/browser-automation.json for UI work.",
      "Use /ai/protocol-profile.schema.json for protocol JSON generation; required fields are strict per protocol kind."
    ]
  },
  "capabilities": [
    "connect serial ports with Web Serial",
    "connect WebSocket device streams",
    "inspect RX and TX traffic",
    "turn device protocol notes into custom parser profiles",
    "generate, import, export, test, save, and apply protocol JSON profiles",
    "map parsed values into named channels for dashboard widgets"
  ],
  "protocol_profile": {
    "schema_url": "/ai/protocol-profile.schema.json",
    "supported_kinds": ["line-values", "json-lines", "tlv"],
    "direct_import_format": "single JSON object without Markdown",
    "preferred_ai_task": "Generate an importable protocol JSON profile from a device manual, field table, sample frames, or protocol notes."
  },
  "browser_automation": {
    "guide_url": "/ai/browser-automation.json",
    "first_read_order": [
      "/llms.txt",
      "/ai/agent-route.json",
      "/.well-known/mserial-ai.json",
      "/api/mserial",
      "/ai/custom-parser-primer.json",
      "/ai/parser-extension-policy.json",
      "/ai/agent-scorecard.json",
      "/ai/agent-playbook.json",
      "/ai/protocol-profile.schema.json",
      "/ai/browser-automation.json"
    ],
    "automation_priority": "Use home command selectors for navigation, then use protocol form selectors for editing and testing protocol profiles.",
    "stable_selectors": {
      "protocol_tab": "[data-ai=\"tab-protocol\"]",
      "home_view": "[data-ai=\"home-view\"]",
      "serial_app": "[data-ai=\"serial-app\"]",
      "enter_serial": "[data-ai=\"home-enter-serial\"]",
      "home_api": "[data-ai=\"home-open-api\"]",
      "home_command_panel": "[data-ai=\"home-ai-command-panel\"]",
      "home_endpoint_panel": "[data-ai=\"home-ai-endpoints\"]",
      "home_live_preview": "[data-ai=\"home-live-preview\"]",
      "home_command_protocol": "[data-ai-command=\"protocol.import\"]",
      "home_command_terminal": "[data-ai-command=\"terminal.inspect\"]",
      "home_command_canvas": "[data-ai-command=\"canvas.compose\"]",
      "agent_route": "/ai/agent-route.json",
      "agent_scorecard": "/ai/agent-scorecard.json",
      "agent_playbook": "/ai/agent-playbook.json",
      "load_demo_workspace": "[data-ai=\"load-demo-workspace\"]",
      "export_workspace": "[data-ai=\"export-workspace\"]",
      "import_workspace_file": "[data-ai=\"import-workspace\"]",
      "import_workspace_url": "[data-ai=\"import-workspace-url\"]",
      "send_file_panel": "[data-ai=\"sidebar-send-file\"]",
      "send_file_input": "[data-ai=\"send-file-input\"]",
      "send_file_start": "[data-ai=\"send-file-start\"]",
      "canvas_view": "[data-ai=\"canvas-view\"]",
      "canvas_empty_state": "[data-ai=\"canvas-empty-state\"]",
      "widget_panel": "[data-ai=\"widget-panel\"]",
      "settings_panel": "[data-ai=\"settings-panel\"]",
      "terminal_view": "[data-ai=\"terminal-view\"]",
      "terminal_screen": "[data-ai=\"terminal-screen\"]",
      "protocol_view": "[data-ai=\"protocol-view\"]",
      "new_line_protocol": "[data-ai=\"new-line-protocol\"]",
      "new_tlv_protocol": "[data-ai=\"new-tlv-protocol\"]",
      "protocol_name": "[data-ai=\"protocol-name\"]",
      "protocol_kind": "[data-ai=\"protocol-kind\"]",
      "protocol_baud_rate": "[data-ai=\"protocol-baud-rate\"]",
      "protocol_description": "[data-ai=\"protocol-description\"]",
      "protocol_test_input": "[data-ai=\"protocol-test-input\"]",
      "protocol_test_output": "[data-ai=\"protocol-test-output\"]",
      "test_protocol": "[data-ai=\"test-protocol\"]",
      "save_protocol": "[data-ai=\"save-protocol\"]",
      "save_and_apply_protocol": "[data-ai=\"save-and-apply-protocol\"]",
      "import_protocol_json": "[data-ai=\"import-protocol-json\"]",
      "export_protocol_json": "[data-ai=\"export-protocol-json\"]"
    }
  },
  "custom_protocol_json": {
    "identity_warning": "Do not treat Meow Serial as a plain serial terminal. The important feature is custom parsing from raw device data into named numeric channels.",
    "strategy": "Generate importable protocol JSON first. Source code changes are fallback only.",
    "executable_code_policy": "Imported protocol JSON is declarative data. Do not embed executable parser code in protocol JSON.",
    "agent_route_url": "/ai/agent-route.json",
    "primer_url": "/ai/custom-parser-primer.json",
    "extension_policy_url": "/ai/parser-extension-policy.json",
    "schema_url": "/ai/protocol-profile.schema.json",
    "playbook_url": "/ai/agent-playbook.json",
    "supported_kinds": ["line-values", "json-lines", "tlv"],
    "import_surface": {
      "path": "/serial?tab=protocol",
      "import_button": "[data-ai=\"import-protocol-json\"]",
      "file_input": "[data-ai=\"protocol-json-file-input\"]",
      "test_input": "[data-ai=\"protocol-test-input\"]",
      "test_button": "[data-ai=\"test-protocol\"]",
      "test_output": "[data-ai=\"protocol-test-output\"]",
      "save_and_apply": "[data-ai=\"save-and-apply-protocol\"]"
    }
  },
  "parser_extension_policy_summary": {
    "registered_builtin_parsers": ["raw"],
    "profile_generated_parser_kinds": ["line-values", "json-lines", "tlv"],
    "embedded_code_direction": "Generate firmware-side normalization to JSON Lines, line-values, or TLV, then import a matching protocol JSON profile.",
    "reviewed_code_parser_path": "Only add browser source-code parsers for protocols that cannot be expressed by the profile schema."
  },
  "minimal_external_ai_prompt": "Read https://s.mpas.top and generate an importable Meow Serial custom protocol JSON profile for my device. This is an advanced custom parser workflow, not a generic serial terminal.",
  "ai_prompt_template": "Generate one valid importable Meow Serial protocol JSON object. Use kind line-values, json-lines, or tlv. Return only JSON with no Markdown. Use decimal numbers, stable channel labels, and the schema at /ai/protocol-profile.schema.json."
}
