Describe the server by what an agent can accomplish - #198
robertjamesprior wants to merge 3 commits into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Low priority, and copy judgment more than code. The registry caps The real question is whether those two pieces of text say what you would say. Everything else is a JSON edit and two lines in the handler. Behind the CUA-TS work. No rush on this one. |
masnwilliams
left a comment
There was a problem hiding this comment.
two small copy changes before merge: make the execution ladder a per-step preference rather than a one-time choice, and apply the KERNEL brand rules to the new model-facing prose. the implementation itself looks clean.
|
|
||
| Kernel runs real Chrome browsers in the cloud. Reach for it when the task is on a website: navigating a site, acting inside an authenticated account, filling and submitting forms, uploading or downloading files, or driving a page that offers no other interface. When a purpose-built integration covers the same task, use that instead. | ||
|
|
||
| Once a session exists, try these in order and stop at the first one that works: |
There was a problem hiding this comment.
stop at the first one that works is too strong. a task can use webmcp for one step and still need playwright or computer control for another; awaiting_submission already requires that handoff. can we frame this per step instead? for example: for each step, prefer these layers in order. move to the next when the current layer is unavailable or insufficient.
|
|
||
| Once a session exists, try these in order and stop at the first one that works: | ||
|
|
||
| 1. webmcp: tools the site itself exposes to agents. Fastest and least brittle where a site provides them. |
There was a problem hiding this comment.
can we give all of this new model-facing prose a KERNEL brand pass? use KERNEL, lowercase sentence starts and technical terms (chromium, dom), and replace fastest and least brittle with the mechanism that earns the preference, such as prefer this when available because the site defines the action contract.
| "name": "com.onkernel/kernel-mcp-server", | ||
| "title": "Kernel MCP Server", | ||
| "description": "Access Kernel's cloud-based browsers and app actions via MCP (remote HTTP + OAuth).", | ||
| "description": "Use any website on a user's behalf in a cloud browser: navigate, sign in, fill forms, buy, download.", |
There was a problem hiding this comment.
same brand requirement here: KERNEL-authored prose should start lowercase, so this should begin with use.
The registry description spent its 100-character budget on transport and auth, so a host agent picking among installed integrations had nothing to match a task against. Rewrite it around the job, and add server instructions on initialize for the framing that does not fit in 100 characters, including the order to try WebMCP, Playwright and computer use. Also point repository.url at the current org, replace the onkernel.com links that now redirect, add websiteUrl, and move $schema to the version the registry stores entries under. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The MCP registry only matches the server name when searching, so the description is read by humans scanning a catalog and by third-party catalogs that index text. Spend all 100 characters on the job and the verbs rather than leaving 6 unused, and keep "cloud browser" in for the catalogs that do index descriptions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Review feedback: a task can use webmcp for one step and still need playwright or computer control for another, which awaiting_submission already forces, so a one-time choice was the wrong framing. Also lowercase the model-facing prose per KERNEL brand rules, keep KERNEL uppercase, and replace "fastest and least brittle" with the mechanism that earns the preference: the site defines the action contract rather than the caller inferring it from the dom. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
e13125d to
a8940a5
Compare
|
both addressed. per-step, not a one-time choice. reframed to "for each step, prefer these layers in order. move to the next when the current one is unavailable or insufficient", and added the brand pass. lowercase throughout including sentence starts and 625 tests pass. |
Summary
server.jsondescription around what the server lets an agent do, using the full 100 characters the schema allows. The previous sentence spent 30 of its 83 on "via MCP (remote HTTP + OAuth)", which every entry in the registry shares.instructions, returned oninitialize. That is where the longer framing fits: when to reach for Kernel, and what order to try WebMCP, Playwright and computer use in.repository.urlat the current org, replaced theonkernel.comlinks (they now 301 towww.kernel.sh), addedwebsiteUrlsince that is the field the current schema defines, and moved$schemato the 2025-09-29 version the registry actually stores entries under.What I checked before choosing the wording
The registry's
searchparameter matches the server name only. Searchingcaptchareturns five servers that all have it in the name and misses the one that has it only in its description.stagehandreturns nothing despite appearing in a description, andcloud-based browsersreturns nothing despite being our current description verbatim.Two consequences:
com.onkernel/kernel-mcp-server, which matcheskernelandonkerneland nothing for browser, web, automation or scrape. Out of scope here, but worth a separate decision.Length is also a convention: the registry median is 91 characters and 57% of entries sit at 90 or above.
Notes for review
title,tags,categories,homepage_url,documentation_urlandlicenseare not in the registry schema and are not published. Left in place rather than widen the diff, but they are not a lever.publish-mcp.ymlhas its push trigger commented out, so the live entry needs aworkflow_dispatchrun to pick this up. It has not changed since 2025-09-09.Testing
bun test: 605 pass, 0 fail. Two new tests: one pins the 100-character limit, which fails registry publication rather than CI if exceeded, and one pins the escalation order stated in the instructions.🤖 Generated with Claude Code
Note
Low Risk
Metadata and initialize-time instructions only; no auth, transport, or tool behavior changes.
Overview
Reframes how the Kernel MCP server presents itself to agents and the registry:
server.jsongets a capability-focused description (within the 100-character registry cap), bumps$schemato 2025-09-29, addswebsiteUrl, and updates homepage/docs/repo links from onkernel.com to kernel.sh / the kernel GitHub org.Adds
MCP_SERVER_INSTRUCTIONS(built from the registry description plus guidance on when to use cloud browsers and the webmcp → execute_playwright_code → computer_action escalation) and returns it on MCPinitializevia the transportserverInfo.Tests lock the description length and the stated tool escalation order.
Reviewed by Cursor Bugbot for commit a8940a5. Bugbot is set up for automated code reviews on this repo. Configure here.