Skip to main content
Glama
rusty4444
by rusty4444

Shiori MCP

A Model Context Protocol (MCP) server for Shiori, the self-hosted bookmark and read-it-later manager.

Capabilities

  • Verify Shiori connectivity and authentication

  • List bookmarks

  • Search bookmarks by title, URL, excerpt, and tag

  • Get one bookmark by id or exact URL from the bookmark list

  • Add bookmarks with Shiori's required tag-object format

  • Update bookmarks via either a full-bookmark payload or common field parameters

  • Delete bookmarks by id list

  • List tags and bookmark counts

  • Rename tags

  • List accounts visible to the authenticated session

Related MCP server: Raindrop.io MCP Server

Installation

pipx install git+https://github.com/rusty4444/shiori-mcp.git

Or from a checkout:

python -m venv .venv
source .venv/bin/activate
pip install -e .

Configuration

Variable

Required

Description

SHIORI_BASE_URL

Yes

Base URL of the Shiori instance, e.g. https://shiori.example.com

SHIORI_SESSION_ID

Optional

Existing Shiori session id; skips login if provided

SHIORI_USERNAME

Required unless session id is set

Shiori username

SHIORI_PASSWORD

Required unless session id is set

Shiori password

SHIORI_TIMEOUT

No

HTTP timeout in seconds, default 20

MCP client config

{
  "mcpServers": {
    "shiori": {
      "command": "shiori-mcp",
      "env": {
        "SHIORI_BASE_URL": "https://shiori.example.com",
        "SHIORI_USERNAME": "your-username",
        "SHIORI_PASSWORD": "your-password"
      }
    }
  }
}

Tools

Tool

Purpose

shiori_health_check

Verify API connectivity/authentication

shiori_list_bookmarks

List bookmarks with client-side limit/offset

shiori_search_bookmarks

Search bookmarks by text and/or tag

shiori_get_bookmark

Get one bookmark by id from the bookmark list

shiori_get_bookmark_by_url

Get one bookmark by exact URL

shiori_add_bookmark

Add a bookmark with optional tags/archive/public flags

shiori_update_bookmark

Update a bookmark using full Shiori bookmark JSON

shiori_update_bookmark_fields

Update common fields without manually constructing full JSON

shiori_delete_bookmark

Delete one bookmark id

shiori_delete_bookmarks

Delete bookmark ids from a JSON array

shiori_list_tags

List tags and bookmark counts

shiori_rename_tag

Rename a tag

shiori_list_accounts

List accounts visible to this session

Development and validation

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -e '.[dev]'
ruff check .
pytest
python scripts/live_docs_test.py

live_docs_test.py validates Shiori public API documentation and repository pages without credentials. Authenticated read/write API behaviours are covered with mocked HTTP tests.

Optional LLM validation can be run with any configured OpenAI-compatible endpoint. For local Aeon validation, set AEON_BASE_URL and optionally AEON_MODEL / AEON_API_KEY before running python scripts/model_validate.py.

API note

This server targets Shiori's documented legacy API under /api/* because the new API v1 is still documented as in development and self-documented at /swagger/index.html on running instances.

Safety

The write-capable tools mutate a Shiori bookmark database. Keep credentials in environment variables or a secret manager, never in source control.

This project was developed with the assistance of AI tools.

Available Tools

13 tools
shiori_add_bookmarkB

Add a bookmark to Shiori.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL to save in Shiori
titleNoOptional title hint; Shiori may fetch and override it automatically
excerptNoOptional excerpt hint; Shiori may fetch and override it automatically
tagsNoOptional comma-separated tag names; converted to Shiori's required [{name: ...}] format
publicNoWhether the bookmark should be public/shared
create_archiveNoWhether Shiori should create an archived copy of the page

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It does not disclose that Shiori may override the provided title or excerpt, nor does it discuss behavior on duplicate URLs or archive creation effects. The schema descriptions provide some behavioral hints, but the description itself lacks transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but sacrifices usage details and behavioral context. It is not necessarily too brief, but it could be more informative without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 6 parameters and an output schema, the description should at least mention return values, authentication needs, or duplicate handling. The current minimal text leaves significant gaps in understanding, especially without annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already details each parameter (e.g., tags conversion, title override). The description adds no extra parameter meaning, but the baseline 3 is appropriate since the schema does the job.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Add a bookmark to Shiori' clearly states the verb (add) and resource (bookmark to Shiori). It distinguishes it from sibling tools like delete, get, update, and search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like shiori_update_bookmark or shiori_update_bookmark_fields. No prerequisites or context about duplicate handling are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_delete_bookmarkB

