Document durable MCP tool contracts - #489
Conversation
|
Preview deployment for your docs. Learn more about Mintlify Previews.
💡 Tip: Enable Workflows to automatically generate PRs for you. |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
Stale comment
Risk Assessment: Very Low
Verdict: Approval retained (no re-approval)
Re-evaluation trigger
PR was synchronized after a prior Very Low approval on
b180f7a. Re-assessed head7c895e7.Summary
Still documentation-only. Three MCP tool reference MDX pages; no application code, infrastructure, auth, or runtime behavior changes. Delta since prior approval is small parameter-constraint wording only.
Evidence
Factor Assessment Codepaths modified Docs only: manage-browser-pools.mdx,manage-profiles.mdx,manage-proxies.mdxDiff size 3 files, +40 / −17 (full PR); incremental commit is clarification-only Blast radius Documentation site content only Infra / security impact None Production logic None CODEOWNERS None present What changed (current head)
- Documents
updateand related clear/config parameters for browser pools- Documents
get/rename(and related notes) for profiles- Documents
get/rename/checkfor proxies- Clarifies constraints (
viewport_refresh_ratedeps,new_namecharset,check_urldefault wording)Decision
Fits Very Low (documentation-only, small scoped diff, no shared systems or production logic). Risk did not increase vs. prior approval, so previous approval is left in place. Per policy, not re-approving an already-approved PR.
Sent by Cursor Automation: Assign PR reviewers
There was a problem hiding this comment.
Stale comment
Risk Assessment: Very Low
Verdict: Approval retained (no re-approval)
Re-evaluation trigger
PR was synchronized after a prior Very Low approval. Re-assessed head
d3b724c.Summary
Still documentation-only. Three MCP tool reference MDX pages under
reference/mcp-server/tools/; no application code, infrastructure, auth, or runtime behavior changes. Incremental delta since the last assessment is a one-word clarification (ASCIIon the profilenew_namecharset).Evidence
Factor Assessment Codepaths modified Docs only: manage-browser-pools.mdx,manage-profiles.mdx,manage-proxies.mdxDiff size 3 files, +40 / −17 (full PR); latest commit is wording-only Blast radius Documentation site content only Infra / security impact None Production logic None CODEOWNERS None present What changed (current head)
- Documents
updateand related clear/config parameters for browser pools- Documents
get/rename(and related notes) for profiles- Documents
get/rename/checkfor proxies- Clarifies parameter constraints (including ASCII charset for profile rename)
Decision
Fits Very Low (documentation-only, small scoped diff, no shared systems or production logic). Risk did not increase vs. prior approval, so previous approval is left in place. Per policy, not re-approving an already-approved PR.
Sent by Cursor Automation: Assign PR reviewers
masnwilliams
left a comment
There was a problem hiding this comment.
the new operations are useful, but the reference still does not accurately describe the durable contract. the create-only defaults and shared profile-name invariant need to be corrected before merge.
there is also a structural sync problem here: all three registered tools expose limit and offset for list, and manage_profiles exposes query, but these parameter tables omit them. since these pages manually duplicate the registered Zod schemas, they have already drifted while this PR is updating them. please add the missing fields in this PR; longer term, generating these tables from the schemas or adding a parity check would keep this contract durable.
git diff --check, broken-links, Mintlify preview, and BugBot pass. the separate Vercel deployment check is still failing.
| | `id_or_name` | Pool ID or name. Required for `get`, `update`, `delete`, `flush`, `acquire`, and `release`. | | ||
| | `name` | (create, update) Unique pool name. | | ||
| | `size` | (create, update) Number of browsers to maintain in the pool. | | ||
| | `fill_rate_per_minute` | (create, update) Integer pool fill rate percentage per minute. Default 25; use `0` to pause filling. | |
There was a problem hiding this comment.
these defaults are create-only, but the row now scopes them to both create and update. updates are PATCH operations: omitting fill_rate_per_minute preserves the stored value rather than applying 25. the same issue appears on timeout_seconds at line 42. please say “on create, defaults to …; on update, omit to leave unchanged” for both fields. the API contract explicitly keeps create defaults out of PATCH schemas.
There was a problem hiding this comment.
Fixed in 05536f6. Both rows now distinguish create defaults from PATCH omission: create defaults to 25/600, while update omission preserves the stored value.
| | `action` | Operation to perform: `setup`, `list`, `get`, `rename`, or `delete`. Required. | | ||
| | `profile_name` | (setup, get, rename, delete) Exact profile name. For setup: 1–255 chars. | | ||
| | `profile_id` | (get, rename, delete) Profile ID. Alternative to `profile_name`. | | ||
| | `new_name` | (rename) New profile name. Must be 1–255 characters using ASCII letters, numbers, dots, underscores, or hyphens. | |
There was a problem hiding this comment.
this documents only part of the profile-name invariant, and the preceding profile_name row gives setup a weaker rule even though create and rename share the same API validator. both require 1–255 ASCII letters, numbers, ., _, or -; both reject 24-character lowercase alphanumeric names because they are ambiguous with profile IDs; and both require uniqueness within the logical project. can we state that invariant once and apply it to setup and rename so the two rows cannot drift?
There was a problem hiding this comment.
Fixed in 05536f6. Setup profile_name and rename new_name now point to one shared invariant covering length, ASCII character set, project uniqueness, and the 24-character lowercase-alphanumeric ID ambiguity.
| | `viewport_width` and `viewport_height` | (create, update) Window dimensions in pixels. Supply both together. | | ||
| | `viewport_refresh_rate` | (create, update) Display refresh rate in Hz. Requires `viewport_width` and `viewport_height`. | | ||
| | `timeout_seconds` | (create, update) Idle timeout for acquired browsers. Must be between 10 and 259200 seconds. Default 600. | | ||
| | `discard_all_idle` | (update) Discard all idle browsers after applying the configuration. | |
There was a problem hiding this comment.
this leaves out the lifecycle behavior most likely to produce a mixed-configuration pool. only browsers idle at update time are discarded; acquired browsers retain the old configuration, and releasing one with the default reuse: true puts that old configuration back into the pool. please include that warning here or link directly to the canonical browser-pool update section, which already explains the reuse: false and later flush/discard recovery paths.
There was a problem hiding this comment.
Fixed in 05536f6. The reference now explains that only currently idle browsers are discarded, that acquired browsers can return the old configuration under reuse: true, and links to the canonical update section for reuse: false and later flush/discard recovery.
|
Also fixed the schema-table drift from the review summary in 05536f6: |
There was a problem hiding this comment.
Risk Assessment: Very Low
Verdict: Approval retained (no re-approval)
Re-evaluation trigger
PR was synchronized after a prior Very Low approval. Re-assessed head 05536f6.
Summary
Still documentation-only. Three MCP tool reference MDX pages under reference/mcp-server/tools/; no application code, infrastructure, auth, or runtime behavior changes. Incremental delta since the last assessment adds list pagination/query fields, create-vs-update default wording, shared profile-name rules, and discard_all_idle behavior notes.
Evidence
| Factor | Assessment |
|---|---|
| Codepaths modified | Docs only: manage-browser-pools.mdx, manage-profiles.mdx, manage-proxies.mdx |
| Diff size | 3 files, +51 / −17 |
| Blast radius | Documentation site content only |
| Infra / security impact | None |
| Production logic | None |
| CODEOWNERS | None present |
What changed (current head)
- Documents
updateand related clear/config parameters for browser pools - Documents
get/rename(and related notes) for profiles - Documents
get/rename/checkfor proxies - Adds
limit/offset(and profilesquery) for list actions - Clarifies create-only defaults, shared name invariants, and idle-discard semantics
Decision
Fits Very Low (documentation-only, small scoped diff, no shared systems or production logic). Risk did not increase vs. prior approval, so previous approval is left in place. Per policy, not re-approving an already-approved PR.
Sent by Cursor Automation: Assign PR reviewers
masnwilliams
left a comment
There was a problem hiding this comment.
all requested changes are addressed in 05536f6. the create/update defaults, shared profile-name invariant, list/search parameters, and mixed-configuration pool lifecycle are now documented accurately. re-checked the full diff and found no remaining actionable code-quality issues.


Summary
Why
The MCP reference lagged the durable API and updated MCP tool surface. This makes supported operations, validation, clear behavior, and destructive side effects explicit.
Merge order
Merge after kernel-mcp-server#139 and kernel-mcp-server#140, because this reference documents behavior introduced by those implementation PRs.
Verification
broken-linksgit diff --checkkernel/kernelmergedorigin/mainNote
Low Risk
Documentation-only changes with no runtime or security impact; accuracy depends on merging after the referenced MCP server implementation PRs.
Overview
Updates the MCP reference for
manage_browser_pools,manage_profiles, andmanage_proxiesso it matches the durable API and expanded tool surface (intended to land after the corresponding MCP server PRs).Browser pools — Documents the
updateaction plus list pagination, many create/update fields (profile, extensions, proxy,start_url, viewport,chrome_policy, etc.), clear semantics (empty string/object,clear_profile,clear_extensions), validation/defaults (e.g.fill_rate_per_minutedefault 25,timeout_secondsbounds), authoritativeprofile_id/extension_idsin responses, and howdiscard_all_idleinteracts with acquired browsers andreuse.Profiles — Adds
getandrename, listquery/ pagination, shared naming rules (including ID ambiguity), exact-name setup, duplicate-name recovery, and a warning not to rename while a browser is using the profile.Proxies — Adds
get,rename, andcheck(optionalcheck_url), plus list pagination andnameon rename.Reviewed by Cursor Bugbot for commit 05536f6. Bugbot is set up for automated code reviews on this repo. Configure here.