Skip to main content
Glama

Bowrd MCP Server

License: MIT MCP

A Model Context Protocol (MCP) server for Bowrd — the minimalist, self-hosted visual bookmarking platform and Pinterest alternative with ActivityPub / Fediverse integration.

This server enables AI assistants (Claude Desktop, Cursor, Antigravity, OpenClaw, Hermes, etc.) to browse your boards, search bookmarks, scrape images from the web, and pin visual inspirations directly into your Bowrd instance.


Features & Tools

Tool

Description

Parameters

bowrd_list_boards

List all boards with IDs, names, slugs, descriptions, and pin counts.

None

bowrd_create_board

Create a new board.

name (required), description (optional), is_public (default: true)

bowrd_list_entries

List pins/entries from Bowrd, optionally filtered by board.

board_id (optional), limit (1-50, default: 20)

bowrd_get_entry

Retrieve full details of a single pin by ID or UUID.

entry_id (required)

bowrd_create_entry

Pin an image to a board. Bowrd automatically downloads and stores the media.

board_id (required), title (required), image_url (required), source_url (optional), description (optional), tags (optional array), is_public (default: true)

bowrd_update_entry

Update an existing pin (edit title, description, content warning, tags, move board, or visibility).

entry_id (required), title (optional), description (optional), board_id (optional), tags (optional array), is_public (optional), content_warning (optional)

bowrd_search_entries

Search through your pins by keyword in title, description, or source URL.

query (required), limit (default: 20)

bowrd_scrape_images_from_url

Scrape a webpage to find images, title, and description using Bowrd's image finder.

url (required)


Related MCP server: pinterest-mcp-server

Quickstart

1. Prerequisites

2. Installation & Build

git clone https://github.com/Robert-SD/bowrd-mcp.git
cd bowrd-mcp
npm install
npm run build

3. Environment Configuration

Copy .env.example to .env:

cp .env.example .env

Set your Bowrd URL and secret API token:

BOWRD_URL=https://your-bowrd-domain.com
BOWRD_API_TOKEN=your_generated_mcp_token

Client Integration

Claude Desktop

Add this to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "bowrd": {
      "command": "npx",
      "args": ["-y", "bowrd-mcp"],
      "env": {
        "BOWRD_URL": "https://your-bowrd-domain.com",
        "BOWRD_API_TOKEN": "your_generated_mcp_token"
      }
    }
  }
}

(If running from local source clone, replace "command": "npx", "args": ["-y", "bowrd-mcp"] with "command": "node", "args": ["/path/to/bowrd-mcp/dist/index.js"])

Cursor

Add to .cursor/mcp.json in your workspace or global settings:

{
  "mcpServers": {
    "bowrd": {
      "command": "npx",
      "args": ["-y", "bowrd-mcp"],
      "env": {
        "BOWRD_URL": "https://your-bowrd-domain.com",
        "BOWRD_API_TOKEN": "your_generated_mcp_token"
      }
    }
  }
}

Google Antigravity (agy)

Install directly via the Antigravity plugin manager:

agy plugin install https://github.com/Robert-SD/bowrd-mcp

Make sure BOWRD_URL and BOWRD_API_TOKEN are set in your environment.

Safety & Guardrails

  • Non-Destructive Operations: To protect your visual library from unintended AI hallucination or accidental mass deletion, Bowrd MCP deliberately exposes strictly additive, reading, and searching tools. Deletions cannot be performed via MCP.


Bowrd Backend Setup

As upstream Bowrd does not currently ship with an official REST API, this MCP server pairs with a lightweight API bridge controller included in laravel/McpApiController.php.

Step 1: Copy Controller

Copy laravel/McpApiController.php into your Bowrd project directory:

cp laravel/McpApiController.php <path-to-bowrd>/app/Http/Controllers/McpApiController.php

Step 2: Register API Routes

Add the following to <path-to-bowrd>/routes/web.php:

use App\Http\Controllers\McpApiController;

Route::prefix('api/mcp')->group(function () {
    Route::get('/boards', [McpApiController::class, 'boards']);
    Route::post('/boards', [McpApiController::class, 'createBoard']);
    Route::get('/entries', [McpApiController::class, 'entries']);
    Route::get('/entries/{id}', [McpApiController::class, 'entry']);
    Route::post('/entries', [McpApiController::class, 'createEntry']);
    Route::put('/entries/{id}', [McpApiController::class, 'updateEntry']);
    Route::patch('/entries/{id}', [McpApiController::class, 'updateEntry']);
    Route::get('/search', [McpApiController::class, 'search']);
    Route::post('/fetch-images', [McpApiController::class, 'fetchImages']);
});

Step 3: Exclude from CSRF Protection

In <path-to-bowrd>/bootstrap/app.php (Laravel 11+), ensure api/* is excluded from CSRF verification:

->withMiddleware(function (Middleware $middleware) {
    $middleware->validateCsrfTokens(except: [
        'api/*',
        '@*/inbox',
    ]);
})

Step 4: Configure Token in .env

Add an MCP token to your Bowrd .env:

MCP_API_TOKEN=your_secure_random_token_here

(Optionally specify ADMIN_EMAIL=user@example.com if you want API actions explicitly tied to a specific account).

Restart or rebuild your Bowrd container stack:

docker compose up -d

Development

# Run with live TypeScript execution
npm run dev

# Compile TypeScript
npm run build

License

This project is licensed under the MIT License.

Available Tools

8 tools
bowrd_create_boardB

Create a new board in Bowrd for organizing visual bookmarks.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the board (e.g. 'Interior Design', 'App UI Ideas')
is_publicNoWhether the board is public (default: true)
descriptionNoOptional description explaining the board's theme

TDQS

B3.1/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 the full burden of behavioral disclosure. It says 'Create' but omits permissions/auth requirements, side effects, visibility consequences, and what is returned after creation, leaving a mutation tool largely opaque.

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 front-loaded sentence with no filler words; every part of it contributes to identifying the action and resource.

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 three-parameter create tool with full schema coverage and no output schema, the description is adequate but thin. With no annotations, it should at least note the mutation's effect or visibility behavior, which it does not.

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%, with each parameter (name, is_public, description) well documented including a default and examples. The description adds no parameter meaning beyond the schema, so the baseline 3 applies.

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?

States a specific verb ('Create') and resource ('board') plus its purpose (organizing visual bookmarks), which clearly separates it from sibling entry tools like bowrd_create_entry. It stops short of explicit sibling differentiation, but the resource distinction is unambiguous.

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 such as bowrd_create_entry, nor any mention of prerequisites or context. The agent must infer usage entirely from the resource name.

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

bowrd_create_entryB

Create a new pin/entry in Bowrd. Automatically downloads the image to Bowrd storage and attaches it to the specified board.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional list of tags (e.g. ['architecture', 'minimalism'])
titleYesTitle of the pin/entry
board_idYesThe ID of the board to add this pin to
image_urlYesDirect URL to the image
is_publicNoWhether the pin is publicly visible
source_urlNoSource webpage where the image was found
descriptionNoOptional notes or description for the pin

TDQS

B3.3/5.0
Behavior3/5

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. It usefully reveals a non-obvious side effect — the image is downloaded and stored in Bowrd rather than merely referenced — but says nothing about authentication, failure modes for unreachable URLs, or what is returned after creation.

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?

Two short sentences, front-loaded with the core action and followed by the side effect. No filler, no repetition of the title or name.

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 7-parameter creation tool with no output schema and no annotations, the description covers the action but not the outcome — it never says an entry ID or object is returned for later use with bowrd_get_entry or bowrd_update_entry, nor that is_public defaults to true. Adequate but with clear gaps for a write operation.

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 all seven parameters are already documented in the schema, which sets the baseline at 3. The description adds no syntax, format, or constraint detail (e.g., that image_url must be a directly fetchable URI) beyond what the schema states.

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 gives a specific verb and resource ('Create a new pin/entry in Bowrd') plus a key side effect. It is clear on its own, but it never distinguishes itself from adjacent siblings such as bowrd_scrape_images_from_url, which also handles images pulled from URLs, so an agent could confuse the two.

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 when-to-use guidance, no mention that board_id must first come from bowrd_list_boards or bowrd_create_board, and no stated alternatives or exclusions. The agent must infer all routing from the tool name.

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

bowrd_get_entryB

Retrieve detailed information about a single pin/entry by its ID or UUID.

ParametersJSON Schema
NameRequiredDescriptionDefault
entry_idYesThe numerical ID or UUID string of the entry

TDQS

B3.2/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 the full burden. 'Retrieve' implies a read, but the description says nothing about behavior on a missing/invalid ID, auth or permission needs, or rate limits, leaving meaningful gaps for even a simple lookup 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?

One front-loaded sentence with no filler; the resource and lookup key come first. Slightly muddied by the 'pin/entry' terminology doubling, which is the only reason it isn't a clean 5.

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?

A one-parameter lookup is nearly self-explanatory, and there are no nested objects. However, with no output schema, the description's 'detailed information' never hints at what is returned or which identifier form to prefer, leaving minor gaps.

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 single entry_id parameter is fully documented as numeric ID or UUID, so baseline 3 applies. The description merely restates the same 'ID or UUID' duality without adding format or resolution details.

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?

Clear verb+resource: 'Retrieve detailed information about a single pin/entry by its ID or UUID.' The word 'single' and 'by its ID' implicitly separate it from list/search siblings, though no sibling is named explicitly.

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?

Usage is implied rather than stated: an agent infers this is the tool for fetching one known entry, versus bowrd_search_entries or bowrd_list_entries. No explicit when-to-use, when-not-to-use, or alternative routing is given.

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

bowrd_list_boardsA

List all boards in Bowrd with their ID, name, slug, description, and pin counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden, and it does add value by listing the exact fields returned (ID, name, slug, description, pin counts). However, it says nothing about pagination, ordering, result limits, or permissions, which are the traits an agent needs for a 'list all' tool.

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 front-loaded sentence with no filler. The verb and resource come first and the return-field detail follows immediately, so every clause earns its place.

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?

There is no output schema, so the description usefully compensates by enumerating the returned fields. It is close to complete for a zero-parameter list tool, though pagination and ordering behavior are unaddressed.

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 takes zero parameters, so the baseline of 4 applies; there is no parameter semantics for the description to clarify or omit.

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?

States a specific verb ('List') and resource ('all boards in Bowrd'), and enumerates the returned fields, so the agent knows exactly what it retrieves. It does not explicitly distinguish itself from siblings like bowrd_search_entries or bowrd_create_board, but the scope ('all boards') is unambiguous.

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?

Usage is only implied: an agent can infer this is the tool for enumerating boards rather than entries or a search. There is no explicit when-to-use statement, no mention of alternatives, and no prerequisites (e.g. auth) called out.

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

bowrd_list_entriesC

List pins/entries from Bowrd, optionally filtered by a specific board ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of entries to return (default: 20)
board_idNoOptional board ID to filter entries by

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 carries the full behavioral burden. 'List' implies a read operation, but it says nothing about ordering, pagination behavior, whether the default limit is applied, or what happens when board_id is omitted. For a tool with zero annotation coverage 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.

Conciseness4/5

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

A single clean sentence with the resource front-loaded and the optional filter trailing. Nothing is wasted, though it is thin enough that it leaves obvious questions unanswered.

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 two-optional-parameter list tool with a fully documented schema and no output schema, this is minimally adequate. It is missing sibling differentiation (search_entries), return shape, and pagination/ordering context, which the agent would otherwise need.

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 both parameters (limit, board_id) are already fully documented in the schema. The description restates board_id filtering but adds no format, range, or interaction detail beyond the schema; baseline 3 applies.

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?

States a specific verb ('List') and resource ('pins/entries from Bowrd') with an optional filter scope. It does not distinguish itself from the sibling bowrd_search_entries, so an agent cannot tell from the description alone which listing tool to pick.

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

Usage Guidelines2/5

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

The description notes optional board filtering but gives no when-to-use guidance, no exclusions, and never mentions the alternative bowrd_search_entries for filtered queries. Usage must be inferred from the name and sibling list.

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

bowrd_scrape_images_from_urlC

Scrape a webpage URL to automatically find images, title, and description using Bowrd's image finder service.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe webpage URL to scrape for images

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and largely fails: it doesn't say whether results are read-only, whether an external fetch/rate limit applies, whether images are downloaded or merely listed as URLs, or how failures surface. 'Using Bowrd's image finder service' is the only extra context.

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?

One front-loaded sentence with no filler; the action and the extracted fields come first. It is efficient, though it could carry one more clause of guidance without becoming bloated.

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?

No output schema and no annotations, so the description must cover behavior; it at least names the return fields (images, title, description), which is genuinely informative. However, for a web-scraping tool it omits failure modes, auth, and whether image assets are fetched or just referenced.

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 single url parameter is fully documented in the schema itself. The description adds no format, constraint, or redirect-handling detail beyond 'the webpage URL to scrape', so baseline 3 applies.

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?

States a specific verb ('Scrape') and resource ('a webpage URL') and names the outputs it extracts (images, title, description), which is more than a tautology. It doesn't explicitly contrast itself with the board/entry CRUD siblings, 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.

Usage Guidelines2/5

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

No indication of when to reach for this tool versus the entry-creation siblings, nor whether its output is meant to feed bowrd_create_entry. The agent gets no conditions or exclusions, only a statement of what it does.

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

bowrd_search_entriesB

Search through your Bowrd pins by matching keywords in title, description, or source URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return
queryYesKeyword or phrase to search for

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses which fields are matched (title, description, source URL), which is genuine behavioral context, but it never states that this is a read-only operation, how results are ordered, or anything about pagination or limits.

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 front-loaded sentence with zero filler. The search scope is stated immediately and every word earns its place.

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 two-parameter read-only search with no output schema, the essentials are covered, but the description omits result ordering, truncation/limit behavior, and any note that results are read-only. It is minimally adequate rather than 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 coverage is 100%, so both the query and limit parameters are already documented in the schema, including the default and max. The description adds nothing about query syntax (exact phrase, boolean, case sensitivity) or how limit interacts with results, so the baseline 3 applies.

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?

States a specific verb (search) and resource (Bowrd pins/entries) and specifies the matchable fields (title, description, source URL). It is distinguishable from bowrd_list_entries by implication (keyword search vs. enumeration), though it never names that sibling explicitly.

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 gives no when-to-use guidance, no mention of the list_entries alternative, and no prerequisites or exclusions. The keyword-matching detail implies usage, but nothing tells the agent when search is preferable to listing or fetching a single entry.

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

bowrd_update_entryA

Update an existing pin/entry (edit title, description, content warning, tags, change visibility, or move to another board).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoReplacement list of tags (e.g. ['fashion', 'autumn'])
titleNoNew title for the entry
board_idNoID of the board to move this entry to
entry_idYesThe numerical ID or UUID string of the entry to update
is_publicNoWhether the entry is publicly visible
descriptionNoNew description or notes for the entry
content_warningNoOptional content warning / spoiler tag

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the mutation scope (title, description, content warning, tags, visibility, board) and implies a partial update rather than full replacement, but says nothing about permissions, whether changes are reversible, how omitted fields behave, 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.

Conciseness5/5

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

A single front-loaded sentence with the action and target first and the editable fields in a compact parenthetical. No filler, no repetition of schema text.

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?

Adequate for a 7-parameter mutation tool with a fully documented schema and no output schema, but because there are no annotations the description should have covered authorization needs, partial-update semantics, and error behavior, which it omits.

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 every one of the 7 parameters is already documented in the schema, including the entry_id ID/UUID duality. The description's field list merely restates those parameters and adds no format or constraint detail, so the baseline of 3 applies.

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?

Specific verb (update) plus resource (pin/entry), with an enumerated list of editable attributes and the qualifier 'existing', which implicitly distinguishes it from bowrd_create_entry. It never names a sibling tool explicitly, so it stays 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.

Usage Guidelines3/5

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

'Update an existing pin/entry' implies the precondition that the entry must already exist and that creation is handled elsewhere, but there is no explicit when-to-use/when-not guidance, no mention of required permissions, and no pointer to alternatives such as bowrd_create_entry or bowrd_get_entry.

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. 8 tool updatesv1.1.0
    • First observedbowrd_create_board
    • First observedbowrd_create_entry
    • First observedbowrd_get_entry
    • First observedbowrd_list_boards
    • First observedbowrd_list_entries
    • First observedbowrd_scrape_images_from_url
    • First observedbowrd_search_entries
    • First observedbowrd_update_entry

TDQS

A3.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing boards vs entries, creating boards vs entries, getting/updating entries, searching, and scraping. No overlapping functionality is apparent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with the 'bowrd_' prefix (e.g., bowrd_list_boards, bowrd_create_entry). This is predictable and easy to understand.

Tool Count5/5

With 8 tools, the server is well-scoped: it covers essential operations for boards and entries without unnecessary bloat. This is an appropriate size for a bookmarking service.

Completeness4/5

The surface covers CRUD for entries and creation/listing for boards, plus search and scrape. However, it lacks board update/delete and entry delete, which are minor gaps that agents might need.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to save, search, and manage bookmarks with semantic search, automatic metadata extraction, and optional LLM-powered enrichment, all running locally.
    8
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to manage Pinterest boards and pins, create and update pins, and track analytics via the Pinterest API v5.
    4
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables image search and information retrieval from Pinterest using the Model Context Protocol. Supports searching by keywords, getting similar pins, and downloading images directly.
    5
    108 npm
    MIT