pinterest-mcp
Provides tools for interacting with Pinterest's API v5, enabling AI agents to read board and pin data, view analytics, and publish new pins and boards.
Click on "Install 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., "@pinterest-mcplist my Pinterest boards"
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.
pinterest-mcp
A minimal Model Context Protocol server for the Pinterest API v5. Reads boards/pins/analytics; publishes new pins and boards. Built for a multi-agent fleet where a human must sign off before anything reaches the public account.
Setup
npm install
npm run buildRequires a Pinterest Developer App (https://developers.pinterest.com/apps/) with a registered redirect URI of http://localhost:3034/oauth/redirect. Note the App ID and App Secret.
Getting a token
PINTEREST_APP_ID=<id> PINTEREST_APP_SECRET=<secret> \
PINTEREST_CREDENTIALS_FILE=/home/you/.openclaw/credentials/pinterest.env \
node scripts/get-pinterest-token.mjsApprove in the browser. The script writes PINTEREST_APP_ID, PINTEREST_APP_SECRET, PINTEREST_ACCESS_TOKEN, PINTEREST_REFRESH_TOKEN, PINTEREST_TOKEN_EXPIRES_AT into the file (mode 0600). Tokens are deliberately not printed.
Pass --port <n> if 3034 is taken (register the matching redirect URI in the Pinterest app). The listener binds before printing the authorize URL, so an occupied port fails loudly rather than burning the one-time auth code.
Configuration
{
"mcpServers": {
"pinterest": {
"command": "node",
"args": ["/path/to/pinterest-mcp/dist/index.js"],
"env": {
"PINTEREST_CREDENTIALS_FILE": "/home/you/.openclaw/credentials/pinterest.env"
}
}
}
}The server rewrites PINTEREST_ACCESS_TOKEN / PINTEREST_TOKEN_EXPIRES_AT in that file when it refreshes (Pinterest access tokens expire after ~30 days). OpenClaw's MCP config bakes env vars at mcp add time and cannot rewrite them; the file it points at can be rewritten — same pattern as x-mcp.
Related MCP server: @striderlabs/mcp-pinterest
Available tools
Tool | Description |
| Current account (username, id, account type). Safe read. |
| List boards, paginated. Safe read. |
| One board's details by id. Safe read. |
| List pins, optionally scoped to one |
| One pin's details by id. Safe read. |
| Impressions / saves / pin clicks / outbound clicks / video views for our own pin. Safe read. |
| Live. Create a new board on the account. |
| Live. Publish an immediately-visible pin to one of our boards. |
Write tools require agent_id (must hold the social capability) and task_id (task must be Done and carry at least one approved output; brand must match PINTEREST_SERVER_BRAND, default with_nate). Both are ordinary refusals, not crashes — a gate rejection returns isError: true with a readable message.
Pinterest-specific gotchas
Trial mode. A fresh Pinterest Developer app starts in trial mode, limited to the app owner's own account. That is its own safety net for a first-time integration — write scope cannot touch anyone else's account until the app is submitted for review and approved for standard access.
Access-token rotation. Tokens expire in ~30 days; the server refreshes proactively via
POST /v5/oauth/tokenwithgrant_type=refresh_token. The refresh token itself usually persists but is written back to the credentials file if Pinterest ever rotates it.image_urlmust be publicly reachable. Pinterest fetches the image server-side. A local filesystem path (e.g. a MUSE-generated PNG under/mnt/d/Fleet/...) will fail — the file has to be hosted somewhere public first, or uploaded via Pinterest's separatePOST /v5/mediaflow (not implemented in this first version).Put the destination URL in
link, notdescription. Thelinkfield is whatpinterest_get_pin_analyticscounts outbound clicks against. For Etsy promotion the Etsy listing URL goes there.PNG or JPEG. Other formats are rejected by Pinterest at pin-create time.
Security model: agent_id capability gating + brand + publish-clearance
OpenClaw doesn't propagate per-agent caller identity down to MCP tool calls in this version (all agents share the same MCP process — confirmed platform limitation, openclaw/openclaw#67682). Write tools ask the fleet board's own capability record for the caller before doing anything, via GET /agents/{id}/capabilities at FLEET_BOARD_URL (default http://127.0.0.1:8420).
A second call — GET /tasks/{id}/publish-clearance?brand=<brand> — proves both the task's brand matches this server AND that a human has actually closed the task with an approved output. Same endpoint every outward server uses; the board owns the rule.
Honest limitations:
agent_idis self-reported by the caller, not cryptographically bound. This turns a silent wrong-agent action into a loud, rejected, auditable one — it does not stop a determined actor from lying.The clearance gate is defence in depth. The load-bearing rule is that the board's own fan-out (
BRAND_CHANNELSinpickup.py) decides whether a publishing subtask is ever created. This gate catches an agent reaching for the tool outside that flow.
Standalone use: either stand up a minimal service at FLEET_BOARD_URL returning a JSON string array for GET /agents/{id}/capabilities and a {cleared: bool, reasons: string[]} for GET /tasks/{id}/publish-clearance, or remove the requireCapability / requireBrand calls from src/index.ts.
Deliberately not exposed
Deleting a pin (
DELETE /v5/pins/{pin_id}). An unreviewed retraction of live content is a real, unrecoverable outward action. Deletions stay with Nathan, via the Pinterest app.Deleting a board. Same reason.
Follows / reactions. Social actions belong behind an explicit ECHO decision, not incidentally callable.
Notes on safety
Every request goes to
api.pinterest.comorwww.pinterest.comonly — no telemetry, no third-party calls, no dynamic code execution.Credentials live in a mode-0600 file rewritten in place. Tokens are never printed by either the server or the OAuth catcher.
License
MIT — see LICENSE.
Available Tools
8 toolspinterest_create_boardA
Create a new Pinterest board on the account. Live, immediately visible on the profile if privacy=PUBLIC. Requires agent_id (must hold 'social') and task_id (task must be cleared for the with_nate brand — Done and carrying an approved output).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Board name (visible to the public) | |
| privacy | No | PUBLIC (default) or SECRET (hidden from other users) | |
| task_id | Yes | The board task this belongs to. The task's brand must be with_nate and it must be Done with an approved output, or the call is refused. | |
| agent_id | Yes | Your fleet-board agent id, e.g. 'echo' | |
| description | No | Board description |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses live visibility ('Live, immediately visible on the profile if privacy=PUBLIC'), authorization requirements ('agent_id must hold social'), and failure conditions ('or the call is refused'). These go far beyond the schema and give the agent critical behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and includes only high-value details about visibility, prerequisites, and failure. No 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?
For a 5-parameter tool with no annotations or output schema, it covers purpose, prerequisites, side effects, and refusal behavior. It does not mention the return value, but given the lack of output schema, this is a minor gap rather than a critical omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning for agent_id by specifying it must hold 'social' permission, and clarifies the consequence of task_id requirements. It does not repeat all parameters but enriches two key ones.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Create a new Pinterest board on the account.' This clearly distinguishes it from sibling tools like pinterest_create_pin, and the read-only tools (get/list). No ambiguity about what the tool does.
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 provides clear context for when to use the tool by stating prerequisites: 'Requires agent_id (must hold 'social') and task_id (task must be cleared for the with_nate brand — Done and carrying an approved output).' It does not explicitly name alternatives or exclusion criteria, but the purpose and requirements make usage obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_create_pinA
Publish a real, immediately-live pin to one of our boards. Requires agent_id (must hold 'social') and task_id (task must be cleared for the with_nate brand). No draft state — once this returns success, the pin is on the account. image_url must be a PUBLIC http(s) URL that Pinterest can fetch server-side; a local file path will NOT work. The 'link' field is the destination URL when someone clicks the pin (e.g. the Etsy listing URL) — put it there, not in the description, or click-through analytics count nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| link | No | Destination URL clicked from the pin. Put the Etsy listing URL here for Etsy promotion — not in the description. | |
| title | No | Pin title (visible) | |
| task_id | Yes | The board task this belongs to. Must be with_nate, Done, and have an approved output. | |
| agent_id | Yes | Your fleet-board agent id, e.g. 'echo' | |
| alt_text | No | Accessibility alt text | |
| board_id | Yes | The board id to pin to (from pinterest_list_boards) | |
| image_url | Yes | PUBLIC http(s) URL of the image. Pinterest fetches it server-side — a local file path will not work. PNG or JPEG. | |
| description | No | Pin description (visible) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It reveals that the pin is immediately live, has no draft state, requires specific permissions, demands a public http(s) image URL (local files fail), and warns about click-through analytics depending on the 'link' field. This goes well beyond a generic 'creates a pin' statement.
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 three focused sentences, each carrying necessary information: what the tool does, prerequisites, and critical constraints. It is front-loaded with the main action and avoids redundancy or filler, making it easy to scan.
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?
Despite having 8 parameters, no output schema, and no annotations, the description covers the core purpose, prerequisites, key parameter constraints, and success semantics ('once this returns success, the pin is on the account'). This is sufficient for an agent to invoke the tool correctly without needing additional context.
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 descriptions already cover 100% of parameters, so baseline is 3. The description adds marginal value by emphasizing the 'social' permission requirement for agent_id (not in schema) and reasserting the live-pin consequence. It mostly echoes schema details for image_url and link, but the added prerequisite justifies a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Publish a real, immediately-live pin to one of our boards,' which uses a specific verb ('publish') and resource ('pin') while also indicating the scope ('to one of our boards'). This clearly distinguishes it from sibling read/list tools and the separate pinterest_create_board tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit prerequisites: agent_id must hold 'social' and task_id must be cleared for with_nate. It also states the 'no draft state' behavior and directs the 'link' field to the destination URL, giving practical usage context. It does not explicitly name alternative tools, but the conditions and examples imply when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_get_boardA
Fetch one board's details by id. Safe read.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | Yes | The board id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. 'Safe read' discloses the non-destructive nature, which is valuable. However, it does not describe what specific details are returned, error behavior, or any other behavioral traits, leaving some ambiguity.
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 extremely concise: two short phrases that convey the essential purpose and safety. Every word is functional, with no redundancy or fluff.
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 single-parameter, read-only getter, the description sufficiently covers the operation. While it lacks detail on the return payload, the phrase 'board's details' implies the core output. The absence of an output schema is not critical given the straightforward nature of the 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?
The schema has 100% coverage with 'The board id' for the single parameter. The description adds no additional format, type constraints, or usage notes, but with full schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Fetch'), the resource ('one board's details'), and the method ('by id'). It distinguishes itself from sibling tools like list_boards, which retrieves multiple boards, and get_pin, which targets a different resource.
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 implies the use case: when you have a specific board ID and need that board's details. It provides clear context but does not explicitly mention alternatives or when not to use this tool, which is acceptable for a simple singleton getter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_get_pinA
Fetch one pin's details by id. Safe read.
| Name | Required | Description | Default |
|---|---|---|---|
| pin_id | Yes | The pin id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey safety traits. It adds 'Safe read', indicating a read-only operation, which is helpful. But it omits other behavioral details like error handling, permissions, or return format, leaving the full burden partially unmet.
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 extremely concise, consisting of two short sentences that front-load the primary action. Every word contributes value, with no redundancy or filler.
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?
This is a simple single-parameter tool with no output schema or annotations. The description explains its core function adequately. It could be more complete by detailing what 'details' include, but the minimal complexity makes this a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully describes pin_id as 'The pin id' (100% coverage). The description's 'by id' reinforces the parameter but adds no new meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch one pin's details by id' uses a specific verb and resource, clearly indicating the tool fetches a single pin's data. The phrase 'one pin' distinguishes it from sibling tools like list_pins and get_pin_analytics.
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 implies usage for retrieving a single pin by ID, which contrasts with listing all pins. However, it does not explicitly mention when to use this tool over alternatives or provide exclusions, so guidance is implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_get_pin_analyticsA
Engagement metrics for one of our own pins (impressions, saves, pin clicks, outbound clicks, video views). Safe read. This is the native Etsy-driver measurement — outbound clicks on a pin whose link points at an Etsy listing are the traffic-lever signal.
| Name | Required | Description | Default |
|---|---|---|---|
| pin_id | Yes | The pin id | |
| end_date | No | Optional YYYY-MM-DD, default today | |
| start_date | No | Optional YYYY-MM-DD, default 30 days ago | |
| metric_types | No | Optional comma-separated list of Pinterest metric names. Default: IMPRESSION,SAVE,PIN_CLICK,OUTBOUND_CLICK,VIDEO_MRC_VIEW |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states 'Safe read' and that it works on 'one of our own pins,' which discloses the ownership requirement and read-only nature. It doesn't detail rate limits, error conditions, or return format, but for a simple analytics read, the provided transparency is above average.
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 waste. The first sentence front-loads the core purpose, the second adds a crucial usage context. Every phrase 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?
Given the tool's simplicity and 100% schema coverage, the description covers purpose, safety, and a key usage context. However, it lacks a description of the return shape (e.g., a list of metric-value pairs), which matters since there is no output schema. Still, the overall completeness is high for a read-only analytics 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 100%, so the baseline is 3. The description adds meaningful semantics by listing the exact default metrics (impressions, saves, pin clicks, outbound clicks, video views) and explaining the significance of outbound clicks in the Etsy context. This goes beyond the schema's bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns engagement metrics (impressions, saves, pin clicks, outbound clicks, video views) for a single owned pin, distinguishing it from sibling tools like get_pin (which likely returns pin details) and list_pins. The verb is implied ('get') but the resource and scope are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives context on when to use the tool: to measure native Etsy-driver traffic via outbound clicks, which is the traffic-lever signal. It doesn't explicitly state exclusions or alternatives, but the sibling list is limited and the analytics-focused purpose is clear. This is more than implied usage; it's a strong contextual cue.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_get_user_infoA
Get the current Pinterest account's basic info (username, id, account type). Safe read. Use to confirm the credentials point at the intended account before any write.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Safe read', which is a key behavioral trait. It also specifies the returned data fields. While it does not cover potential errors or prerequisites, it is adequate for a simple read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each serving a clear purpose: what the tool does and when to use it. No unnecessary words or repetition.
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 no-parameter, no-output-schema tool, the description fully explains the return values (username, id, account type) and provides a use case. It is complete for 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?
The tool has zero parameters, so the schema is empty. Per guidelines, a baseline score of 4 applies. No additional parameter explanation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('Get') and resource ('current Pinterest account's basic info'), naming the exact fields returned (username, id, account type). It is distinct from sibling tools like get_pin or list_boards, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool ('before any write' to confirm credentials). It does not mention alternatives or when not to use it, but the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_list_boardsA
List the account's boards, paginated. Safe read. Use before creating a pin to find the board_id you want to pin to — the create-pin call needs it.
| Name | Required | Description | Default |
|---|---|---|---|
| bookmark | No | Pagination cursor from a previous response | |
| page_size | No | Results per page (1-100, default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Safe read' and 'paginated', which are valuable safety and behavior traits, but it doesn't cover auth requirements, rate limits, or output details beyond the board_id hint. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the first sentence immediately stating the purpose and the second providing usage guidance. Every word earns its place, and it is front-loaded and easy to scan.
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 list tool with two optional params and no output schema, the description covers the core purpose, safety, pagination, and use case. It doesn't spell out the exact response fields, but the board_id reference gives enough context for an agent to infer the return shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters (bookmark, page_size) are already fully described. The description adds no extra meaning to the parameters; it only repeats 'paginated' which is redundant. Baseline of 3 is appropriate when the schema does the heavy lifting.
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 'List the account's boards' with a specific verb and resource, distinguishing it from siblings like pinterest_get_board (singular) and pinterest_list_pins. It also mentions pagination, which is implied by the tool's name but reinforced in the description.
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 explicitly says 'Use before creating a pin to find the board_id you want to pin to — the create-pin call needs it', which gives a concrete when-to-use scenario. It doesn't explicitly state when not to use it, but the guidance is clear enough for an agent to decide between this and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pinterest_list_pinsA
List pins on the account, optionally scoped to a single board via board_id. Safe read.
| Name | Required | Description | Default |
|---|---|---|---|
| board_id | No | Optional: only pins on this board | |
| bookmark | No | Pagination cursor from a previous response | |
| page_size | No | Results per page (1-100, default 25) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'Safe read' explicitly signals a non-mutating operation, and 'optionally scoped' explains scoping behavior. It does not cover pagination details, but the schema already documents the bookmark parameter, and for a read-only list tool this level of disclosure is adequate.
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, front-loaded sentences. Every word adds value: the core behavior, the optional scoping, and a safety hint. No filler or repetition.
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 straightforward listing tool with only optional parameters and no output schema, the description is nearly complete. It conveys the resource type, scoping possibility, and safe-read nature. It does not spell out the return structure, but 'List pins' makes it evident.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all three parameters have descriptions), so the baseline is 3. The description adds meaningful context for board_id ('optionally scoped to a single board') but adds nothing for bookmark or page_size beyond their schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('List pins') and a resource ('the account'), optionally scoped by board_id. This distinctly differentiates it from siblings like pinterest_get_pin (single pin) and pinterest_list_boards (boards vs pins).
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 'List pins on the account' implies general listing, and 'optionally scoped to a single board via board_id' gives conditional usage. It does not explicitly name alternatives, but the sibling set and the verb 'list' make the use case clear for enumerating pins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: single-item reads (pin, board, user), list operations (boards, pins), analytics, and creation (board, pin). The descriptions clarify use cases, e.g., list_boards for finding board_id before create_pin, so there is no real ambiguity.
All tools follow the same 'pinterest_{verb}_{noun}' pattern with lowercase snake_case. Verbs are consistently get, list, or create, and nouns are clear resources. No mixed conventions or vague names.
Eight tools is well-scoped for a Pinterest management server. It covers authentication check, reading user/boards/pins, analytics, and creating boards/pins—enough to perform the advertised workflow without redundancy or bloat.
The set covers the core workflow: list boards to get IDs, create boards and pins, fetch pin data, and retrieve analytics. Missing update/delete operations are a minor gap, but the described use case (publishing live pins and measuring traffic) is fully supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
A basic MCP server to operate on the Postman API.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to Pinterest data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at https://www.cdata.com/solutions/mcp4MIT
- AlicenseBqualityDmaintenanceMCP server connector for Pinterest — search pins, manage boards, save pins, and follow users via Playwright browser automation.1010MIT
- FlicenseAqualityDmaintenanceAn MCP server that lets Claude interact with Pinterest — browsing, creating, and managing boards, pins, sections, and user profiles via the Pinterest API v5.15
- AlicenseAqualityBmaintenanceMCP server for parsing, validating, classifying, and normalizing Pinterest URLs locally, supporting pins, profiles, boards, and ideas URLs across Pinterest country domains without network requests.342MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/N-Graves/pinterest-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server