Skip to main content
Glama

Tailwind App

list_top_pins

Read-onlyIdempotent

Use this when the user asks which of their Pins are doing best, what is working, or wants their top performers: returns the account's best Pins over a window, in Pinterest's own ranked order. Metrics and ranking combine paid (promoted) and organic activity unless contentType says otherwise, so by default ad spend can crowd organic Pins out of the list and a promoted Pin can rank far higher than its organic-only get_pin_analytics numbers suggest. Pass contentType ORGANIC to rank on unpromoted performance alone, or PAID for promoted only.

Ranks by ENGAGEMENT unless sortBy says otherwise, and tells you which metric it used — say so when reporting, since "top" means nothing without it. Only these five metrics rank: ENGAGEMENT, SAVE, IMPRESSION, OUTBOUND_CLICK, PIN_CLICK.

Each Pin carries creativeType, Pinterest's creative format (REGULAR, VIDEO, CAROUSEL, IDEA, COLLAGE and others), so this is how to compare performance across formats — group or filter by it rather than guessing a format from the title. It is null when Pinterest did not report one.

Each Pin also carries boardId, the Pinterest board it is saved to (the same id list_boards returns), so this is how to compare performance across boards — group by it rather than guessing a board from the title.

When isPartial is true, Pinterest limited the lookups and the Pins in omittedPinIds are missing from the ranking: say the list is incomplete, and retry shortly for the full one.

This is also how you get a Pinterest pinId to pass to get_pin_analytics. Do not re-sort the results — the order returned IS the ranking. Reading analytics is free and consumes no credits. Omit startDate and endDate for the last 30 days; supply BOTH to choose a window (supplying one is an error). Dates are UTC YYYY-MM-DD. Pinterest reports at most 90 days back and at most a 90-day span. The range actually used comes back as startDate/endDate — report those, do not assume the period. If the user did not say which Pinterest account to use and list_accounts returns more than one, ask the user which account to use before calling this — do not choose for them.

Input Schema

NameRequiredDescriptionDefault
sortByNoMetric to rank by. Defaults to ENGAGEMENT, which measures what people did with a Pin rather than how often Pinterest showed it.
endDateNoLast day of the window (inclusive), UTC YYYY-MM-DD. Requires startDate.
accountIdYesNumeric Tailwind account ID returned by list_accounts
startDateNoFirst day of the window, UTC YYYY-MM-DD. Requires endDate. Omit both for 30 days.
contentTypeNoWhich activity to count: ORGANIC for unpromoted performance only, PAID for promoted (ad) performance only, ALL for both blended. Defaults to ALL.

Output Schema

NameRequiredDescriptionDefault
pinsYesBest-performing Pins, best first
sortByYesThe metric the list is actually ranked by
endDateYes
accountIdYes
isPartialNoTrue when some Pins Pinterest ranked are missing from pins because Pinterest limited the lookups. A retry shortly should return the full list.
startDateYes
contentTypeYesThe paid/organic filter actually applied
omittedPinIdsNoThe ranked Pins left out of pins for that reason, in ranking order.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds genuinely non-obvious behavior: paid and organic are blended by default so ad spend can crowd out organic Pins, the returned order IS the ranking and must not be re-sorted, isPartial/omittedPinIds signals an incomplete list, and reads consume no credits. It also warns that the range actually used comes back in the response rather than being assumed.

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?

Front-loaded with the user-intent trigger and the ranked-order guarantee, then organized by concern (ranking basis, per-Pin fields, partial results, dates, account selection). It is long but nearly every sentence carries a distinct constraint; minor redundancy appears where the date rules restate the schema, and the creativeType/boardId grouping advice is slightly expansive for its importance.

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?

For a five-parameter ranked-analytics tool it covers everything an agent needs to call and report correctly: window defaults and limits, ranking metric disclosure, paid/organic blending, incompleteness handling, the pinId handoff to get_pin_analytics, and the multi-account disambiguation rule. Return-field detail is bonus given an output schema exists.

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?

Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the consequence of each parameter — that contentType ALL blends paid and organic and can distort the ranking, that only five metrics are rankable, and that supplying one date is an error, not a default. It does not add much beyond the enum labels for the metric choices themselves, which the schema already enumerates.

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?

States a specific verb and resource in the opening line ('returns the account's best Pins over a window, in Pinterest's own ranked order') and anchors it to the user intent that triggers it ('which of their Pins are doing best'). It explicitly separates itself from the closest sibling by noting this is how you get a pinId for get_pin_analytics and that analytics numbers differ from these rankings.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('what is working', 'top performers'), when-to-switch ('Pass contentType ORGANIC ... or PAID for promoted only'), and when a prerequisite blocks the call ('if the user did not say which account ... and list_accounts returns more than one, ask the user ... do not choose for them'). It also names the hard limits (90 days back, 90-day span, both dates or neither) that determine whether the call is even valid.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources