bookmarks
Operates on browser bookmarks and tab groups in Brave (via the Chromium-compatible extension, loaded through brave://extensions). Agents can search, file, and reorganize bookmarks, apply project templates, run health checks and duplicate cleanup, manage an Inbox, and group open tabs by project.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@bookmarkssearch my bookmarks for convex and file the best result under Read this"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
With no setup beyond loading the extension, your browser becomes the place where you and your coding agents index your knowledge together, in sync. Your agent researches something and the sources land in your bookmarks bar, filed under the task, ready for you to read and audit. You drop a link in your Inbox, and your agent files it where it belongs. Your tab groups follow your projects. Everything changes live, with no restart, and syncs to your phone through your browser's own sync.
Why
Seamless knowledge transfer. Agents file research into
Read this > yy.mm.dd - Task namewith every source, so you're never in the dark about where an answer came from.Easy-to-track templates. Project folders with In use (what the project is wired to) and Considering (what was evaluated). Dated research folders. An agent-kept Index.
Agents that organize with you. Search, health checks, duplicate cleanup, favicon loading, snapshots and one-command restore. Nothing is ever hard-deleted.
Tab groups, project-based. One click (or one tool call) groups every open tab under its project, based on your bookmark folders. Open a folder as a group, or save a group as a folder.
Works with your preferences. Your locked folders stay yours. Agents work in the spaces you give them.
Local only. No accounts, no servers, no analytics. The optional agent bridge listens on
127.0.0.1only.
Related MCP server: Clawmarks
Install
Extension: Chrome Web Store (coming soon), or
chrome://extensions/brave://extensions→ Developer mode → Load unpacked →extension/.That's it for the side panel. Click the toolbar icon to open it: search, project-based tab grouping, templates, health check, icon loading.
Connect a coding agent (optional)
Requires uv (it fetches Python 3.15 and the MCP SDK on first run).
MCP (Claude Code, Cursor, Zed, any MCP client):
{
"mcpServers": {
"bookmarks": {
"command": "uv",
"args": ["run", "--directory", "/path/to/agentic-bookmark-manager", "mcp_server.py"]
}
}
}Claude Code: claude mcp add bookmarks -- uv run --directory /path/to/agentic-bookmark-manager mcp_server.py
The server ships instructions explaining the conventions, so an agent with no prior context knows how to use it.
CLI: uv run abm.py --help
uv run abm.py search convex
uv run abm.py read-this "Understanding File Structure Architecture" "Diátaxis" https://diataxis.fr/ --note "why"
uv run abm.py organize --dry
uv run abm.py project "New Client" --under MTS
uv run abm.py doctor --fixHow it works
agent --MCP/CLI--> abm.py --> queue --> server.py (127.0.0.1:47817) <--long-poll-- extension --> bookmarks / tab groups
\--> live tree back to the agentextension/: Manifest V3. Side panel works on its own; when the local bridge is running it also applies agent operations and streams the live bookmark tree back.
server.py: stdlib HTTP server bound to
127.0.0.1. Requests need headerX-ABM: 1, so web pages can't drive it.abm.py: the CLI (stdlib only). Starts the server on demand. If the browser is closed, operations wait and apply when it opens.
mcp_server.py: MCP server (official Python SDK) exposing every command as a tool.
Conventions
Folder | Who writes | Purpose |
Your project folders | You (agents add on request) | Root = hot links; In use; Considering |
| Agent | Research for you, with sources and a |
| Agent | Everything not locked down; finished Read-this folders move to |
| You | Drop links for your agent to file |
| Agent | Where "deleted" things go. Nothing is hard-deleted |
Tests
python test_bridge.py: protocol, header guard, CLI (no browser).python test_e2e.py: 23 checks in a real Chromium browser with a throwaway profile on port 47818 (never touches your bookmarks).uv run test_mcp.py: MCP handshake, tool list, a live call.python package.py: builds the Web Store zip indist/.
Issues
Please file issues and ideas at github.com/jgharbieh/agentic-bookmark-manager/issues.
Privacy
Everything stays on your device. See PRIVACY.md.
License
MIT
Available Tools
25 toolsaddB
Add a link to a folder (created if missing). Skips if that URL is already in the folder.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| title | Yes | ||
| folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose two substantive behaviors: the target folder is auto-created if missing (a side effect), and the call is idempotent per-URL (skips duplicates). It omits permission/auth requirements and failure modes, but for a low-risk write it covers the non-obvious effects well.
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 short sentences, zero filler, with the core action front-loaded and the side effect and idempotency behavior following immediately. 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?
An output schema exists, so return values need not be described, which the description correctly omits. However, the 0%-coverage input schema leaves 'title' unexplained in both places, and no sibling or usage context is provided for an ambiguously named 'add'. Adequate but with a real 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 description coverage is 0% and no property carries a description, so the description must compensate. It implicitly explains 'folder' (created if missing) and 'url' (dedup key), but 'title' is never clarified at all, leaving one of three required parameters undefined. Partial compensation only.
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 pairs a specific verb with a specific resource ('Add a link to a folder') and qualifies the scope with parenthetical behavior. This distinguishes it from read/list siblings like read_this, tree, or search, though it never names an alternative. The generic name 'add' is rescued by the description, but sibling-level differentiation is left implicit.
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?
There is no when-to-use guidance and no mention of alternatives among a large sibling set that overlaps conceptually (note, save_group, snapshot, move). The only guidance-adjacent content is the dedup skip, which is behavior rather than selection criteria. An agent gets no help deciding this over, say, note or save_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorA
Health report: duplicates, empty folders, saved search pages, localhost links (+ dead links if asked). fix=True trashes duplicates and empty folders (recoverable from _Trash).
| Name | Required | Description | Default |
|---|---|---|---|
| fix | No | ||
| check_dead_links | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does the most important part well: fix=True trashes duplicates and empty folders, and that the removal is recoverable from _Trash. It still does not say whether saved search pages or localhost links are ever removed, nor whether dead-link checking has network cost or latency.
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, no filler, and the high-stakes detail (fix=True is destructive but recoverable) is placed second where it is still highly visible. The telegraphic '(+ dead links if asked)' is compact but slightly ambiguous for a boolean named check_dead_links.
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?
An output schema exists, so return values need not be described, yet the description helpfully enumerates what the report contains and clearly flags the one mutating behavior and its reversal. Remaining gaps are minor: no confirmation/permission requirements and no scope boundary on what fix leaves untouched.
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 0%, so the description must define both parameters, and it does: fix=True triggers trashing with a stated recovery path, and check_dead_links is covered by '(+ dead links if asked)'. The semantics are conveyed, though 'if asked' is loose phrasing for a boolean flag.
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 name 'doctor' is opaque, but the description immediately specifies the operation and its outputs: a health report covering duplicates, empty folders, saved search pages and localhost links. That is specific enough to separate it from siblings like tree, search and trash, though it never names the domain (bookmarks) or differentiates against any sibling by name.
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?
Usage is implied rather than stated: run it to audit for cleanup, and pass check_dead_links 'if asked'. The fix=True path is described, but there is no explicit when-to-use/when-not guidance, no prerequisites, and no mention of whether the report is safe to run repeatedly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doneC
User finished reading: move "Read this > " into Index > Research.
| Name | Required | Description | Default |
|---|---|---|---|
| read_this_folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals the hard-coded destination (Index > Research), which is useful, but says nothing about permissions, reversibility, or what happens to the folder's contents on a move.
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?
It is a single sentence with no padding and the trigger is front-loaded. The nested quotes and angle-bracket template, however, make it harder to parse than a plain statement would be.
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?
An output schema exists so return values need not be explained, but for a mutation tool with zero annotations and 0% parameter coverage the description does too little: it never clarifies the source location semantics, the effect on contents, or how it differs from the sibling 'move'.
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 0% and the single parameter has only a title ('Read This Folder'). The description partially compensates by embedding '<folder>' inside the 'Read this > <folder>' path, indicating the argument names a folder within 'Read this', though the exact format remains ambiguous.
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 name 'done' is opaque on its own, but the description supplies a specific verb (move) and resource (a folder under 'Read this') plus the destination (Index > Research). It is enough to infer the tool's job, but the quoted templated phrasing is cryptic and the name gives no independent signal.
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?
It implies a trigger condition ('User finished reading'), which is a sliver of usage context. However, it never names the obvious alternative 'move' for arbitrary moves, nor says when not to use this specialized workflow action, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faviconsB
List bookmarks showing the blank icon. warm=True loads each once in a minimized window so the icon is stored.
| Name | Required | Description | Default |
|---|---|---|---|
| warm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses a non-obvious side effect: warm=true loads each bookmark once in a minimized window so the icon is stored, which tells an agent this is not a pure read and triggers network/browser activity. It omits how long that takes, whether it is rate-limited or can fail, and whether the returned list changes after warming.
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 with zero filler, front-loading the primary listing behavior and following with the one parameter that changes it. Nothing is redundant with the schema and no sentence could be cut without losing information.
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?
An output schema exists, so return values need not be described, and with one optional param the surface is small. However, the description leaves open how many bookmarks are returned, what scope is scanned (all bookmarks, one folder, a browser profile), and whether warming is expected to be slow — gaps that matter for an unannotated mutation-capable call.
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 0% — the single 'warm' property has only a type and default, no description — so the description must compensate, and it does: it defines warm=True as 'loads each once in a minimized window so the icon is stored'. The default of false is left implicit, but the semantic contrast between listing and warming is clear.
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 gives a specific verb and resource ('List bookmarks') plus a precise filter ('showing the blank icon'), which resolves the ambiguity of the bare name 'favicons'. It does not name or contrast with any sibling (e.g. search, doctor, suggest), so an agent must infer that this is the favicon-repair path rather than a general listing.
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 explains the warm flag's mechanics but never states when an agent should call this tool, when it should not, or what alternatives exist among the many bookmark siblings. There is no mention of how frequently to re-run the warm pass or whether the listing alone is the diagnostic step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
group_tabsC
Group open tabs whose title/URL contain all the words into a group named title.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| words | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not say what happens if the named group already exists, whether a new group is created, what occurs when zero tabs match, or whether the operation is reversible. For a mutating tab-group tool this is a substantial gap.
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?
A single sentence with the action and matching rule front-loaded; nothing is wasted. Slightly awkward phrasing around 'into a group named title' but structurally efficient.
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?
An output schema exists, so return values need not be described. But with no annotations and 0% schema coverage, the description leaves key behaviors of a mutating tool unspecified (existing-group handling, no-match behavior), so it is not complete enough for confident invocation.
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 0%, so the description must compensate. It does explain both parameters: 'words' is matched against tab title/URL and 'title' is the resulting group name. However, it omits the expected format of 'words' (space-separated? case sensitivity? AND semantics are only implied by 'all').
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 names a specific verb (group), the resource (open tabs), the matching condition (title/URL containing all the words), and the result (a group named title). It is clear on its own, but it never references or distinguishes itself from close siblings like organize_tabs or manage_group.
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?
There is no guidance on when to use this versus organize_tabs, manage_group, or open_folder_as_group. No preconditions or exclusions are stated, leaving the agent to infer selection from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inboxA
List what the user dropped in the Inbox folder for you to process (creates the folder if missing).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose one genuinely non-obvious trait — the tool creates the folder if missing, i.e. a write side effect on a listing operation — but says nothing about permissions, idempotency, or ordering. Return shape is covered by the output schema, so that omission is acceptable.
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?
A single sentence with the primary action front-loaded and the side effect tucked into a parenthetical. 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 zero-parameter tool with an output schema, the description covers purpose and the one surprising side effect, which is enough to call it safely. The only gap is routing relative to siblings that also enumerate content.
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?
The tool takes zero parameters, so there is no parameter semantics to document; baseline 4 applies. Nothing in the description misrepresents the argument surface.
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 verb ('List') and a specific resource ('the Inbox folder'), and adds scope with 'what the user dropped in ... for you to process'. It is clear what the tool returns, but it does not distinguish itself from list-adjacent siblings such as tree, search, or read_this.
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?
'for you to process' implies a workflow context (inbox triage), which is useful implied guidance. However, there is no explicit when-to-use vs when-not-to-use statement and no named alternative among the many siblings that also surface items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_groupC
ungroup | close (closes its tabs; Ctrl+Shift+T reopens) | rename (value = new title) | color (value = grey blue red yellow green pink purple cyan orange).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| value | No | ||
| action | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose one genuinely useful trait: close destroys the group's tabs but is recoverable with Ctrl+Shift+T. It says nothing about whether ungroup destroys the group itself, whether rename/color mutate persistently, permissions, or side effects, leaving significant gaps for a mutation 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 pipe-delimited action list is dense and front-loaded with no wasted tokens, but it reads as a fragment list rather than a structured description and omits any framing sentence. It is under-specified more than it is concise.
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?
An output schema exists, so return values need not be described. But for a multi-action mutation tool with zero annotation coverage and 0% schema description coverage, the description leaves the agent without action-selection logic, the meaning of the required title parameter, or the consequences of ungroup and rename.
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 0%, so the description must compensate. It does map the value parameter for two actions (rename → new title, color → the allowed color list), which is real added meaning. But the required title parameter is never explained (presumably the target group), so coverage remains partial.
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 enumerates the four actions (ungroup, close, rename, color) and their effects, so an agent can infer this tool manages tab groups. However, it never states the verb+resource in a lead sentence ('manage a tab group'), and it does not distinguish itself from close siblings such as group_tabs, open_folder_as_group, or save_group. Purpose is implied rather than stated.
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?
There is no when-to-use guidance and no routing to alternatives, despite a crowded sibling set (group_tabs, open_folder_as_group, save_group, organize_tabs). The only contextual hint is that close is undoable via Ctrl+Shift+T, which is a behavioral note, not usage guidance. The agent must guess when manage_group is preferred over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mkdirB
Create a folder path (like mkdir -p).
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. The 'mkdir -p' analogy usefully implies recursive parent creation and non-erroring on existing paths, but it says nothing about permissions, failure modes, or what happens when the path already exists as a file.
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?
One short sentence, purpose front-loaded, and the parenthetical analogy compresses a lot of behavioral meaning into three words. Nothing is wasted and nothing important is buried.
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?
An output schema exists, so return values need no explanation, and the single-parameter surface is simple. However, for an unannotated mutating filesystem tool the description should say more about error behavior and path requirements, which it leaves to the mkdir analogy.
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?
Only one parameter with 0% schema description coverage, so the schema does little work. The description adds that 'folder' is a path (not just a name), implying nesting and the -p semantics, which is meaningful value, but no format examples or absolute-vs-relative guidance are given.
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 verb (Create) and resource (folder path), and the 'mkdir -p' analogy pins down that intermediate directories are created in one call. It is clearly distinct from siblings like move, rename, or trash, though it never explicitly contrasts with them.
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?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as the sibling 'add' or 'move' tools that also touch the filesystem. The 'like mkdir -p' note is a behavioral hint, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
moveC
Move a link or folder. item = folder path + title, e.g. "Inbox > Some article".
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| to_folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, and it discloses almost nothing beyond the verb. It does not say what happens if the destination already contains an item of the same name, whether moving a folder moves its children, or whether the source is removed.
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 short sentences, zero filler, with the core action front-loaded and the parameter example immediately after. Nothing is padded or redundant.
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?
An output schema exists, so return values need not be described, but this is an unannotated mutation tool with 0% schema coverage and a sibling set full of overlapping file operations. Missing conflict behavior, folder-recursion semantics, and to_folder format leave real gaps.
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 0% with two required parameters, so the description must compensate. It does explain the item format well (folder path + title, with an example), but to_folder is left completely undefined with no format, path style, or root-level convention.
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 names a specific verb (move) and the resources it applies to (a link or folder), which an agent can separate from siblings like rename, trash, and sort. It stops short of explicitly contrasting itself with those siblings, so it lands at clear-but-undifferentiated.
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?
There is no guidance on when to use move versus rename, trash, or sort, and no prerequisites or exclusions. The only contextual help is a format example for the item parameter, which is not usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
noteA
Attach a note to a URL (why it was saved, which claim it supports). Notes are searchable.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| text | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one behavioral trait beyond the schema — notes are searchable and therefore persisted — but says nothing about whether multiple notes may be attached to one URL, whether writes are irreversible, or what happens on failure.
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 short sentences, front-loaded with the action, and no filler. The trailing fact about searchability earns its place by changing how an agent writes the note text.
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?
An output schema exists so return values need no explanation, and the tool is structurally simple with two required params. The description is nearly sufficient; only the duplicate/multiplicity behavior for notes on the same URL is left unstated.
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 0%, so the schema only gives bare 'Url' and 'Text' titles. The description partially compensates by illustrating appropriate note content, but it never clarifies constraints on 'url' (absolute vs relative, must it already be saved?) leaving half the parameter meaning to inference.
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 verb and resource: attach a note to a URL. It does not name a sibling or explicitly distinguish itself from related tools like 'add' or 'save_group', but the resource (a note on a URL) is distinctive enough to select it confidently.
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 parenthetical ("why it was saved, which claim it supports") implies what content belongs in a note, which is useful usage framing. However, there is no explicit when-to-use guidance versus siblings, nor any statement about when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_folder_as_groupB
Open every link in a bookmark folder as tabs in a group named after the folder.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It signals a side-effecting action (opening tabs and creating a group) but says nothing about window targeting, behavior when the folder is empty or a group with that name already exists, or failure handling.
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?
One sentence, front-loaded with the action, with zero filler. The whole contract of the tool is conveyed without waste.
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 output schema is present, so return values need not be explained, and the tool is simple with one parameter. However, with no annotations and an undocumented parameter, the description leaves failure modes and tab-placement behavior unspecified.
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?
The schema has 0% description coverage for the single 'folder' parameter. The description partially compensates by clarifying that the value is a bookmark folder and that its name is reused for the group, but it omits format, lookup rules, or whether a path/ID is accepted.
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?
Specific verb (open) plus resource (every link in a bookmark folder) and the resulting state (tabs in a group named after the folder). It is clear what the tool produces, but it does not distinguish itself from close siblings like group_tabs, save_group, or organize_tabs.
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 scenario is implied by the description (you have a folder of links and want them open as a group), but there is no explicit when-to-use, when-not-to-use, or named alternative among the many tab/group siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
organize_tabsA
Project-based grouping: put every open (unpinned) tab into the group of its matching top-level bookmark folder. Defaults to a dry run; call again with dry_run=False to apply.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses the mutation is guarded by a dry-run default and that only unpinned tabs are touched. It is silent on what happens to tabs with no matching folder, whether existing groups are modified or destroyed, and whether it requires confirmation — meaningful gaps for an organizing/mutation 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?
Two sentences, zero waste, with the core behavior front-loaded and the safety/workflow note second. Nothing is padded or repeated.
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?
An output schema exists, so return values need not be explained, and the dry-run guidance covers the main safety concern. Still missing edge-case behavior (tabs without a matching folder, effect on pre-existing groups) that an agent would want before applying a bulk reorganization.
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 0%, so the description must compensate, and it does: it explains that dry_run defaults to true and that setting dry_run=False applies the change. The intent and polarity of the single parameter are fully clear from the text alone.
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 verb and resource with precise scope: 'put every open (unpinned) tab into the group of its matching top-level bookmark folder.' The 'project-based grouping' framing helps set it apart, but it never distinguishes itself from close siblings like group_tabs or open_folder_as_group, so an agent must infer the difference.
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?
Gives real workflow guidance for the dry-run default and the apply step, which tells the agent the correct two-phase usage. It does not, however, say when to prefer this over sibling grouping tools (group_tabs, save_group, open_folder_as_group) or what conditions make it inapplicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projectB
Scaffold a project folder with "In use" and "Considering" subfolders (default under MTS).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| under | No | MTS |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies a write/scaffold operation but never says what happens if the project folder already exists, whether existing contents are touched, or what permissions/context are needed.
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?
A single front-loaded sentence with no filler; the verb, the created structure, and the default location are all packed in without waste.
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?
An output schema exists, so return values need no explanation, and the description covers the core effect and default location. The main remaining gap is collision/existing-folder behavior for a mutation tool with no annotations.
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 0%, so the description must compensate. It clarifies the "under" parameter's default parent (MTS), but leaves "name" entirely unexplained and gives no format or path semantics for either.
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 verb (scaffold) and resource (project folder) plus the exact structure it creates ("In use" and "Considering" subfolders), which implicitly separates it from the bare mkdir sibling. It stops short of naming or explicitly contrasting with any sibling.
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?
There is no when-to-use guidance and no mention of alternatives, despite siblings like mkdir, add, and organize_tabs that could plausibly overlap. The parenthetical about MTS is a default, not usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_thisB
Save research for the user: creates "Read this > yy.mm.dd - " with each source link. links = [{"title": "...", "url": "..."}]. note = what you found and why these sources (becomes a _notes page that syncs with the bookmarks, and is searchable).
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| task | Yes | ||
| links | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It does disclose real side effects: a folder named with the task and a date is created, each link becomes an entry, and the note becomes a '_notes' page that syncs with the bookmarks and is searchable. That is meaningful context beyond the schema. It still omits permissions, idempotency/duplicate-handling, and what happens if the same task name is reused.
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 and the length is reasonable, but the middle portion crams naming templates and a JSON snippet into running prose, making it harder to scan than a structured breakdown. Every sentence is substantively useful, so the issue is formatting density rather than waste.
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?
With an output schema present, return values need not be described, and the description covers the key behaviors an agent needs: what gets created, the naming convention, link format, and the note's sync/searchable nature. It is nearly complete for a three-parameter write tool, lacking only conflict/duplicate behavior.
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 0%, so the description must compensate. It does: 'links' is given an explicit shape with an example ({title, url}), 'note' is defined as what you found and why these sources, and 'task' is shown feeding the container name template. Minor gaps remain (e.g. optional note defaulting to empty, multiple vs single task).
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 name 'read_this' is opaque on its own, but the description immediately states the concrete action: it saves research for the user by creating a dated bookmark container ('Read this > yy.mm.dd - <task>') holding each source link. That is a specific verb plus resource. It does not, however, differentiate itself from the many sibling tools (add, note, save_group, snapshot) that also persist data.
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 phrase 'Save research for the user' implies the trigger context, but there is no explicit statement of when to use this versus siblings such as add, note, or save_group, and no exclusions or prerequisites. An agent must infer the routing decision entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
renameC
Rename a link or folder. item = folder path + title.
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes | ||
| new_title | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden for a mutation tool. It says nothing about whether the rename is reversible, whether renaming a folder affects the paths of contained items, whether missing items error out, or what permissions are needed. The item-format note is the only added 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?
Two short sentences, with the core action front-loaded before the argument hint. The 'item = folder path + title' phrasing is terse almost to the point of ambiguity, but nothing is wasted.
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?
Return values are covered by the output schema, but for a two-required-parameter mutation with no annotations the definition is thin: no effect-of-rename semantics, no prerequisites, and only half the parameters get any explanation.
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 0%, so the description must compensate. It usefully clarifies that 'item = folder path + title'—a non-obvious construction an agent would not derive from a bare string field—but says nothing about the format of new_title (extension handling, length limits, uniqueness).
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 verb (rename) and names the two resources it operates on (link, folder), which separates it from siblings like mkdir, trash, and sort. However it never distinguishes itself from 'move', which could plausibly also rename, so sibling differentiation is incomplete.
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?
There is no statement of when to use rename versus move (which likely relocates an item) or any other sibling. The only guidance is an implicit note on how to construct the item argument, which is parameter help rather than usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restoreB
Restore the bookmarks bar from a snapshot. Current bar is snapshotted and parked in _Trash first. Ask the user.
| Name | Required | Description | Default |
|---|---|---|---|
| snapshot_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose concrete behavior: the current bar is snapshotted and moved to _Trash before restoring, and user confirmation is required. This is meaningful for a mutation tool. It omits permissions and any failure/rollback semantics, keeping it from a 5.
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 short, front-loaded sentences with no filler; the action leads and the safety caveat follows. Slightly telegraphic ('Ask the user'), but essentially zero waste.
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?
An output schema exists, so return values need not be described. However, the required snapshot_name is unexplained and there is no routing guidance against sibling snapshot tools, leaving meaningful gaps for a mutation operation.
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?
The single parameter snapshot_name has 0% schema description coverage and is not explained in the description. It does not say what format a snapshot name takes or where to obtain it (presumably from 'snapshots'). The description fails to compensate for the schema gap.
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 verb and resource: 'Restore the bookmarks bar from a snapshot.' This clearly differentiates it from snapshot-creating siblings like 'snapshot' and 'snapshots'. It does not name those siblings explicitly, so it falls just short of 5.
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?
'Ask the user' is a directive but functions more as a safety behavior than selection guidance. It never says when to prefer this tool over 'snapshot'/'snapshots', nor where a valid snapshot_name comes from. Usage context is only weakly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_groupB
Bookmark a tab group's tabs (default folder: Index > Tab groups > ).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| folder | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one genuine behavior the schema does not: the empty 'folder' default resolves to 'Index > Tab groups > <title>'. Beyond that it says nothing about duplicate handling, whether existing bookmarks are overwritten, or permissions.
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?
A single sentence with the verb and resource front-loaded and the default behavior tucked into a parenthetical. Nothing is redundant.
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 output schema covers return values, which lifts some burden, but this is a mutation tool with no annotations and only one short sentence of description. Side effects on pre-existing bookmarks and multi-window behavior are left 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 description coverage is 0%, so the description must compensate, and it partially does: 'title' is shown feeding the folder path and 'folder' has its empty-default behavior explained. It still omits the expected path syntax for 'folder' and how 'title' names the saved bookmark itself.
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 verb (bookmark) and resource (a tab group's tabs), which is concrete enough to act on. However, it does not distinguish itself from likely-overlapping siblings such as snapshot, snapshots, or organize_tabs, which may also persist tab groups.
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?
There is no explicit when-to-use or when-not-to-use guidance and no alternative tool is named. The default folder note is a behavioral detail, not routing guidance, so an agent must infer that this is the tool for persisting the current group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Find bookmarks whose title, URL or saved note contain ALL the words. Shows where each lives.
| Name | Required | Description | Default |
|---|---|---|---|
| words | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose the matching semantics (conjunctive, all words) and that results include location, which is genuine behavioral value. It omits case sensitivity, result limits/ordering, and scope boundaries (e.g. whether trashed bookmarks are searched).
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 short sentences, front-loaded with the core action and scope, with the output hint last. No filler or 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?
For a one-parameter search tool with an output schema already describing return values, the description covers the essentials. Minor gaps remain around matching behavior details (case, limits, whether trashed items are included), but nothing an agent needs to invoke it 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?
One parameter at 0% schema coverage, so the description must compensate. 'Contain ALL the words' usefully explains that the single string is treated as a set of terms ANDed together, which the bare schema does not convey, but nothing is said about formatting, quoting, or case handling.
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 gives a specific verb (find), an explicit resource (bookmarks), the fields searched (title, URL, saved note), and the matching rule (ALL the words, i.e. AND semantics). No sibling tool competes for this role, so no differentiation is needed.
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?
Usage is only implied — a 'search' tool is self-evidently for retrieval, and 'Shows where each lives' hints at the result. But there is no statement of when to prefer this over siblings like read_this, note, or tree, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshotB
Save a snapshot of the whole bookmark tree (do this before big changes).
| Name | Required | Description | Default |
|---|---|---|---|
| label | No | manual |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It signals this is a write (save) with a safety rationale, but says nothing about whether prior snapshots are retained or overwritten, where snapshots live, any count/size limits, or whether a label must be unique — all material for a mutation tool with zero annotation coverage.
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?
One sentence, action first, rationale second, and not a word wasted. Front-loaded with the verb and resource so the agent can act on the opening clause alone.
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?
An output schema exists, so return values need not be described, and the tool is structurally simple with one optional parameter. What remains missing is what the label does and how snapshots are stored/retained, which is the minimum extra an agent needs before calling a persistence tool.
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 0%: the single 'label' parameter appears only as a string defaulting to 'manual', with no explanation in either schema or description. The description never mentions the label at all, so it fails to compensate for the coverage gap by explaining what a label is for or whether it must be unique.
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 verb and resource: 'Save a snapshot of the whole bookmark tree.' The scope word 'whole' distinguishes it from narrower mutators like move/rename, and it is clearly not the listing tool ('snapshots') or 'restore'. It stops short of naming those siblings explicitly.
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 parenthetical '(do this before big changes)' gives a concrete trigger condition, which is more than most definitions offer. It does not state when not to snapshot, nor does it point to the complementary 'restore'/'snapshots' tools, so it is 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.
snapshotsB
List saved snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only operation through 'List', but does not state that it is non-destructive, whether it requires authentication, or any other behavioral trait beyond the obvious.
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 a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple list operation.
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 zero-parameter list tool with an output schema, the description covers the core purpose and return values are handled by the output schema. However, it omits any usage context or sibling differentiation, which is a meaningful gap given the crowded sibling set.
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?
The tool takes zero parameters, so there is no parameter semantics to describe. The schema is empty and the description adds nothing here, but the baseline for zero-parameter tools is 4.
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 a specific verb ('List') and resource ('saved snapshots'), making the basic operation unambiguous. However, it does not differentiate this tool from its sibling 'snapshot' (singular), which likely creates a snapshot, leaving the agent to infer the distinction.
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 offers no guidance on when to use this tool versus alternatives like 'snapshot' or 'restore'. There are no exclusions, prerequisites, or context cues to help the agent select it correctly among many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sortC
Sort a folder: subfolders first, then A-Z.
| Name | Required | Description | Default |
|---|---|---|---|
| folder | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the resulting sort order, which is useful, but never states whether this mutates persisted ordering, whether it is reversible, or what permissions/scope (local disk, remote, project) it applies to.
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?
A single front-loaded sentence with no filler; the ordering rule is the payload and is stated immediately. Brevity is appropriate, though it borders on under-specification rather than true conciseness.
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?
An output schema exists, so return values need not be explained, but for a mutation-style tool with zero annotations and an undocumented required parameter, the definition omits mutation semantics, reversibility, and target scope. It is too thin for reliable invocation.
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 0% and the sole parameter is just typed string with title 'Folder'. The description's 'a folder' adds no path format, naming convention, or ID-vs-path distinction, so it contributes nothing 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 verb (sort) and resource (folder) and even describes the resulting order (subfolders first, then A-Z), which is more than a tautology. It does not differentiate itself from ambiguous siblings like organize_tabs or tree, so it falls short of a 5.
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?
No when-to-use guidance, no prerequisites, and no mention of alternatives such as tree or organize_tabs. The agent must infer from the name alone that this reorders a folder's contents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggestC
Sites the user opens a lot but never bookmarked (from browser history). Suggest; add only with their OK.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| min_visits | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one meaningful behavior: additions require user confirmation. That consent requirement is valuable. It still leaves open whether the tool itself is read-only, whether it persists anything, and how history data is scoped or handled.
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?
It is short and puts the data source first, which is good. But both sentences are telegraphic fragments with dropped subjects and objects, so brevity comes at the cost of clarity rather than from tight editing.
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?
An output schema exists, so return values need not be described, and only two simple parameters exist. Still, for a tool with zero annotations the description leaves gaps: what set of candidates is returned, how the thresholds shape results, and how it differs from the sibling that actually adds entries.
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 0% with two parameters ('days', 'min_visits'), so the description must compensate and it does not. 'opens a lot' loosely gestures at a visit-count threshold, but neither the time window nor the visit threshold is explained, nor what the defaults (90/30) mean in practice.
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 two fragments together convey the resource and criterion: sites frequently opened but never bookmarked, sourced from browser history. However, 'Suggest' has no object and the description never names what it produces (bookmark suggestions), nor does it differentiate from nearby siblings like 'add' or 'search'. The purpose is inferable but not stated cleanly.
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?
'add only with their OK' implies the intended workflow (this is a preview/consent step, not a direct mutation) and is the closest thing to usage guidance. There is no explicit when-to-use versus alternatives, no mention of prerequisites, and no statement of what the user should do with the result.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tabsC
List open tabs by tab group.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It implies read-only via 'List' but does not state whether it lists tabs in the current window, all windows, or only grouped tabs, nor any other behavioral constraint. Minimal transparency beyond the verb.
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?
A single short sentence with no wasted words, and the core action is front-loaded. It is efficient, though perhaps too terse to be maximally useful.
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 output schema covers return values, but the description fails to explain the 'by tab group' behavior, window scope, or how it differs from the many sibling tab tools. Without annotations, it leaves significant gaps an agent needs to invoke it 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?
The tool takes zero parameters, so schema coverage is trivially 100% and there are no parameter semantics for the description to clarify. Baseline score of 4 applies when no parameters exist.
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 clear verb and resource ('List open tabs'), but the qualifier 'by tab group' is ambiguous—it could mean grouping the output, filtering to a group, or something else. It does not distinguish the tool from siblings like organize_tabs, group_tabs, or manage_group.
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?
No guidance on when to use this tool versus alternatives. With many sibling tab-management tools, an agent gets no help routing correctly—no context, no exclusions, no alternatives named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trashA
Move a link or folder to Other bookmarks > _Trash (never hard-deletes).
| Name | Required | Description | Default |
|---|---|---|---|
| item | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose the key trait: it moves to a trash folder and never hard-deletes. It does not mention permissions, side effects, or what happens if the trash folder is missing, but the presence of an output schema reduces the need to explain returns.
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?
A single, front-loaded sentence with zero waste. Every clause earns its place by stating the action, destination, and non-destructive guarantee.
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 simple tool with an output schema, the description is mostly complete, but it omits how to specify the required 'item' parameter. That gap is significant enough to limit the score, though not fatal given the tool's simplicity.
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 0%, and the description adds some meaning by specifying that 'item' can be a link or folder. However, it does not explain how to identify that item (ID, path, title), so the compensation is only partial.
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 verb ('Move') and resource ('a link or folder') with the exact destination ('Other bookmarks > _Trash'). This distinguishes it from the generic sibling 'move' tool and makes the tool's purpose unmistakable.
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 parenthetical 'never hard-deletes' clarifies when to use this tool: for reversible removal instead of permanent deletion. However, it does not explicitly name alternatives (e.g., 'move' or a hypothetical 'delete') or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
treeA
Show the live bookmark tree (whole bar, or one folder like "WeatherOps").
| Name | Required | Description | Default |
|---|---|---|---|
| folder | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Show the live bookmark tree' implies a non-mutating read, but it never states that it is read-only, has no side effects, requires no special permissions, or whether 'live' means it reflects real-time changes. For a tool with zero annotation coverage, this is a notable gap.
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?
A single front-loaded sentence with the core action first and the scoping detail second. No wasted words.
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?
An output schema exists, so return values need not be described, and the description covers the one parameter's two modes. It is nearly complete for a simple read tool, missing only explicit read-only/no-side-effect confirmation.
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?
With 0% schema description coverage, the description must compensate, and it does: it explains that the folder parameter scopes output to a single folder and that omitting it returns the whole bar, and even gives a concrete example ('WeatherOps'). This adds real meaning beyond the bare string 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?
The description states a specific verb (Show) and resource (live bookmark tree), clearly indicating a read/inspection operation. It does not explicitly differentiate itself from read-oriented siblings like search, read_this, or snapshots, so it stops short of a 5.
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 phrase 'whole bar, or one folder like "WeatherOps"' implies the two usage modes but never states when to prefer this tool over search, read_this, or snapshots. Usage is implied rather than explicitly guided.
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.
25 tool updates
v0.3.0- First observed
add - First observed
doctor - First observed
done - First observed
favicons - First observed
group_tabs - First observed
inbox - First observed
manage_group - First observed
mkdir - First observed
move - First observed
note - First observed
open_folder_as_group - First observed
organize_tabs - First observed
project - First observed
read_this - First observed
rename - First observed
restore - First observed
save_group - First observed
search - First observed
snapshot - First observed
snapshots - First observed
sort - First observed
suggest - First observed
tabs - First observed
trash - First observed
tree
TDQS
Scored across 25 tools
Most tools target a distinct resource+action (tree vs tabs vs search, snapshot vs snapshots vs restore). A few boundaries blur: read_this vs note both create notes, and group_tabs vs organize_tabs both group open tabs with different criteria, plus tabs vs tree both enumerate structure.
Conventions are heavily mixed: bare verbs (mkdir, move, trash, sort, add), vague nouns (inbox, tree, doctor, tabs, favicons, suggest), snake_case phrases (read_this, organize_tabs, open_folder_as_group), and a singularity/plurality pair (snapshot/snapshots). No predictable verb_noun pattern.
At 25 tools the surface is heavy for a bookmarks manager, at the top of the 'heavy' band. Each tool does map to a plausible workflow, but several (snapshot/snapshots, group_tabs/organize_tabs/manage_group) could be consolidated.
Coverage is strong: folder/link CRUD (mkdir, add, move, rename, trash), search, notes, tab grouping, health checks, and a full snapshot/restore lifecycle. Minor gap around editing a saved URL/title in place, but core workflows are covered.
Maintenance
Related MCP Connectors
All your bookmarks in one library. Share them with your AI agents. Read-only search over your saves.
Read-it-later for AI agents. Save links, bookmarks, notes, and videos as Markdown and search them.
Save, search, read, tag, and organize your bookmarks from AI assistants with OAuth sign-in.
Save and organize web finds in persistent, user-controlled collections for AI assistants.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables semantic search across browser bookmarks from Chrome, Firefox, Edge, Opera, and other browsers using natural language queries. Extracts and indexes bookmark content and metadata into a vector database for intelligent retrieval.1Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables LLM agents to create annotated bookmarks and narrative trails to document code exploration and decision-making. It organizes these bookmarks into a navigable knowledge graph stored in a local JSON file, helping users track the context and reasoning behind code changes.1 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to save, search, and manage bookmarks with semantic search, automatic metadata extraction, and optional LLM-powered enrichment, all running locally.86MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to organize and manage Chrome/Edge bookmarks through natural language, with user-controlled permissions, privacy filters, and safety mechanisms.Apache 2.0