pagerankcafe-mcp
Officialpagerankcafe-mcp
The marketing platform for your AI agents.
An MCP (Model Context Protocol) server for the PageRankCafe API. It gives an AI agent tools to read and post link ads, banner ads, YouTube video ads, and press releases/blog articles on PageRankCafe, check credit and referral balances, read per-placement performance, and (on paid tiers) pull platform-wide ad performance insights.
Getting a key
Create a PageRankCafe account at https://pagerankcafe.com.
Upgrade to a paid membership (Bronze/Silver/Gold) at https://pagerankcafe.com/membership-info if you want to use the write and insights tools. Read tools work on a free account too.
Generate an API key at https://pagerankcafe.com/apiKeys.
Account creation and key generation are both manual, human steps on the website — there is no programmatic signup.
Related MCP server: flour-ads
Configuration
The server reads its configuration from environment variables:
Variable | Required | Default | Description |
| Yes | — | Your API key from |
| No |
| API base URL. Override only for testing against a non-production environment. |
Install
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"pagerankcafe": {
"command": "npx",
"args": ["-y", "pagerankcafe-mcp"],
"env": {
"PAGERANKCAFE_API_KEY": "your-api-key-here"
}
}
}
}Claude Code
claude mcp add pagerankcafe --env PAGERANKCAFE_API_KEY=your-api-key-here -- npx -y pagerankcafe-mcpCursor
Add to your Cursor MCP settings (~/.cursor/mcp.json or the project's .cursor/mcp.json):
{
"mcpServers": {
"pagerankcafe": {
"command": "npx",
"args": ["-y", "pagerankcafe-mcp"],
"env": {
"PAGERANKCAFE_API_KEY": "your-api-key-here"
}
}
}
}Tools
Every write tool and the insights tool require a paid membership (Bronze/Silver/Gold); the API returns an error for free accounts. Read tools work on any valid key, including free accounts.
Tool | Membership | Description |
| Free | Checks API connectivity and returns the authenticated user's username and membership status. |
| Free | Lists your active link ads. |
| Free | Lists your active banner ads. |
| Free | Lists your active YouTube video ads. |
| Free | Lists your active press releases / blog articles. |
| Free | Returns your credit balance, available post slots, links viewed, and links remaining. |
| Free | Returns your referral counts (today, 7 day, 30 day, all time). |
| Free | Returns per-placement performance for link, banner, YouTube, or press-release ads. |
| Paid | Uploads an image (local file path or base64) and returns a hosted HTTPS URL. |
| Paid | Creates a new banner ad. |
| Paid | Posts an existing banner into rotation using credits. |
| Paid | Creates a new YouTube video ad. |
| Paid | Partially updates an existing YouTube ad you own. |
| Paid | Creates a new press release / blog article. |
| Paid | Partially updates an existing press release you own. |
| Paid | Posts an existing press release to the home-page widget using credits. |
| Paid | Creates a new link ad. |
| Paid | Posts an existing link ad into rotation using credits (free/credit posts only: |
| Paid | Trailing-30-day platform performance aggregates by ad type and option, plus current prices. |
Full request/response detail for each underlying endpoint is in the OpenAPI spec at https://pagerankcafe.com/api/spec (rendered at https://pagerankcafe.com/api/docs).
Error handling
Every tool returns the API's JSON response as the tool result on success. On a non-2xx API response, the tool returns an MCP tool error (isError: true) carrying the API's error message. There are no retries and no silent fallbacks — a failed call always surfaces as a failed tool call.
Development
npm install
npm run build # compiles src/ to dist/ with tsc
npm test # builds, then runs the stdio smoke test (no network required)The test starts the built server as a subprocess over stdio (using StdioClientTransport from @modelcontextprotocol/sdk), lists its tools, and checks the full tool list is present — no real API key or network access is used.
Available Tools
19 toolscreate_bannerCreate a bannerA
Creates a new banner ad. The image URL must be HTTPS and match a supported dimension; the ad location is detected automatically from the image size. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: url (required), title (required), url_target (required).
create_linkCreate a link adA
Creates a new link ad. Mirrors the web "add link" flow. Returns the new link's id. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: url (required), title (required).
create_press_releaseCreate a press releaseA
Creates a new press release / blog article. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: url (required), body (required), slug (required), intro (required), +2 more.
create_youtube_adCreate a YouTube adA
Creates a new YouTube video ad; the video ID is derived automatically from the link. Creating with status 1 (default) emails your followers once, ever, per video - pass status 0 to create it silently as Disabled. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: title (required), youtube_link (required), status, description.
get_creditsGet credit balanceA
Returns available credits, available post slots, links viewed, and links remaining for the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
get_platform_insightsGet platform insightsA
Returns trailing-30-day platform performance aggregates: banners by location (active placements, impressions/placement/day, average CTR), links by option bucket (icon/bold/view_time/view_credits: active placements, average views/placement/day), YouTube ads (active placements, average impressions/placement/day), press releases (active placements, average views/article/day), platform daily total views, and current credit/cash prices and tier discounts. Aggregates only, no per-member data. Cached for one hour. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: no named parameters.
get_referral_statsGet referral statsA
Returns referral counts for today, last 7 days, last 30 days, and all time for the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
healthHealth checkA
Checks API connectivity and returns the authenticated user's username and membership status. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
list_bannersList bannersA
Returns all active banner ads owned by the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
list_linksList linksA
Returns all active, non-reported link ads owned by the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
list_postsList ad placement performanceA
Returns one row per ad placement (post) with the performance fields that exist for that ad type: banners (impressions, clicks, ctr, start_date, end_date, days), links (views, view_credits, ad_days, icon, bold, view_time, date_posted), youtube (impressions, start_date, end_date, days), press releases (views, start_date, end_date, days). Does not require a paid membership; available to free accounts too.
Inputs: type (required), status.
list_press_releasesList press releasesA
Returns all active, non-reported press releases / blog articles owned by the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
list_youtube_adsList YouTube adsA
Returns all active, non-reported YouTube video ads owned by the authenticated user. Does not require a paid membership; available to free accounts too.
Inputs: no named parameters.
post_bannerPost a banner with creditsA
Posts an existing banner into rotation using credits (paid members: 1-2 days, 10 credits/day). Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: banner_id (required), days.
post_linkPost a link ad with creditsA
Posts an existing link ad into rotation using credits, mirroring the web free-post flow. Sponsored (paid via PayPal/Stripe) posts are not exposed here and stay on the website, so ad_days must be 0. view_time and view_credits are derived server-side from icon/bold/double_time (the same schedule the web free-post form uses) and are not accepted as input, since view_credits is the credit reward funded by other members' views. If the posting user needs approval, the post is created pending and the response reports status "pending" with a message explaining it awaits approval before going live; otherwise it returns status "active". Returns the post id, the derived view_time/view_credits, and remaining credits. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: ad_days (required), link_id (required), bold, icon, +1 more.
post_press_releasePost a press release with creditsA
Posts an existing press release to the home-page widget using credits (paid members: 7 days, 70 credits). Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: press_release_id (required), days.
update_press_releaseUpdate a press releaseA
Partially updates an existing press release you own; only supplied fields change. Setting status to 1 (Active) emails followers, once ever, per article. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: press_release_id (required), url, body, slug, +4 more.
update_youtube_adUpdate a YouTube adA
Partially updates an existing YouTube ad you own; only supplied fields change. Setting status to 1 (Active) emails followers, once ever, per ad. Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: youtube_ad_id (required), title, status, description, +1 more.
upload_imageUpload an imageA
Uploads an image (max 2MB; JPG, PNG, GIF, WEBP) and returns a hosted HTTPS URL for use as a banner image or inline article image. Provide either a local file path or base64 content plus a filename. When type is "banner" the image must match a supported banner dimension (728x90, 300x250, 120x600, 160x600, 468x60, 336x280, 250x250, 851x315, 650x400, 800x82, 234x60, 125x125, 300x200, 120x240, 240x400, 150x60). Requires a paid membership (Bronze/Silver/Gold); returns an error for free accounts.
Inputs: type (required), base64, filename, file_path.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 19 tools
Tools are mostly distinct, but the create_* vs post_* pairs (e.g., create_banner vs post_banner) and the various list_* tools could confuse agents. Descriptions help clarify, but naming alone is not fully unambiguous.
All tools follow a consistent snake_case verb_noun pattern (list_, get_, create_, update_, post_, upload_). No mixed conventions or irregular naming.
19 tools is slightly above the typical 3-15 well-scoped range, but the count is justified by covering multiple ad types (links, banners, YouTube, press releases) plus platform insights.
The domain is well covered with create/update/list/post operations for each ad type, plus credits, referral stats, and platform insights. Minor gaps like delete operations or update for links/banners exist, but the core workflows are present.
Maintenance
Related MCP Connectors
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
MCP-native ad server. Monetize AI chatbots and agents with conversational ads.
Hosted MCP server for AI agents to post to LinkedIn profiles and X and upload to YouTube.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for AI agents to manage ad campaigns across Google, Meta, LinkedIn, Microsoft, Reddit, TikTok, and more21433 npm21MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for managing ad campaigns across Google Ads, Meta, and more. Enables deploying campaigns, checking performance, and managing budgets from terminal or AI assistants.MIT
- AlicenseAqualityDmaintenanceAn MCP server for the OpenAI Ads (ChatGPT Ads) Advertiser API, providing tools for agent-led performance marketing such as finding dead ads, auditing near-duplicate copy, and auditing ad-group context hints.18MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for the Vibe-Marketer Agent API that enables generating ads, auditing landing pages, and running local preflight checks on ad compliance, with an autonomous agent loop to improve results.-