Delete one Shiori bookmark by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_idYesShiori bookmark id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states 'delete' without details on permanence, side effects, or return value, leaving behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with verb and resource; efficient but lacks context for a deletion operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given simple tool with one parameter and output schema, description is adequate but could mention return behavior or reversibility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with description 'Shiori bookmark id'; the description adds 'by id' but no additional meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'Delete one Shiori bookmark by id.' with clear verb and resource, and distinguishes from sibling 'shiori_delete_bookmarks' which implies multiple deletions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use versus alternatives; the sibling name hints at differentiation, but description itself provides no context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_delete_bookmarksB

Delete one or more bookmarks by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesShiori bookmark ids to delete as an array, for example [1, 2, 3]. A JSON array string is also accepted for backward compatibility.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present. The description only states what the tool does, but not how it behaves—e.g., whether deletion is permanent, if confirmation is required, rate limits, error handling, or side effects. The agent cannot assess risk or side effects from this description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that is front-loaded with the action. It is concise and to the point, though it could include more context. It earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one parameter, no annotations, and an output schema (not detailed in description), the description is too minimal. It omits crucial context such as the permanence of deletion, authentication requirements, error behavior, or what the output represents. The agent cannot fully evaluate suitability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'ids' is fully described in the input schema with explanation that it accepts an array of integers or a JSON array string. The tool description adds no additional meaning beyond what the schema already provides. With 100% schema coverage, baseline is 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete'), the resource ('bookmarks'), and the selection method ('by id'). It distinguishes from sibling tools like shiori_delete_bookmark (singular) by explicitly allowing one or more, and from others like shiori_add_bookmark or shiori_update_bookmark by focusing on deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not explain when to use this tool versus the singular variant shiori_delete_bookmark, nor does it mention prerequisites, limitations, or when not to use it. The agent is left to infer 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.

shiori_get_bookmarkB

Get one Shiori bookmark by id from the bookmark list.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_idYesShiori bookmark id

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose what happens if the bookmark_id is not found, or any other behavioral traits. Since no annotations are provided, the description carries the full burden and fails to add context beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words, achieving maximal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get operation with one parameter and an output schema, the description is minimally adequate but lacks details about return value or error behavior, making it barely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds no extra meaning beyond the schema's parameter description. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get' and the resource 'one Shiori bookmark by id', which is specific and distinguishes it from siblings like list_bookmarks or search_bookmarks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 tool versus alternatives like get_bookmark_by_url or search_bookmarks, nor any mention of prerequisites or 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.

shiori_get_bookmark_by_urlA

Get one Shiori bookmark by exact URL from the bookmark list.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesExact Shiori bookmark URL to look up

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It does not disclose what happens if the URL is not found (e.g., returns null or error), whether there are rate limits, or any other behavioral traits beyond the basic operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It efficiently communicates the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description need not explain return values. For a simple lookup tool, the description is adequate but could mention error behavior. It is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter is already documented. The description adds no extra meaning beyond what the schema provides, earning a baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get one Shiori bookmark by exact URL from the bookmark list' clearly states the verb (get), resource (bookmark), and scope (by exact URL). It distinguishes it from siblings like shiori_search_bookmarks (fuzzy search) and shiori_get_bookmark (likely by ID).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for exact URL lookup but does not explicitly state when to use this tool versus alternatives like search for non-exact matches or get by ID. No exclusions or when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_health_checkA

Verify Shiori API connectivity and authentication with a small read-only request.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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 states the request is 'read-only' and 'small', implying non-destructive behavior. While it lacks details on failure modes, this is acceptable for a simple health check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded and contains no superfluous information. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema is present, the description provides sufficient context. It covers the essential purpose and behavioral trait (read-only) without needing further elaboration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so schema coverage is 100% trivially. The description adds meaning by explaining the tool's high-level behavior (connectivity and auth verification) beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: verifying Shiori API connectivity and authentication with a small read-only request. It avoids ambiguity and distinguishes from sibling tools that handle CRUD operations on bookmarks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (to check API health and auth) and distinguishes it from siblings that perform actual operations. While it does not explicitly exclude alternatives, the context makes it clear this is a diagnostic tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_list_accountsA

