cobalt
Server Details
UX-review and product-feedback MCP: annotated screenshots and reviews your AI agent can act on.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
9 toolsadd_noteAInspect
Append a free-standing text note (not tied to a screenshot) to a review created by create_review. Use for context, steps taken, or a summary of findings between screenshots.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The note text (plain text or markdown). | |
| review | Yes | The review slug or URL from create_review. | |
| claim_token | Yes | The claim_token from create_review (authorizes the write). For a review the human has SAVED to their account, pass the agent token they generated on the review page (Export & more → Hand to your agent) here instead. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal a non-readonly, non-destructive write operation. The description adds useful behavioral context: the operation appends rather than overwrites, produces a free-standing note rather than a screenshot-bound annotation, and depends on an existing review from create_review. This goes beyond the annotation hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the operation and key distinction; the second gives practical use cases. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter tool with no output schema, the description gives enough context to call it correctly: it identifies the parent resource, the write authorization requirement via claim_token, and the intended use cases. It does not describe the return behavior, but that is not essential here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself does not add parameter-level detail, but the schema already documents review, claim_token, and text well, including the special saved-review token case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: append a free-standing text note to a review. It also explicitly distinguishes itself from add_screenshot by saying the note is not tied to a screenshot, leaving no ambiguity about what tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical use cases: context, steps taken, or a summary of findings between screenshots. It implies when add_note is appropriate and contrasts with screenshot-based additions, though it does not explicitly list exclusions or name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_screenshotAInspect
Append a screenshot (with an optional note) to a review created by create_review. The image is stored durably in Cobalt — this is the way to persist screenshots that would otherwise be lost when they only pass through a browser tool. Call once per screen as you go. NO BROWSER? Pass page_url and Cobalt renders the page for you (Cloudflare headless Chrome): viewport 'desktop' (1280px) or 'mobile' (390px phone, 2x), full_page true for the whole scroll. Use it for every screen you would otherwise only describe in text — a review without screenshots is a reduced deliverable, and the mobile viewport is how you test the phone fold without a device. The result includes the rendered image: LOOK AT IT before moving on. Cookie walls and modal veils are stripped automatically, but if what came back is still not the shot (an overlay, a blank, the wrong page), retake it in place with replace_item = that item's number, adding hide_selectors for anything you can name — never leave a useless capture in the review and never append a second copy after it. Otherwise the input is image_url: POST the image to https://cobaltcapture.com/api/upload (multipart field file, no auth, returns {url, key}) and pass back the url. If a browser-automation script took the screenshot, do that POST inside the same script (Python requests.post(...), or Playwright's request context) rather than shelling out to curl afterwards — same result, one less permission prompt. The image base64 parameter exists for small images only: tool-call arguments are model-generated text, so a real screenshot means emitting tens of thousands of base64 tokens perfectly, and an image you received as an image cannot be transcribed at all.
| Name | Required | Description | Default |
|---|---|---|---|
| image | No | For SMALL images only (< ~100 KB) that you already hold as base64 text: a base64-encoded PNG/JPEG/WebP (data: URL prefix accepted). Not the path for screenshots — emitting one as tool-call text is slow and error-prone, and an image you received as an image cannot be transcribed. Upload it and pass image_url instead. | |
| title | No | Optional short caption for the screenshot. | |
| review | Yes | The review slug or URL from create_review. | |
| comment | No | Optional note describing what this screen shows or what's wrong with it. | |
| page_url | No | A public http(s) page for Cobalt to render and screenshot server-side — the path when you have no browser or screenshot tool of your own (chat clients, text-only agents). Public pages only: nothing behind a login you signed into in your own session. Becomes the item's source_url unless you pass one. Takes 10–30 s (bot checks are waited through); a site that hard-blocks automated browsers returns a clear error — report that as a coverage gap, don't retry. | |
| viewport | No | With page_url: 'desktop' (1280x800, default) or 'mobile' (390x844 phone, 2x, touch) — the way to test the phone fold. | |
| full_page | No | With page_url: capture the entire scrollable page instead of the first viewport. Default false. Prefer the fold first; use full_page for one overview shot. Sites that scroll inside an inner container (some app-style marketing pages) come back fold-sized regardless — if that happens, say so rather than retrying. | |
| image_url | No | The image URL returned by Cobalt's own upload: POST the file as multipart field `file` to https://cobaltcapture.com/api/upload (returns {url, key}) — ideally from inside the script that captured it — or use the browser hook window.cobaltGrab(). Must be on Cobalt's own image host; external URLs are refused. | |
| source_url | No | Optional URL of the page the screenshot was taken on. | |
| claim_token | Yes | The claim_token from create_review (authorizes the write). For a review the human has SAVED to their account, pass the agent token they generated on the review page (Export & more → Hand to your agent) here instead. | |
| replace_item | No | RETAKE: the 1-based number of an existing screenshot item to overwrite in place with this capture (same position, pins cleared, title/comment replaced only if given). Use it when the image that came back wasn't the shot. Not for notes. | |
| hide_selectors | No | With page_url: extra CSS selectors to hide before the shot (e.g. ['#newsletter-modal', '.chat-widget']) when the returned image shows something still covering the page. Common cookie/consent banners are already removed on every render. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations carry only readOnlyHint=false and destructiveHint=false, so the description shoulders the transparency burden, and it delivers in detail: it discloses persistence ('stored durably in Cobalt'), rendering behavior (Cloudflare headless Chrome, bot checks waited through, 10-30s), stripping of cookie walls and modal veils, the requirement to inspect the result before moving on, and failure modes (overlay, blank, wrong page) with the replace_item remediation. This goes well beyond the annotations and tells the agent exactly what to expect side-effect-wise.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but this is a 12-parameter tool with multiple modes (browser-retake, server-side render, image-url upload, base64 edge case) and every sentence earns its place by disambiguating a decision an agent must make. It front-loads the core purpose, then the no-browser path, then retake behavior, then the upload flow, then the base64 caution. The only cost is density; an agent must read carefully, but the structure follows the natural call flow and is not padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter tool with two required params and no output schema, the description is unusually complete: it covers all three capture modes, authentication via claim_token, retake semantics, selector hiding, upload mechanics, timing, failure handling, and what to do after the result returns ('LOOK AT IT before moving on'). There is no material decision an agent faces that the description leaves unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is already 3, but the description still adds meaning beyond the schema. It clarifies that page_url is the no-browser path, that image_url must be on Cobalt's own host and is obtained via the upload endpoint (schema already says this, but description ties the flow together: POST then pass back the url), that image base64 is for small inputs only and not for screenshots, and that claim_token has a different route for saved reviews. The description integrates the parameters into workflows instead of just listing them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Append a screenshot (with an optional note) to a review created by create_review.' It immediately distinguishes itself from siblings like add_note (screenshots vs notes) and create_review (append to existing vs create), and the title restates it cleanly. The purpose is unambiguous and action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: 'Call once per screen as you go,' 'Use it for every screen you would otherwise only describe in text,' and 'a review without screenshots is a reduced deliverable.' It names the browser-tool alternative and routes around it: 'NO BROWSER? Pass page_url.' It also gives explicit retake guidance ('retake it in place with replace_item') and what not to do ('never append a second copy after it'). That is thorough, decision-ready guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_inboxARead-onlyInspect
Read mail delivered to an inbox from create_inbox — e.g. to pull a verification code or confirmation link out of a signup email. Returns newest-first. Mail usually lands within seconds; if the response is empty, wait a few seconds and call again (there is no blocking wait). Extract the code or link yourself and continue the flow in the browser. Pass format="html" when you are AUDITING the email rather than reading a code out of it: the default text view flattens away the layout, typography and branding, which is exactly what an email audit is judging.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | "text" (default) flattens each message to readable text — right for pulling a code or link. "html" returns the raw HTML part instead, for auditing the email as a rendered artifact: write it to a file, open it in the browser, and screenshot it. | |
| address | Yes | The inbox address from create_inbox. | |
| inbox_token | Yes | The inbox_token from create_inbox (authorizes reading). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond the readOnlyHint and openWorldHint annotations: there is no blocking wait, responses can be empty and should be retried, results are newest-first, and text mode flattens layout while HTML mode preserves it. This gives the agent accurate expectations for a sluggish, poll-for-mail tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by operational advice and format guidance. Every sentence earns its place, and the prose is dense but not bloated. It efficiently communicates a non-obvious retry behavior and the auditing use case without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description must carry return-behavior information. It covers ordering, emptiness, retry semantics, and the difference between text and HTML output. It doesn't specify the exact response envelope or fields, but it gives enough for an agent to call, read, extract, and continue.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3. The description adds meaningful guidance on the format parameter, explaining exactly why to choose text (code/link extraction) vs html (auditing layout, typography, branding). Address and inbox_token are adequately covered by the schema and referenced contextually.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Read mail delivered to an inbox from create_inbox.' It also gives concrete use cases (pulling a verification code or confirmation link) and a key behavioral trait ('Returns newest-first'), making its purpose unambiguous and distinct from related tools like create_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool gives clear context: use it to read inbox mail, retry after a few seconds if empty, and switch to format="html" when auditing instead of extracting a code. It does not explicitly name a sibling alternative or state when not to use the tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_inboxAInspect
Create a disposable email inbox you can monitor, for signing up to the product you're testing. Returns an address to type into the signup form and an inbox_token to read it with. Use this instead of asking the human for an email account or a third-party inbox API key — no setup needed. Inboxes are temporary; create a fresh one per test persona.
| Name | Required | Description | Default |
|---|---|---|---|
| review | No | Optional review slug this inbox belongs to — a label for your own bookkeeping. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnlyHint=false, and the description does not contradict that. It adds useful behavioral context: inboxes are temporary, and the returned address/token enable later reading, which arouses the agent to treat the inbox as disposable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences each carry weight: what the tool does, what it returns, and when/how to use it. No filler or repetition of annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description explicitly names the returned values (address and inbox_token). Combined with the sibling check_inbox and the simple single-parameter schema, the agent has enough context to call and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is only one optional parameter and the schema already provides a full description for it, so schema coverage is 100%. The tool description adds no parameter-specific details, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action — "Create a disposable email inbox" — and names the resource and its purpose (monitoring signup emails). It also distinguishes itself from sibling tools like check_inbox and create_review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use it: instead of asking the human for an email account or a third-party inbox API key, with no setup needed. It also advises creating a fresh inbox per test persona, giving clear routing and lifecycle guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reviewAInspect
Start a new Cobalt Capture review and get a handle for filling it in. Use this to compile the findings of any site study — a usability pass, a pricing teardown, a positioning audit, a QA run — into one shareable, durable report with real screenshots. Works from any client, chat assistants included: with no browser, add_screenshot(page_url=...) renders the pages for you. Returns a review slug and a claim_token — pass BOTH back to add_screenshot / add_note to append content. Also returns a review_url to share and a save_url the human opens (while signed in) to save the review to their account permanently. The review is anonymous and auto-deletes after 30 days unless saved.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the review, e.g. 'Onboarding walkthrough — Jupiter Invoice'. | |
| summary | No | Optional overview shown at the top of the review (plain text or markdown). Good place for the overall task, outcome, and headline findings. | |
| product_url | No | Optional URL of the product/site under review. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnlyHint/destructiveHint annotations, disclosing that the review is anonymous, auto-deletes after 30 days unless saved, returns two tokens that must both be passed back, and provides a save_url for permanent storage. This is exactly the kind of behavioral context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries distinct information: purpose, supported use cases, no-browser rendering, token mechanics, share/save URLs, and 30-day lifecycle. Content is front-loaded with the primary purpose and handle.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description fully documents all return values and their roles, including the requirement to pass both slug and claim_token back. It also covers the save flow and retention policy, so an agent has everything needed to invoke and follow up correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are already documented in the schema (100% coverage), so the description doesn't need to restate them. It adds value by explaining how the returned slug/claim_token wire into later calls, but no extra parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Start a new Cobalt Capture review') and resource, and clarifies it produces a handle for later appending. It also names the kinds of studies it supports, distinguishing it from sibling tools like get_review/update_review that operate on an existing review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: to compile findings from a site study into a shareable report. It also addresses the no-browser case by pointing to add_screenshot for rendering, but it doesn't explicitly say when not to use it or mention alternatives like update_review.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
email_reviewAInspect
Email a link to a finished review to the human who started the run, so they don't have to remember to come back for it — useful at the end of a long unattended study. Pass the review, its claim_token, and the human's email. IMPORTANT: we only send to a VERIFIED COBALT ACCOUNT address (this prevents the tool being used to send spam); if the address isn't a Cobalt account, the call is refused with a message telling the human to create a free account at cobaltcapture.com with that address first. The email contains only a link to the review — no text you provide — so ask the human for their account email and pass it verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | The human's Cobalt account email. Must belong to a verified account, or the send is refused. | ||
| review | Yes | The review slug or URL from create_review. | |
| claim_token | Yes | The claim_token from create_review (proves you created this review), or, for a saved review, the agent token its owner generated on the review page (Export & more → Hand to your agent). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behaviors beyond the annotations: only verified Cobalt account addresses are accepted, the call is refused otherwise, the email contains only a link and no custom text, and the agent should ask the human for the account email and pass it verbatim. This is rich, honest behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, usage instructions are direct, and the important verification warning is clearly separated. A little rationale is included, but it serves the agent's decision-making rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, inputs, eligibility, refusal behavior, and content limitations. It doesn't describe what a successful call returns, but with no output schema and a straightforward send action, this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, and the description adds useful nuance: review is a slug or URL from create_review; claim_token proves ownership or can be the saved-review agent token; email must be the verified Cobalt account address passed verbatim. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Email a link to a finished review to the human who started the run.' It clearly identifies the action, the object, and the recipient, and it is readily distinguishable from sibling tools like create_review and check_inbox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context ('useful at the end of a long unattended study') and tells the agent exactly what to pass: the review, its claim_token, and the human's email. It doesn't explicitly name alternative tools or state when not to use this one, but it does explain when calls will be refused, which is strong practical guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_playbookARead-onlyInspect
Fetch a Cobalt study playbook by name and follow it exactly. Works from ANY client — a coding agent driving a browser, or a chat assistant with no browser (Claude chat, Cowork, ChatGPT): the public-page studies run in full from chat, because add_screenshot(page_url=...) renders the pages for you. Use this when the user asks for any kind of site review, audit, teardown, or test and you don't already have the playbook text. Available: 'pricing_teardown' — can a buyer tell what they'd pay and which tier is theirs (public pages: runs anywhere); 'positioning_pass' — positioning and messaging audit of the public site (public pages: runs anywhere); 'comparison_study' — two or three products compared for one buying decision, with a sourced matrix and an overall lean (public pages plus web search: runs anywhere); 'usability_pass' — first-time-user usability audit: signs up with a disposable inbox, drives the product, finds friction (needs a browser you control); 'flow_pass' — walks a specific flow the user names, signup/checkout/invite, including any email it sends (needs a browser you control); 'investigation_pass' — the general product investigator for an app you OWN, run in its own environment (needs a browser and usually the repo). All deliver a shareable Cobalt review. If the user's study is NONE of these, do not bend it into the nearest one — its lenses and severity labels will mislabel the findings; run the generic method in the server instructions instead. Prefer this over fetching the playbook from a URL: it comes through the protocol complete, whereas web fetchers summarize it and a summarized playbook silently drops the instructions that make the run work.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The site to run it against, if you already know it. | |
| name | Yes | Playbook name, e.g. 'usability_pass'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description reveals important runtime behavior: which playbooks work from chat without a browser, which require a controlled browser, and how add_screenshot compensates for lack of browser access. It does not describe error conditions or exact return format, but the added environment and dependency context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense; nearly every sentence earns its place, especially the playbook-by-playbook breakdown and the explicit fallback instruction. It could be slightly more scannable, but the structure is logical and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers tool selection, environment compatibility, available values, fallback behavior, and why the protocol route is preferable. Since there is no output schema, it could have said a bit more about what the returned playbook contains, but overall it gives an agent enough context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining each playbook name's purpose and runtime requirements, which the schema alone does not convey. The url parameter is only lightly touched, but the name parameter semantics are substantially enriched.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Fetch a Cobalt study playbook by name and follow it exactly.' It also enumerates the available playbook variants with concrete purposes, making it easy to distinguish this fetch operation from sibling review/note tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'when the user asks for any kind of site review, audit, teardown, or test and you don't already have the playbook text.' It also gives exclusions ('If the user's study is NONE of these, do not bend it into the nearest one') and even advises preferring this over fetching from a URL.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewARead-onlyInspect
Fetch a Cobalt Capture review by its share link or slug. Returns the reviewer's notes as text AND each annotated screenshot as an image, so you can see exactly what was marked and what to change.
| Name | Required | Description | Default |
|---|---|---|---|
| review | Yes | A Cobalt review URL (https://cobaltcapture.com/r/<slug> or /s/<slug>) or just the slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as readOnlyHint=true, so the safety profile is covered. The description adds valuable behavioral details beyond annotations: it returns the reviewer's notes as text and annotated screenshots as images, and it explains the purpose ('see exactly what was marked and what to change'), which is not derivable from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states what the tool fetches and how to identify the review; the second states what it returns and why that matters. Every sentence earns its place, no fluff, and the key action is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with readOnlyHint coverage and no output schema, the description fully explains the return content (notes and annotated screenshots), which is exactly what an agent would need to know to invoke it correctly and interpret results. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the accepted formats (URL or slug). The description repeats this idea but does not add new parameter semantics beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch'), identifies the resource ('Cobalt Capture review'), and specifies the input form ('share link or slug'). It clearly differs from siblings like create_review, update_review, and email_review by being a pure read operation, and from get_playbook by targeting reviews instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this when you need to retrieve a review and see reviewer notes plus annotated screenshots. The description does not explicitly name alternatives or when-not conditions, but the read-only nature and resource specificity make the intended usage obvious in contrast to the siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_reviewAIdempotentInspect
Update a review's summary and/or title after the fact. Use this at the END of a run to land the verdict at the TOP of the review: the headline findings don't exist until the work is done, but readers (and agents ingesting the review) want them before scrolling past every intermediate screenshot. Prefer this over burying conclusions in a closing note.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Optional replacement title. | |
| review | Yes | The review slug or URL from create_review. | |
| summary | No | The overview shown at the top of the review — put the headline findings and outcome here. Replaces any existing summary. | |
| claim_token | Yes | The claim_token from create_review (authorizes the write). For a review the human has SAVED to their account, pass the agent token they generated on the review page (Export & more → Hand to your agent) here instead. | |
| compared_to | No | Optional: if this run RE-RAN an earlier study (compare mode), the prior review's slug or URL you compared against. Set it when finalizing a re-run so the improvement-over-time is recorded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the key behavioral traits (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds usage context about placing the verdict at the top of the review, but it does not disclose additional behavioral details such as authorization nuances, side effects beyond the summary/title replacement, or error behavior. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: the first sentence states the action, the second gives the key timing rationale, and the third gives a preference. Every sentence earns its place, and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich parameter schema and annotations, the description adds the crucial usage context (end-of-run finalization, top-of-review placement) that an agent needs. There is no output schema, but for an idempotent, non-destructive update tool, the description and schema together are sufficient. A minor gap is that the description does not explicitly mention the claim_token authorization requirement, but the schema covers it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all five parameters, including the special claim_token behavior. The description reinforces that summary and title are the primary mutable fields, but it does not add meaning beyond the schema. A baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Update a review's summary and/or title after the fact.' It clearly identifies the affected fields and the timing, distinguishing it from create_review (which creates) and add_note/screenshot (which add content) by emphasizing that this is for landing the final verdict at the top of the review.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool: 'Use this at the END of a run' and gives a specific preference over an alternative: 'Prefer this over burying conclusions in a closing note.' This gives an agent direct routing guidance between update_review and the note-adding pathway.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
- First observed
add_note - First observed
add_screenshot - First observed
check_inbox - First observed
create_inbox - First observed
create_review - First observed
email_review - First observed
get_playbook - First observed
get_review - First observed
update_review
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Human feedback for AI agents: share HTML, get a live review link, read anchored notes as markdown.
- mcpOAuthcom.screenshotink
Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.
AI-powered user research for everyone
The feedback board your AI agents work from: users vote, agents build over MCP. 22 tools.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceOpen-source human-in-the-loop design review tool that enables AI agents to upload UI screenshots for human feedback, with MCP tools for creating reviews, pinning notes, and getting structured feedback.2-
- FlicenseNot gradedqualityCmaintenanceHuman-to-AI code review bridge. Annotate UI elements in the browser with review comments, and AI agents read the feedback via MCP to fix code automatically — with full element context (CSS selector, styles, DOM path, accessibility info). 10 MCP tools, framework-agnostic Web Component, zero-config install via uvx.9-
- AlicenseNot gradedqualityBmaintenanceMCP-first UI/UX review layer for AI-generated frontends. Enables reviewing web pages via URL, capturing screenshots, extracting layout metrics, and generating structured repair plans for agents.22Apache 2.0
- AlicenseNot gradedqualityDmaintenanceMCP server for visual feedback, video direction, and QA assertions on web pages, enabling AI agents to read, reply, and resolve annotations in real time.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool owns a distinct action in the workflow: creating/fetching/updating/emailing a review, adding note versus screenshot content, creating/checking an inbox, and fetching a playbook. Even the two append tools are clearly separated by content type.
All tool names follow a clean lowercase snake_case verb_noun pattern: add_note, add_screenshot, create_inbox, create_review, check_inbox, email_review, get_playbook, get_review, update_review. No mixed conventions or vague verbs.
Nine tools is well-scoped for the server's purpose: review creation and population, retrieval and sharing, disposable inbox support, and playbook selection. Each tool earns its place with no obvious redundancy.
The review lifecycle is fully covered: create, append notes/screenshots, retrieve, update, and email the finished review. The inbox workflow has create and read, and auto-deletion plus the save_url cover the persistence question without needing a delete tool.