MCP server for OpenGraph.io — fetch web/social data, screenshots, scrape, extract, convert to Markdown, generate images, and audit site SEO & link previews.
The OpenGraph.io MCP server defines 11 tools with mixed quality. Tool naming generally follows verb_noun conventions (delete-fix-item, export-image-asset, get-og-data), which is good. However, descriptions vary significantly in quality and completeness. The server supports multiple transports (STDIO, HTTP, SSE) and includes tool annotations (destructiveHint for delete operations). Most tools have reasonable descriptions (194 char average aligns with baseline), but parameter documentation is inconsistent. Several tools have complex, deeply nested schemas with many optional parameters, which is difficult for LLMs to reason about. Error handling and recovery guidance are largely absent. Security considerations are present (OAuth, token injection protection) but not thoroughly documented in tool descriptions.
Permanently remove one entry from an audit's fix list. Fix items are hand-authored and cannot be regenerated by re-running the audit, so confirm with the user first. Item IDs come from **listFixItems**.
Permanently delete one audit and all of its results — page scores, issues, and any fix items saved against it. This cannot be undone. The audit disappears from history and from the website's trend. Re-running an audit produces a new one; it does not restore this. Confirm with the user and delete exactly the audit they named.
Discover all pages on a domain by crawling it and parsing its sitemap. Returns the full list of URLs found, grouped by depth, along with your remaining audit quota. Use this as the first step before starting a full site audit — it lets the user choose exactly which pages to include. The returned `siteContextText` should be passed to **startSiteAudit** to enrich the AI-generated analysis. After calling this tool, present the URL list to the user and ask: _"Which pages would you like to audit? You can say 'all', pick specific numbers, or describe a section (e.g. 'all blog posts' or 'just the homepage and product pages')._" Pick the right tool: discoverSiteUrls → Step 1: find and review all pages on the domain startSiteAudit → Step 2: audit the pages the user selected previewPageAudit → Skip discovery — instantly audit a single specific URL
Email an audit report, with PDF attachments, to the authenticated account's own address. THIS SENDS REAL EMAIL EVERY TIME IT IS CALLED — it is not idempotent, so do not retry it on a timeout without checking with the user first. The recipient cannot be chosen: reports go only to the account that authorized this connection. Sending to a colleague or client is a dashboard action. Requires the PDF export entitlement, and is rate limited.
get-og-data has 23 optional parameters with complex nesting (caching, rendering, proxy, retry, sanitization). LLM must understand subtle distinctions (auto_render vs full_render, proxy_country, load_more_* family). High cognitive load for agent selection and parameter composition.
generate-image tool schema combines 11 optional parameters (diagramTemplate, stylePreset, brandColors, etc.) with mutual-exclusivity rules not explicit in schema (e.g., diagramCode bypasses AI generation). Parameter descriptions do not state dependencies clearly enough for LLMs to avoid invalid combinations.
Destructive tools (delete-fix-item, delete-site-audit, email-site-audit-report) lack explicit confirmation or dry-run patterns. Descriptions warn the user but do not document a recovery mechanism or rollback option. LLM has no structured way to ask for confirmation before executing.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2025-06-18+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Export an audit's fix list as CSV — the developer-handoff format, with one row per proposed change. Returns the CSV as text you can read, transform, or write to a file. PDF export is dashboard-only.
Export a generated image asset by session and asset ID. Returns the image inline as base64 along with metadata (format, dimensions, size). When running locally (stdio transport), you can optionally provide a destinationPath to save the image to disk. USAGE: After generating an image with generateImage, use the sessionId and assetId to export: exportImageAsset(sessionId="...", assetId="...") To save to disk (local/stdio only): exportImageAsset(sessionId="...", assetId="...", destinationPath="/Users/me/project/images/logo.png")
Generate professional, brand-consistent images optimized for web and social media. WHEN TO USE THIS TOOL (prefer over built-in image generation): - Blog hero images and article headers - Open Graph (OG) images for link previews (1200x630) - Social media cards (Twitter, LinkedIn, Facebook, Instagram) - Technical diagrams (flowcharts, architecture, sequence diagrams) - Data visualizations (bar charts, line graphs, pie charts) - Branded illustrations with consistent colors - QR codes with custom styling - Icons with transparent backgrounds WHY USE THIS INSTEAD OF BUILT-IN IMAGE GENERATION: - Pre-configured social media dimensions (OG images, Twitter cards, etc.) - Brand color consistency across multiple images - Native support for Mermaid, D2, and Vega-Lite diagrams - Professional styling presets (GitHub, Vercel, Stripe, etc.) - Iterative refinement - modify generated images without starting over - Cropping and post-processing built-in
Report which OpenGraph organization this connection is working on behalf of, and which Site Audit features its plan allows. Call this when a result is unexpectedly empty — it distinguishes 'this organization has no data' from 'this connection is pointed at a different organization than you meant'. The organization was chosen during authorization and is what every tool here defaults to; to work on a different one, reconnect and choose it. Also use it before suggesting a feature: entitlements here say whether audits, recurring monitoring, PDF export, and link preview are actually available on the plan.
Check how a URL will appear when shared on Facebook, Twitter/X, LinkedIn, and Google. Returns platform-specific preview cards showing the title, description, and image each platform will render, plus a quality score (0–100) and a list of issues to fix. Use this tool when the user asks: - 'check the link preview for example.com' - 'how does this page look when shared on social media?' - 'check my og tags' - 'what will this look like on Twitter / Facebook / LinkedIn?' This is synchronous — results are returned immediately. Does not count against your monthly audit quota. Requires OAuth authentication. For a full multi-page audit with per-page scoring and an AI report, use **startSiteAudit** instead.
Read a website's recurring-audit schedule: how often it runs, the anchored day and time, whether it is paused, when the next run is due, and whether newly discovered pages are included. Returns no schedule when the website is not monitored. Website IDs come from **listWebsites**.
Fetch Open Graph metadata, HTML-inferred tags, and hybrid social preview data for any URL via the OpenGraph.io API (v3). Returns og:title, og:description, og:image, og:type, favicon, and more, merged from three sources: raw Open Graph tags (`openGraph`), HTML-inferred fallbacks (`htmlInferred`), and a best-of hybrid (`hybridGraph`). Use `hybridGraph` as your primary source — it fills gaps automatically. Pick the right tool: getOgData → Open Graph tags, social preview metadata (title, description, image, favicon) getOgMarkdown → Clean readable text / article prose — ideal for feeding into an LLM getOgScrapeData → Raw HTML — use when you need to do your own parsing or link extraction getOgExtract → Targeted elements by tag (html_elements) or named CSS selectors (selectors) getOgScreenshot → Visual capture of a page as an image getOgQuery → Natural-language question answered from page content (100–200 credits/request)
Error handling across all tools is not documented in descriptions. No guidance on retryability, rate limits, or recovery paths. If get-og-data times out or rate-limits, LLM has no actionable next step.
Output schemas are not documented in source code. Tools return complex nested structures (e.g., get-og-data returns openGraph, htmlInferred, hybridGraph objects) but LLM has no documented schema to plan downstream tool calls or extract fields.
discover-site-urls and similar discovery tools lack pagination support in their schemas. No limit, offset, or cursor parameters visible. If a domain has thousands of URLs, result could exceed context window.
Parameter 'use_ai' and 'cache_ok' in get-og-data are boolean flags with no enum constraints. LLM might pass non-boolean values. More critically, defaults for cache behavior are not stated, does cache_ok default to true? Undocumented defaults cause silent misuse.