List Shiori user accounts visible to the authenticated session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility. It only mentions 'visible to the authenticated session,' implying authentication but omitting details like read-only nature, rate limits, or any behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence with 10 words. It is front-loaded and contains no extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately explains the tool's purpose. Since an output schema exists, details about return values are not required, and the description covers the essential scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and schema coverage is 100%. The description adds no parameter info because none exist, which is appropriate. Baseline for 0 parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List Shiori user accounts visible to the authenticated session,' specifying the verb 'List' and the resource 'user accounts.' This distinguishes it from sibling tools that list bookmarks or tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description only states what it does, without any context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_list_bookmarksC

List Shiori bookmarks from the default Shiori bookmarks endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of bookmarks to return from the local result set
offsetNoNumber of matching bookmarks to skip

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided and the description discloses no behavioral traits (e.g., default sorting, pagination behavior, or what constitutes the default endpoint).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single efficient sentence with no wasted words, though it could benefit from slight expansion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite an output schema, the description lacks context to distinguish from 12 sibling tools and does not clarify scope (e.g., all bookmarks vs. default filter).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the two parameters, but the description adds no additional meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists Shiori bookmarks from a default endpoint, but does not differentiate from sibling tools like shiori_search_bookmarks or shiori_get_bookmark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no exclusions or contextual cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_list_tagsA

List Shiori tags and bookmark counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears full burden. It discloses the basic behavior (listing tags and counts) but lacks details on authentication, side effects, or response format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence which is extremely concise, front-loads the action, and contains no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and the presence of an output schema, the description sufficiently conveys the tool's purpose and operation for a simple list action.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so schema coverage is 100%. The description does not need to add parameter details, meeting the baseline of 4 for zero-parameter tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool lists tags and includes bookmark counts, distinguishing it from siblings like shiori_list_bookmarks or shiori_rename_tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives; it does not mention context, prerequisites, or 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.

shiori_rename_tagB

Rename a Shiori tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYesShiori tag id to rename
nameYesNew tag name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No behavioral details beyond the rename operation. With no annotations and no description of side effects, return values, or error conditions, the agent lacks critical context about what this tool does internally.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, well front-loaded. However, it is overly terse and sacrifices clarity for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the simplicity of the tool, the description should at least mention the return value or confirmation behavior. Currently it is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters. The description adds no extra meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Rename a Shiori tag.' clearly states the verb (rename) and resource (tag), and it distinguishes from sibling tools like shiori_list_tags by specifying the action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like shiori_list_tags, or any prerequisites or exclusions. The description lacks context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_search_bookmarksB

Search Shiori bookmarks client-side by text and/or tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoCase-insensitive text to match against bookmark title, URL, or excerpt
tagNoOptional tag name to filter bookmarks by case-insensitive tag name
limitNoMaximum number of matching bookmarks to return
offsetNoNumber of matching bookmarks to skip

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It indicates a read-only search but omits key details such as pagination behavior (limit/offset), performance implications, or whether the search is synchronous. The description is insufficiently transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is direct and front-loaded with the essential action. There is no extraneous information, making it highly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the brief description, the tool has 100% schema documentation and an output schema, so the agent can infer return structure. The description covers the core purpose adequately for a simple search tool, though it could mention pagination or result limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides detailed descriptions for all 4 parameters (100% coverage). The description adds minimal value beyond stating 'by text and/or tag', which is already implicit from the schema. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search'), the resource ('Shiori bookmarks'), and the scope ('client-side by text and/or tag'), effectively distinguishing it from related tools like shiori_list_bookmarks or shiori_get_bookmark.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives (e.g., shiori_list_bookmarks) or when not to use it. The phrase 'client-side' hints at a limitation but lacks clear direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_update_bookmarkC

Update a Shiori bookmark using the full bookmark JSON object expected by the legacy API.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_jsonYesFull Shiori bookmark JSON object including id and any fields to update; tags must be objects like {"name":"tag"}

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only mentions the format of the JSON object but not side effects, required permissions, or whether updates are destructive. This is insufficient 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that immediately conveys the tool's core purpose. It is concise and front-loaded, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of updating a bookmark and the presence of a sibling tool (shiori_update_bookmark_fields), the description lacks completeness. It does not explain return values or edge cases, though an output schema exists (partially mitigating this). Behavioral gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers 100% of parameters with a description that adds context about the JSON structure and tag format. The tool description adds no further parameter-level insight, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it updates a Shiori bookmark using a full JSON object, referencing the 'legacy API,' which hints at differentiation from other update tools like shiori_update_bookmark_fields. However, it could be more explicit about which sibling it replaces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The mention of 'legacy API' implies it may be deprecated, but no when-not-to-use or comparison is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shiori_update_bookmark_fieldsA

Patch common bookmark fields by fetching the current bookmark, modifying it, then sending Shiori's full update payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
bookmark_idYesShiori bookmark id
titleNoOptional replacement title
excerptNoOptional replacement excerpt
publicNoOptional public/shared flag
tagsNoOptional comma-separated replacement tag names
create_archiveNoOptional createArchive flag

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description bears full responsibility. It discloses the read-modify-write pattern (fetch, modify, send full payload), which is good. However, it does not explicitly state that unspecified fields are preserved or mention any side effects or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single 18-word sentence that is front-loaded with the action 'Patch common bookmark fields' and efficiently describes the internal process with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and the complexity of the tool (patch operation with 6 parameters), the description is adequate but could be more complete by indicating the return type (e.g., updated bookmark) or error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it just refers to 'common bookmark fields' without elaborating on individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Patch common bookmark fields', clearly indicating a partial update operation. It distinguishes from the sibling 'shiori_update_bookmark' (full update) by implication, though 'common' is somewhat vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for patching specific fields without a full payload, but it does not explicitly state when to prefer this over 'shiori_update_bookmark' or mention any exclusions or prerequisites.

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.

  1. 2 tool updatesv0.1.1
    • Changedshiori_delete_bookmarks3 fields changed
      • addedInput schema / properties / ids
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "integer"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Shiori bookmark ids to delete as an array, for example [1, 2, 3]. A JSON array string is also accepted for backward compatibility.",
        +  "title": "Ids"
        +}
      • removedInput schema / properties / ids_json
        Removed value: -{
        -  "description": "JSON array of Shiori bookmark ids to delete, for example [1,2,3]",
        -  "title": "Ids Json",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "ids_json"
        -]New value: +[
        +  "ids"
        +]
    • Changedshiori_search_bookmarks1 field changed
      • changedInput schema / properties / tag / description
        Previous value: -"Optional tag name to filter bookmarks by exact tag name"New value: +"Optional tag name to filter bookmarks by case-insensitive tag name"
  2. 13 tool updatesv0.1.0
    • First observedshiori_add_bookmark
    • First observedshiori_delete_bookmark
    • First observedshiori_delete_bookmarks
    • First observedshiori_get_bookmark
    • First observedshiori_get_bookmark_by_url
    • First observedshiori_health_check
    • First observedshiori_list_accounts
    • First observedshiori_list_bookmarks
    • First observedshiori_list_tags
    • First observedshiori_rename_tag
    • First observedshiori_search_bookmarks
    • First observedshiori_update_bookmark
    • First observedshiori_update_bookmark_fields

TDQS

A3.5/5.0

Scored across 13 tools

Disambiguation4/5

Most tools target distinct resources and actions, but update_bookmark and update_bookmark_fields could be confused, as could get_bookmark_by_url and search_bookmarks when looking for a URL. The descriptions mostly clarify the boundaries, so misselection risk is modest.

Naming Consistency4/5

Tool names follow a mostly consistent shiori_<verb>_<noun> snake_case pattern. The main deviation is shiori_health_check, which reads as a noun phrase rather than verb_noun, but the overall naming style is still predictable and uniform.

Tool Count5/5

13 tools is well within the recommended range for a bookmark manager. Each tool covers a meaningful operation without feeling redundant, and the set is neither too thin nor overweighted.

Completeness5/5

The tool set covers bookmark CRUD, search, bulk deletion, tag listing/renaming, and account visibility, leaving no obvious dead ends for the core domain. Tag creation and deletion are naturally handled through bookmark updates, so the lifecycle appears complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to interact with a Shlink URL shortening instance, allowing creation, listing, retrieval, and deletion of short URLs, as well as tag management.
    5
    3
    Apache 2.0
  • F
    license
    A
    quality
    D
    maintenance
    Enables managing bookmarks via the Linkwarden API with token-frugal tools for listing collections and links, adding/moving/deleting links, and creating collections.
    7
    -