Skip to content

mcp: follow-ups for agent tools, lint rules and error capture #372

Open

Description

@erkamyaman

Items still open from the audit issue #358. The fixed items landed in #363; this issue tracks what is left. Each item says why it was not part of that fix.

From #358 (agent tools, lint rules and error capture)

Partly done (the rest is open):

  • Medium: email-in-url leaks the email: The finding's route now replaces each address with [email] (EMAIL_IN_URL in rpc/router-config-tools.ts), covered by a new test. redactUrl still leaves emails alone: masking them there would change every HTTP and router URL, which is a product decision.

Open:

  • Low: forms rejection attribution: Confirmed, but the collector only wraps the submitState.selfSubmitting flag and has no handle on the action's promise. Fixing it needs a different hook into submit().
  • Low: no tool titles / tags / structuredContent: Touches every registerTool call and changes the list tools' output shape. Too wide for a small, safe fix.
  • Low: inconsistent page argument (pageId aliases): Dropping the aliases is a breaking change planned for a minor release, so it is a release decision.
  • Improvement: generate AGENT_INSPECTOR/ACTION_TOOLS/PAGE_AGENT_ENTRIES from metadata: Refactors config across many files, not a small local change.
  • Improvement: MCP prompts for workflows: New feature and new API.
  • Improvement: per-page resource templates and list_changed: New API and needs a design.
  • Improvement: general wait-for tool: New tool.
  • Improvement: snapshot-everything export tool: New tool.
  • Improvement: keep tool descriptions under ~600 chars: Needs an editorial pass over several long descriptions, with matching docs. Left for a separate change.
  • Improvement: module and lazy-chunk graph tool: New feature.
  • Improvement: server-side SSR and Vite error capture: New feature, and it overlaps with phase 3 of 4: a shell you live in #342.
  • Improvement: template diagnostics lint-templates tool: New tool.
  • Improvement: perf collector (LCP/CLS/INP/long tasks): New collector.
  • Improvement: lazy chunk sizes per route: New feature.
  • Improvement: lint rule config to turn rules off: New public config option.
  • Improvement: JSON/SARIF lint export through the CLI: New CLI feature.

Done since

Activity

  1. added
    bugSomething is broken or shows wrong data
    featureA feature request or a pull request that adds one
    on Oct 12, 2026
  2. Kaap10 commented on Oct 12, 2026

    @Kaap10
    Contributor

    Happy to see #365 merged. My focus is on the MCP and agent tools side of this issue.

    Looking at the remaining tasks, the MCP-specific items break down into 8 focused PRs to keep changes small and reviewable:

    1. Tool descriptions: trim long descriptions under ~600 chars to save LLM context
    2. Tool metadata: add titles, tags, and structuredContent for list tools
    3. Config refactor: derive AGENT_INSPECTOR, ACTION_TOOLS, and PAGE_AGENT_ENTRIES from tool metadata
    4. New tool: general wait-for agent tool (app stability, navigation, HTTP idle)
    5. New tool: snapshot-everything export tool
    6. New tool: template diagnostics lint-templates tool
    7. MCP prompts API for common workflows (debug-form, route issues, change detection)
    8. Per-page resource templates with list_changed notifications

    I can take on the next item and would like to start with trimming tool descriptions under ~600 chars (safe and non-breaking) or adding tool titles and tags. Let me know if you would like me to proceed @erkamyaman

  3. erkamyaman commented on Oct 12, 2026

    @erkamyaman
    MemberAuthor

    Thanks @Kaap10, great work on #365 and a solid breakdown 🙌 Go ahead with 1 (trimming tool descriptions), it's safe to start now. Please hold 2 and 3 for a bit: a PR for the phase 1 security items in #340 is about to change how tools are registered and tiered in config.ts and devframe.ts. I'll ping you here when it lands, so you can build the metadata and the derived lists on top of it. 4–8 sound good too. Let's take them one at a time after that. Keep each PR small like #365 and update the matching docs pages in apps/docs.

  4. erkamyaman commented on Oct 12, 2026

    @erkamyaman
    MemberAuthor

    @Kaap10 the phase 1 security PR is merged (#375), so 2 and 3 are unblocked 🚀

    A few things it changed that 2 and 3 should build on:

    • Safety tiers: config.ts now has AGENT_SAFETY, which marks each tool as read, action or destructive. readOnly keeps only the read tools. Please treat the tier as part of each tool's metadata, so the derived lists in 3 pick it up too.
    • Action tools: ACTION_TOOLS.router is now ['navigate', 'clear-recordings']. Some tools are free in some modes, which is in ACTION_TOOL_FREE_MODES (for example change-detection with mode: 'read').
    • Page ownership: page answers are now accepted only from the connection that owns the page. dispatch-ngrx-action refuses when it can't tell which page to use.

    For 3, the derived AGENT_INSPECTOR, ACTION_TOOLS, PAGE_AGENT_ENTRIES and AGENT_SAFETY should match what's there today exactly. A test that compares them would make the review easy.

    Same as before: one small PR at a time, with the matching docs pages in apps/docs updated. Thanks!

  5. Kaap10 commented on Oct 12, 2026

    @Kaap10
    Contributor

    @erkamyaman, opened PR for # 1 (tool descriptions under 600 chars with regression tests).
    Noted on the #375 changes - will incorporate safety tiers and metadata into # 2 next once this lands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething is broken or shows wrong datafeatureA feature request or a pull request that adds one

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions