Rampify MCP Server
Rampify MCP Server
This npm package is deprecated. Use the hosted remote server instead — zero install, always up to date, more tools.
Migrate to the Remote Server
The Rampify MCP server now runs remotely at https://www.rampify.dev/api/mcp. No packages to install.
Claude Code:
claude mcp add --transport http rampify \
https://www.rampify.dev/api/mcp \
--header "Authorization: Bearer sk_live_your_api_key_here"Cursor / VS Code (.cursor/mcp.json or .vscode/mcp.json):
{
"mcpServers": {
"rampify": {
"type": "http",
"url": "https://www.rampify.dev/api/mcp",
"headers": {
"Authorization": "Bearer sk_live_your_api_key_here"
}
}
}
}Claude Web: Go to claude.ai → Customize → Connectors → Add custom connector with URL https://www.rampify.dev/api/mcp
Get your API key at rampify.dev/settings/api-keys.
Related MCP server: Google Search Console MCP Server
Why the remote server?
24 tools vs 6 in this npm package
Always up to date — no version management
Zero install — just a URL and your API key
Multi-project support via
X-Rampify-Projectheader
This package remains available for existing users but will not receive new versions.
Previous README
What is a Claude SEO Checker?
A Claude SEO checker is an MCP (Model Context Protocol) server that adds SEO validation capabilities to Claude Code and Cursor. Unlike AI rank trackers that check if your site appears in Claude's AI responses, Rampify analyzes your website's technical SEO, validates meta tags, detects issues, and provides actionable fix recommendations—all from your terminal or IDE.
Not an AI rank tracker. This is a developer tool that brings SEO intelligence into your coding workflow.
Claude SEO Checker vs AI Rank Trackers
Feature | Claude SEO Checker (Rampify) | AI Rank Trackers |
What it checks | YOUR website's SEO (meta tags, schema, performance) | If your site appears in Claude AI responses |
Use case | Fix SEO issues before deployment | Track AI visibility |
Where it works | Your IDE (Claude Code, Cursor) | Separate dashboard |
Target audience | Developers building sites | Marketers tracking AI rank |
Data source | Your site + Google Search Console | Claude AI responses |
Keywords: claude seo checker, mcp seo server, seo tools for claude code, cursor seo tools, ai seo checker, claude code seo
Bring Google Search Console data, SEO insights, and AI-powered recommendations directly into your editor. No context switching, no delays.
Why Rampify?
Real-time SEO intelligence in your editor (Cursor, Claude Code)
Google Search Console integration - See clicks, impressions, rankings
Content strategy insights - Discover what to write next based on real search data
AI-powered recommendations - Fix issues with one command
Pre-deployment checks - Catch SEO issues before they go live
Zero context switching - Stay in your workflow
Installation
Prerequisites
Node.js 18 or higher
Rampify account (free to start)
Install via npm
npm install -g @rampify/mcp-serverThe global installation makes the rampify-mcp command available system-wide.
Usage
Get Your API Key
Before configuring the MCP server, get your API key:
Sign up for Rampify (free to start)
Go to your Rampify dashboard
Navigate to Settings → API Keys
Click "Generate New Key"
Copy the key (starts with
sk_live_...)Use it in the configuration below
Quick Setup for a Project (Claude CLI)
Recommended: Configure MCP server per-project so each project knows its domain:
cd /path/to/your/project
claude mcp add -s local -t stdio \
--env BACKEND_API_URL=https://www.rampify.dev \
--env API_KEY=sk_live_your_api_key_here \
--env SEO_CLIENT_DOMAIN=your-domain.com \
rampify -- npx -y @rampify/mcp-server
# Reload your IDE windowNow you can use MCP tools without specifying domain:
get_page_seo- Automatically uses your project's domainget_issues- Automatically uses your project's domaincrawl_site- Automatically uses your project's domain
Global Setup (Claude CLI)
For global access across all projects (must specify domain in each request):
claude mcp add --scope user rampify npx \
-y @rampify/mcp-server \
--env BACKEND_API_URL=https://www.rampify.dev \
--env API_KEY=sk_live_your_api_key_here
# Reload your IDE windowManual Configuration (Cursor)
Add to your Cursor settings UI or ~/.cursor/config.json:
{
"mcpServers": {
"rampify": {
"command": "npx",
"args": [
"-y",
"@rampify/mcp-server"
],
"env": {
// Always use production API
"BACKEND_API_URL": "https://www.rampify.dev",
// Get your API key from https://www.rampify.dev/settings/api-keys
"API_KEY": "sk_live_your_api_key_here",
// Optional: Set default domain for this project
"SEO_CLIENT_DOMAIN": "your-domain.com"
}
}
}
}Manual Configuration (Claude Code)
Add to your Claude Code MCP settings:
{
"mcpServers": {
"rampify": {
"command": "npx",
"args": [
"-y",
"@rampify/mcp-server"
],
"env": {
// Always use production API
"BACKEND_API_URL": "https://www.rampify.dev",
// Get your API key from https://www.rampify.dev/settings/api-keys
"API_KEY": "sk_live_your_api_key_here",
// Optional: Set default domain for this project
"SEO_CLIENT_DOMAIN": "your-domain.com"
}
}
}
}Configuration Options
Environment Variables
BACKEND_API_URL(required): Rampify API endpoint - always usehttps://www.rampify.devAPI_KEY(required): Your API key from Rampify dashboard (starts withsk_live_...)SEO_CLIENT_DOMAIN(optional): Default domain for this project (e.g.,yoursite.com)CACHE_TTL(optional): Cache duration in seconds (default: 3600)LOG_LEVEL(optional):debug,info,warn, orerror(default:info)
How to Use Tools
Discovering Available Tools
Ask Claude directly:
"What SEO tools are available?"
"What can you do for SEO?"
"List all SEO intelligence tools"Claude will show you all available tools with descriptions.
Natural Language vs Direct Calls
Recommended: Use natural language (Claude will pick the right tool)
"What SEO issues does my site have?" → Calls get_issues
"Check this page's SEO" → Calls get_page_seo
"Crawl my site" → Calls crawl_siteAlternative: Call tools directly (if you know the exact name)
get_issues({ domain: "example.com" })
get_page_seo({ domain: "example.com", url_path: "/blog/post" })
crawl_site({ domain: "example.com" })Common Workflows
After Deployment:
1. "Crawl my site" (refresh data)
2. "Show me the issues" (review problems)
3. "Check this page's SEO" (verify specific pages)Before Deployment:
1. "Check SEO of localhost:3000/new-page" (test locally)
2. Fix issues in editor
3. "Re-check SEO" (verify fixes)
4. Deploy when clean!Regular Monitoring:
1. "What's my site's health score?"
2. "Show critical issues only"
3. Fix high-priority items
4. "Crawl my site" (refresh)Content Planning:
1. "What should I write next?" (get GSC insights)
2. Review top performing pages and queries
3. Check query opportunities (CTR, rankings, gaps)
4. Create content targeting recommended topicsAvailable Tools
Quick Reference
Tool | Purpose | When to Use |
| Get SEO data for a specific page | Analyzing individual pages, checking performance |
| Get all SEO issues with health score | Site-wide audits, finding problems |
| Get GSC performance data with content recommendations | Discovering what to write next, finding ranking opportunities |
| Generate optimized meta tags | Fixing title/description issues, improving CTR |
| Auto-generate structured data | Adding schema.org JSON-LD to pages |
| Trigger fresh crawl | After deployments, to refresh data |
1. get_page_seo
Get comprehensive SEO data and insights for a specific page. Works with both production sites AND local dev servers!
Parameters:
domain(optional): Site domain (e.g., "example.com" or "localhost:3000"). UsesSEO_CLIENT_DOMAINenv var if not provided.url_path(optional): Page URL path (e.g., "/blog/post")file_path(optional): Local file path (will be resolved to URL)content(optional): Current file content
Examples:
Production Site:
Ask Claude: "What's the SEO status of this page?" (while editing a file)
# Uses SEO_CLIENT_DOMAIN from env var
Or explicitly:
get_page_seo({ domain: "example.com", url_path: "/blog/post" })Local Development Server:
Ask Claude: "Audit the local version of this page"
get_page_seo({ domain: "localhost:3000", url_path: "/blog/new-post" })
# Or set default to local:
SEO_CLIENT_DOMAIN=localhost:3000
# Now all queries default to local dev serverResponse includes:
Source indicator:
production_database,local_dev_server, ordirect_contentFetched from: Exact URL that was analyzed
Performance metrics (clicks, impressions, position, CTR) - only for production
Top keywords ranking for this page - only for production
Detected SEO issues with fixes - works for both local and production
Quick win opportunities
AI summary and recommendations
Local Development Workflow
Test pages BEFORE deployment:
Start your dev server:
npm run dev # Usually runs on localhost:3000Query local pages:
Ask Claude: "Check SEO of localhost:3000/blog/draft-post"Fix issues in your editor, then re-check:
Ask Claude: "Re-check SEO for this page on localhost"Deploy when clean!
What gets analyzed locally:
Title tags
Meta descriptions
Heading structure (H1, H2, H3)
Images and alt text
Schema.org structured data
Internal/external links
Search performance (not available for local - GSC data only exists for production)
Response format:
{
// Indicates data source: local_dev_server, production_database, or direct_content
"source": "local_dev_server",
// Exact URL that was analyzed
"fetched_from": "http://localhost:3000/blog/new-post",
"url": "http://localhost:3000/blog/new-post",
// Array of detected issues with severity and recommendations
"issues": [...],
// AI-generated summary and recommendations
"ai_summary": "**Local Development Analysis**..."
}2. get_issues
Get SEO issues for entire site with health score. Returns a comprehensive report of all detected problems.
Parameters:
domain(optional): Site domain (usesSEO_CLIENT_DOMAINif not provided)filters(optional):severity: Array of severity levels to include (['critical', 'warning', 'info'])issue_types: Array of specific issue typeslimit: Max issues to return (1-100, default: 50)
Examples:
Ask Claude: "What SEO issues does my site have?"
# Uses SEO_CLIENT_DOMAIN from env var
Ask Claude: "Show me only critical SEO issues"
# AI will filter by severity: critical
Ask Claude: "Check SEO issues for example.com"
get_issues({ domain: "example.com" })Response includes:
Health score (0-100) and grade (A-F)
Issue summary by severity (critical, warning, info)
Detailed list of issues with fix recommendations
Recommended actions prioritized by impact
Use cases:
Site-wide SEO audits
Finding all problems at once
Tracking improvements over time
Prioritizing fixes by severity
3. get_gsc_insights (NEW)
Get Google Search Console performance data with AI-powered content recommendations. Discover what to write next based on real search data.
Parameters:
domain(optional): Site domain (usesSEO_CLIENT_DOMAINif not provided)period(optional): Time period for analysis -7d,28d, or90d(default:28d)include_recommendations(optional): Include AI-powered content recommendations (default:true)
Examples:
Ask Claude: "What should I write next?"
# Uses SEO_CLIENT_DOMAIN, analyzes 28-day period
Ask Claude: "Show me my top performing pages from last week"
get_gsc_insights({ period: "7d" })
Ask Claude: "What queries am I ranking for?"
get_gsc_insights({ domain: "example.com", period: "28d" })What it provides:
1. Performance Summary
Total clicks, impressions, average position, CTR
Compare performance across time periods
2. Top Performing Pages
Top 20 pages by clicks
Each with performance metrics and top queries
See what content resonates with your audience
3. Query Opportunities (4 types automatically detected)
Improve CTR: High impressions (100+) but low CTR (<2%) → Optimize meta tags
Improve Ranking: Position 6-20 → Push to page 1 with content improvements
Keyword Cannibalization: Multiple pages competing for same query → Consolidate content
Keyword Gap: High position (<5) but low volume → Expand content to target related queries
4. AI-Powered Content Recommendations
High-priority topics based on search data
Target queries for each recommendation
Prioritized by potential impact (high/medium/low)
5. Query Clustering
Groups related queries into topic themes
Identifies topic authority opportunities
Suggests comprehensive content pieces
Response includes:
{
"period": {
"start": "2025-10-27",
"end": "2025-11-24",
"days": 28
},
"summary": {
// Overall performance metrics for the time period
"total_clicks": 1247,
"total_impressions": 45382,
"avg_position": 12.3,
"avg_ctr": 0.027
},
"top_pages": [
{
// Top performing page with its metrics
"url": "/blog/context-driven-development",
"clicks": 324,
"impressions": 8920,
"avg_position": 3.2,
"ctr": 0.036,
"top_queries": [
{
// What query this page ranks for
"query": "context driven development",
"clicks": 156,
"position": 1.2
}
]
}
],
"opportunities": [
{
// Query opportunity with actionable recommendation
"query": "seo tools for developers",
"impressions": 3450,
"clicks": 12,
"position": 5.2,
"ctr": 0.003,
// Type: improve_ctr, improve_ranking, cannibalization, or keyword_gap
"opportunity_type": ["improve_ctr"],
"recommendation": "Improve CTR for 'seo tools for developers' - getting 3,450 impressions but only 12 clicks (0.3% CTR). Optimize meta title/description."
}
],
"content_recommendations": [
{
// AI-powered content suggestions based on real data
"title": "Optimize meta tags for high-impression queries",
"description": "You're appearing in search results but users aren't clicking...",
// Priority: high, medium, or low
"priority": "high",
// What data this is based on
"based_on": "high_impression_low_ctr",
// Target queries for this recommendation
"queries": ["seo tools for developers", "nextjs seo best practices"]
}
],
"meta": {
// Additional context about the data
"total_queries": 247,
"total_pages_with_data": 18,
"data_freshness": "GSC data has 2-3 days delay"
}
}Use cases:
Content Strategy:
User: "What should I write next?"
→ Get top 3 content recommendations with target queries
→ See which topics have proven search interest
→ Discover keyword gaps to expand existing contentPerformance Optimization:
User: "Which pages should I optimize?"
→ Find high-impression, low-CTR pages
→ Get specific meta tag improvement suggestions
→ See pages stuck on page 2 (quick wins)Keyword Research:
User: "What queries am I ranking for?"
→ See all queries with impressions/clicks data
→ Identify cannibalization issues
→ Find related queries to expand contentTopic Authority:
User: "What topics should I create comprehensive guides on?"
→ Get query clusters (related searches)
→ See opportunities for consolidating authority
→ Discover emerging topic trendsWhen to use:
Weekly content planning sessions
Quarterly content strategy reviews
After publishing new content (check performance)
When looking for low-hanging fruit (page 2 rankings)
Before creating new content (avoid cannibalization)
Requirements:
Google Search Console must be connected (connect in Rampify dashboard)
Site must have some search traffic (impressions)
GSC data synced (happens automatically weekly, or trigger manually)
Pro tips:
Start with 28-day period for balanced view (not too recent, not too old)
Use 7-day period to track recent changes
Use 90-day period for seasonal trends
Combine with
generate_metato optimize high-opportunity pagesRun after GSC sync completes for latest data
4. crawl_site
Trigger a fresh site crawl and analysis. This is an active operation that fetches and analyzes all pages.
Parameters:
domain(optional): Site domain (usesSEO_CLIENT_DOMAINif not provided)
Examples:
Ask Claude: "Crawl my site after deploying changes"
# Uses SEO_CLIENT_DOMAIN from env var
Ask Claude: "Analyze example.com"
crawl_site({ domain: "example.com" })What it does:
Discovers all URLs (via sitemap or navigation crawl)
Checks each URL (status, speed, SEO elements)
Detects issues (missing tags, errors, broken links)
Updates database with current state
Automatically clears cache so next
get_issuesorget_page_seoshows fresh data
Response includes:
Total URLs found
URLs checked
Issues detected
Crawl duration
Crawl method (sitemap vs navigation)
When to use:
After deploying code changes
After fixing SEO issues
Before running
get_issuesto ensure fresh dataWeekly/monthly for monitoring
Note: This is the only tool that actively crawls your site. get_issues and get_page_seo just fetch existing data.
5. generate_schema
Auto-generate structured data (schema.org JSON-LD) for any page. Detects page type and generates appropriate schema with validation.
Parameters:
domain(optional): Site domain (usesSEO_CLIENT_DOMAINif not provided)url_path(required): Page URL path (e.g., "/blog/post")schema_type(optional): Specific schema type or "auto" to detect (default: "auto")
Supported schema types:
Article/BlogPosting- Blog posts, articles, newsProduct- Product pages, e-commerceOrganization- About pages, company infoFAQPage- FAQ pages with Q&ABreadcrumbList- Auto-added for navigation
Examples:
Ask Claude: "Generate schema for /blog/indexnow-faster-indexing"
# Auto-detects Article schema
Ask Claude: "Generate Product schema for /products/widget"
generate_schema({ url_path: "/products/widget", schema_type: "Product" })
Ask Claude: "Add structured data to this page"
# If editing a file, Claude will detect the URL and generate schemaWhat it does:
Fetches page HTML (local or production)
Analyzes content (title, description, author, date, images)
Detects page type from URL patterns and content
Generates appropriate JSON-LD schema
Validates schema and warns about placeholders
Returns ready-to-use code snippets
Response includes:
Detected page type
List of recommended schemas
Generated JSON-LD for each schema
Validation results with warnings
Code snippets (Next.js or HTML)
Implementation instructions
Use cases:
Fixing "missing schema" warnings from
get_issuesAdding rich snippets for better search visibility
Enabling Google Discover eligibility (requires Article schema)
Improving CTR with enhanced search results
Example output:
{
// Automatically detected from URL patterns and content
"detected_page_type": "Article",
// What schemas make sense for this page type
"recommended_schemas": ["Article", "BreadcrumbList"],
"schemas": [
{
"type": "Article",
// Ready-to-use JSON-LD structured data
"json_ld": { ... },
"validation": {
"valid": false,
// Things to fix before deploying
"warnings": ["Replace placeholder values with actual data"]
}
}
],
"implementation": {
// Framework-specific instructions
"where_to_add": "In your page component's metadata",
"code_snippet": "// Next.js code here",
"instructions": "1. Add code to page.tsx..."
}
}Pro tip: After generating schema, test it with Google Rich Results Test
6. generate_meta (Enhanced with Client Profile Context)
Generate optimized meta tags (title, description, Open Graph tags) for a page. Now uses your client profile to generate highly personalized, business-aware meta tags that align with your target audience, brand voice, and competitive positioning.
Parameters:
domain(optional): Site domain (usesSEO_CLIENT_DOMAINif not provided)url_path(required): Page URL path (e.g., "/blog" or "/blog/post")include_og_tags(optional): Include Open Graph tags for social sharing (default: true)framework(optional): Framework format for code snippet -nextjs,html,astro, orremix(default: "nextjs")
NEW: Client Profile Integration
The tool automatically fetches your client profile and uses context like:
Target keywords → Ensures they appear in title/description
Target audience → Adjusts tone and technical depth
Brand voice → Matches your preferred tone (conversational, technical, formal)
Differentiators → Highlights unique selling points for better CTR
Primary CTA → Ends description with appropriate call-to-action
Examples:
Ask Claude: "Generate better meta tags for /blog"
# Auto-analyzes content and generates optimized title/description
Ask Claude: "Fix the title too short issue on /blog/post"
generate_meta({ url_path: "/blog/post" })
Ask Claude: "Create meta tags without OG tags for /about"
generate_meta({ url_path: "/about", include_og_tags: false })
Ask Claude: "Generate HTML meta tags for /products/widget"
generate_meta({ url_path: "/products/widget", framework: "html" })What it does:
Fetches page HTML (local or production)
Analyzes current meta tags (title, description)
Extracts content structure (headings, topics, word count)
Detects page type (homepage, blog_post, blog_index, product, about)
Identifies key topics from content
Returns analysis for AI to generate optimized meta tags
Provides framework-specific code snippets
Response includes:
Page analysis:
Current title and description
Main heading and all headings
Word count and content preview
Detected page type
Key topics extracted from content
Images for OG tags
Current issues:
Title too short/long
Meta description too short/long
Missing meta tags
AI-generated meta tags:
Optimized title (50-60 characters)
Compelling meta description (150-160 characters)
Open Graph tags (if requested)
Twitter Card tags (if requested)
Ready-to-use code for your framework
Use cases:
Fixing "title too short" or "description too short" warnings
Improving click-through rate (CTR) from search results
Optimizing social media sharing (OG tags)
Aligning meta tags with actual page content
A/B testing different meta descriptions
Real-World Impact: Before vs. After
Without Profile Context (Generic):
Title: Project Management Software | Company
Description: Manage your projects efficiently with our powerful collaboration platform. Streamline workflows and boost productivity.With Profile Context (Target audience: developers, Differentiators: "real-time collaboration, 50% faster"):
Title: Real-Time Dev Collaboration | 50% Faster | Company
Description: Built for developers: API-first project management with real-time sync. Ship 50% faster than competitors. Try free for 30 days →Profile Warnings System:
If your profile is incomplete, you'll get helpful warnings:
{
"profile_warnings": [
// WARNING: Target audience not set - recommendations will be generic
"Target audience not set - recommendations will be generic. Add this in your business profile for better results.",
// WARNING: No target keywords set - can't optimize for ranking goals
"No target keywords set - can't optimize for ranking goals. Add keywords in your business profile.",
// TIP: Add your differentiators to make meta descriptions more compelling
"Add your differentiators in the business profile to make meta descriptions more compelling.",
// TIP: Set your brand voice to ensure consistent tone
"Set your brand voice in the business profile to ensure consistent tone."
]
}Or if no profile exists at all:
{
"profile_warnings": [
// No client profile found - recommendations will be generic
"No client profile found. Fill out your profile at /clients/{id}/profile for personalized recommendations."
]
}Example workflow:
1. User: "What SEO issues does my site have?"
→ get_issues shows "Title too short on /blog"
2. User: "Fix the title issue on /blog"
→ generate_meta analyzes /blog page
→ Fetches client profile for context
→ Shows warnings if profile incomplete
→ Claude generates optimized, personalized title
→ Returns Next.js code snippet to add to page
3. User copies code to app/blog/page.tsx
4. User: "Re-check SEO for /blog"
→ get_page_seo confirms title is now optimalSetting Up Your Profile:
To get the most value from generate_meta:
Visit
/clients/{your-client-id}/profilein the dashboardFill out key fields:
Target Audience (e.g., "developers and technical founders")
Target Keywords (e.g., "real-time collaboration, dev tools")
Brand Voice (e.g., "technical but approachable")
Your Differentiators (e.g., "50% faster than competitors")
Primary CTA (e.g., "try_free" or "request_demo")
Use the tool - Profile context is automatically applied
See better results - Meta tags now match your business context
SEO Best Practices (Built-in):
Title length: 50-60 characters (includes brand name if space allows)
Description length: 150-160 characters (compelling call-to-action)
Keyword placement: Primary keywords near the start
Uniqueness: Each page gets unique meta tags based on its content
Accuracy: Meta tags reflect actual page content (no clickbait)
Framework-specific output:
Next.js (App Router):
export const metadata = {
title: "Your Optimized Title | Brand",
description: "Your compelling meta description...",
openGraph: {
title: "Your Optimized Title",
description: "Your compelling meta description...",
images: [{ url: "/path/to/image.jpg" }],
},
};HTML:
<title>Your Optimized Title | Brand</title>
<meta name="description" content="Your compelling meta description...">
<meta property="og:title" content="Your Optimized Title">
<meta property="og:description" content="Your compelling meta description...">Pro tips:
Run after fixing content to ensure meta tags match
Test social sharing with Facebook Sharing Debugger
Monitor CTR improvements in Google Search Console
Update meta tags when page content significantly changes
Development
Watch Mode
npm run watchThis will recompile TypeScript on every change.
Testing Locally
# In one terminal, start your backend
cd /path/to/rampify
npm run dev
# In another terminal, build and run MCP server
cd packages/mcp-server
npm run devThe MCP server will connect to your local backend at http://localhost:3000.
Debug Logging
Set LOG_LEVEL=debug in your .env file to see detailed logs:
LOG_LEVEL=debug npm run devArchitecture
MCP Server (packages/mcp-server)
├── src/
│ ├── index.ts # MCP server entry point
│ ├── config.ts # Configuration loader
│ ├── tools/ # MCP tool implementations
│ │ ├── get-seo-context.ts
│ │ ├── scan-site.ts
│ │ └── index.ts # Tool registry
│ ├── services/ # Business logic
│ │ ├── api-client.ts # Backend API client
│ │ ├── cache.ts # Caching layer
│ │ └── url-resolver.ts # File path → URL mapping
│ ├── utils/
│ │ └── logger.ts # Logging utility
│ └── types/ # TypeScript types
│ ├── seo.ts
│ └── api.ts
└── build/ # Compiled JavaScript (generated)Caching
The MCP server caches responses for 1 hour (configurable via CACHE_TTL) to improve performance.
Cache is cleared automatically when:
Entries expire (TTL reached)
Server restarts
You manually clear (not yet implemented)
Troubleshooting
"No client found for domain"
Solution: Add the site to your dashboard first at http://localhost:3000
"Backend API connection failed"
Checklist:
Is the backend running? (
npm run devin root directory)Is
BACKEND_API_URLcorrect in.env?Check logs with
LOG_LEVEL=debug
"MCP server not appearing in Cursor"
Checklist:
Did you build the server? (
npm run build)Is the path absolute in Cursor config?
Restart Cursor after changing config
Check Cursor logs (Help → Toggle Developer Tools → Console)
Empty or missing data
Common causes:
Site not analyzed yet (run analysis in dashboard first)
GSC not connected (connect in dashboard settings)
No URLs in database (trigger site analysis)
"Could not connect to local dev server"
Solution:
Make sure your dev server is running (
npm run dev)Verify the port (default is 3000, but yours might be different)
Use full domain with port:
localhost:3000(not justlocalhost)Check dev server logs for CORS or other errors
Example error:
Could not connect to local dev server at http://localhost:3000/blog/post.
Make sure your dev server is running (e.g., npm run dev).Local vs Production Confusion
How to tell which source you're using:
Every response includes explicit source and fetched_from fields:
{
// Source: local_dev_server, production_database, or direct_content
"source": "local_dev_server",
// Exact URL that was fetched and analyzed
"fetched_from": "http://localhost:3000/page",
// ... rest of response
}Pro tip: Set SEO_CLIENT_DOMAIN per project to avoid specifying domain every time:
For local dev:
SEO_CLIENT_DOMAIN=localhost:3000For production:
SEO_CLIENT_DOMAIN=yoursite.com
Roadmap
Phase 1: Core Tools (Complete)
DONE:
get_page_seo- Get SEO data for a specific pageDONE:
get_issues- Get all site issues with health scoreDONE:
get_gsc_insights- Get GSC performance data with content recommendations (NEW)DONE:
generate_meta- AI-powered title and meta description generationDONE:
generate_schema- Auto-generate structured data (Article, Product, etc.)DONE:
crawl_site- Trigger fresh site crawl
Phase 2: Workflow & Optimization Tools (Planned)
PLANNED:
suggest_internal_links- Internal linking recommendationsPLANNED:
check_before_deploy- Pre-deployment SEO validationPLANNED:
optimize_blog_post- Deep optimization for blog contentPLANNED:
optimize_landing_page- Conversion-focused SEO
Future (Phase 4+)
Bulk operations across multiple pages
Historical trend analysis
Competitive monitoring
Advanced AI insights and recommendations
Support
Need help?
Documentation - Complete guides and tutorials
GitHub Issues - Report bugs or request features
Rampify Settings - Manage your sites and API keys
Learn More
What is Rampify? - Product overview
MCP Server Guide - Detailed documentation
Blog - SEO tips and product updates
License
MIT
Available Tools
19 toolscrawl_siteAInspect
Trigger a fresh site crawl and analysis. Use this after deploying changes to refresh SEO data. Crawls the entire site, checks all URLs, detects issues, and updates the database with current SEO status.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool performs a 'fresh crawl' that 'updates the database', implying mutation behavior. However, it doesn't mention permissions needed, rate limits, whether the operation is asynchronous, or what happens if a crawl is already in progress.
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 efficiently structured in two sentences that each earn their place. The first sentence states the core action, the second explains usage context and scope. No wasted words or redundancy.
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 mutation tool with no annotations and no output schema, the description provides adequate but incomplete context. It explains what the tool does and when to use it, but lacks details about the mutation's impact, response format, or error conditions that would be helpful for an agent.
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 schema already documents the single parameter. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score of 3 for high schema coverage.
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 purpose with specific verbs ('trigger', 'crawl', 'analyze') and resources ('site', 'SEO data'). It distinguishes from siblings by focusing on site-wide crawling and analysis rather than specific features or insights retrieval.
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 clear context for when to use the tool ('after deploying changes to refresh SEO data'), but doesn't explicitly state when not to use it or name specific alternatives among the sibling tools. The guidance is helpful but lacks exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_content_specAInspect
Create a page-type feature spec linked to a keyword cluster. The spec carries the content strategy (outline, goals, voice, inspiration); keyword data is resolved dynamically from the cluster at read time.
Use this after creating keyword clusters to generate actionable content briefs. Each cluster maps to one page — the spec tells an AI agent exactly what to build. The spec auto-creates tasks: write content, optimize for keywords, add schema/meta.
The response includes the spec_id. Use get_feature_spec with that ID to retrieve the full spec with live keyword data, volumes, and GSC performance.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain. Uses SEO_CLIENT_DOMAIN if not provided. | |
| project_id | No | Project UUID. | |
| cluster_id | Yes | The keyword cluster ID to create a content spec for. | |
| title | No | Custom spec title. Auto-generated from cluster if omitted. | |
| description | No | Content strategy overview — what this page should accomplish. | |
| outline | No | Proposed content outline — sections, key points, structure. | |
| goals | No | Goals — traffic targets, conversion intent, ranking targets. | |
| inspiration | No | Reference links — content to model or differentiate from. | |
| voice_notes | No | Voice and tone guidance. | |
| priority | No | Spec priority. Defaults to cluster priority. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behaviors: the spec auto-creates tasks (write, optimize, schema/meta), keyword data is resolved dynamically, and the response includes a spec_id. It does not mention if it is destructive or any other side effects, but as a creation tool, it is expected to be non-idempotent. The level of disclosure is good.
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 concise with four sentences. It is front-loaded with the core purpose and efficiently provides usage context, key behaviors, and follow-up steps. Every sentence adds value, 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?
The description covers purpose, usage, key behaviors, and follow-up. It mentions that the response includes a spec_id and recommends using get_feature_spec to retrieve full data. However, it does not mention error cases or prerequisites like the cluster must exist. This is a minor gap given the tool's complexity, so score 4.
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 input schema has 100% description coverage, so baseline is 3. The description adds extra meaning: it explains that 'domain' defaults to SEO_CLIENT_DOMAIN, 'title' is auto-generated from cluster if omitted, and 'priority' defaults to cluster priority. This enriches the semantics beyond the schema definitions.
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 purpose: creating a page-type feature spec linked to a keyword cluster. It uses the verb 'create' and specifies the resource 'content_spec'. It distinguishes from siblings by explaining its role in content strategy workflow, especially compared to tools like 'get_feature_spec' which retrieves data.
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 clear usage context: 'Use this after creating keyword clusters' and explains that each cluster maps to one page. It also recommends following up with 'get_feature_spec'. While it doesn't explicitly state when not to use it, the guidance is sufficient for an agent to understand the intended workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_feature_specAInspect
Create and save a feature specification to Rampify.
IMPORTANT: Before calling this tool, YOU (Claude) must generate the complete structured spec from the user's description and your codebase context. Do not pass raw natural language — populate all fields:
Infer affected_files from open files and the codebase structure
Infer tech_stack from package.json and imports
Generate 3-5 acceptance criteria covering happy path, edge cases, and error handling
Break implementation into 3-8 concrete tasks with file references
Write ai_context_summary to help future AI agents understand the approach
Set next_action to the single most important first step
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when no domain is configured. Accepts client ID (from /clients/[id]/ in the dashboard URL) or site UUID. Uses RAMPIFY_PROJECT_ID env var if not provided. | |
| title | Yes | Short, imperative title (e.g., "Add dark mode toggle") | |
| description | No | Full description of the feature, its purpose and user value | |
| feature_type | No | Type of feature (default: new_feature) | |
| priority | No | Priority level (default: normal) | |
| ai_context_summary | No | 2-3 sentence summary of architecture decisions for future AI agents | |
| next_action | No | The single next concrete step to start implementation | |
| tech_stack | No | Technologies involved (e.g., ["Next.js", "Tailwind CSS"]) | |
| affected_files | No | Files to create or modify (relative paths) | |
| tags | No | Categorization tags | |
| criteria | No | Acceptance criteria | |
| tasks | No | Ordered implementation tasks |
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 clearly indicates this is a write operation ('Create and save'), specifies required pre-processing ('generate the complete structured spec'), and outlines the agent's responsibilities. However, it doesn't mention authentication needs, rate limits, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and bullet points, but could be more concise. The 'IMPORTANT' section contains detailed instructions that earn their place, though some redundancy exists between the bullet points and schema descriptions. Overall efficient but slightly verbose.
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 complex 13-parameter tool with no annotations and no output schema, the description provides substantial context about the agent's responsibilities and the expected input structure. It compensates well for the lack of output schema by explaining what constitutes valid input. However, it doesn't address error cases or system constraints.
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 schema already documents all 13 parameters thoroughly. The description adds minimal parameter-specific guidance beyond the schema, mainly emphasizing that parameters like 'affected_files' and 'tech_stack' should be inferred from context rather than passed as raw natural language.
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 purpose with a specific verb ('Create and save') and resource ('feature specification to Rampify'). It distinguishes from sibling tools like 'get_feature_spec' (read) and 'update_feature_spec' (modify existing) by emphasizing creation of new specifications.
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 guidance on when and how to use this tool versus alternatives. It specifies prerequisites ('Before calling this tool, YOU must generate the complete structured spec'), distinguishes from passing raw natural language, and implicitly contrasts with 'get_feature_spec' for retrieval and 'update_feature_spec' for modifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_keyword_clusterAInspect
Create a strategic keyword cluster with its keywords in a single call. Each cluster groups related keywords sharing search intent and serves as a content brief with: strategic rationale, competitive landscape, target content type, and keyword assignments.
Always include the keywords array — keywords that don't exist yet are auto-created as target keywords. Returns keywords_assigned and keywords_created counts to confirm what was added.
Use this during keyword research conversations to organize findings into actionable clusters. Each cluster maps to one page and guides content creation.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain. Uses SEO_CLIENT_DOMAIN if not provided. | |
| project_id | No | Project UUID. | |
| name | Yes | Cluster name (e.g., "Pain Point / Problem-Aware") | |
| description | No | Strategic rationale — why target this cluster? | |
| priority | No | Cluster priority | |
| competitive_landscape | No | What currently ranks, competitors, positioning gaps | |
| notes | No | Free-form strategic notes | |
| target_content_type | No | Content type: blog_post, landing_page, guide, authority_page, tool_page, feature_page | |
| target_url | No | Proposed SEO-optimized URL path for this content (e.g., "/blog/why-ai-websites-look-the-same"). Always propose a URL based on the primary keyword and content type, even if the page does not exist yet. | |
| keywords | No | Keywords to assign. Strings default to secondary. Use {keyword, tier} for per-keyword control. tertiary = tracking/long-tail (no placement audit requirements). | |
| primary_keyword | No | The head term for this cluster — set as primary tier. All other keywords default to secondary. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses that keywords not yet existing are auto-created as target keywords, and that the tool returns keywords_assigned and keywords_created counts. It does not cover all edge cases (e.g., error handling, idempotency), but the core behavioral traits are clearly stated.
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 concise paragraphs with no wasted words. The first sentence immediately states the tool's action, and critical usage tips (keywords array, return counts) are front-loaded. Every sentence serves a purpose.
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 complexity (11 parameters, 1 required) and no output schema, the description sufficiently covers the main purpose, auto-creation behavior, and return values. It lacks details on error handling or idempotency but is reasonably complete for typical use.
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 parameters are well-documented in the schema. The description adds context about auto-creation of keywords and return counts but does not significantly enhance parameter-level understanding beyond what the schema already provides.
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 that the tool creates a strategic keyword cluster with keywords in a single call, grouping related keywords by search intent and serving as a content brief. This distinguishes it from sibling tools like suggest_keywords (suggestion) or get_keyword_clusters (retrieval).
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 advises using this tool during keyword research conversations to organize findings into actionable clusters, and explicitly instructs to always include the keywords array. It provides context but lacks explicit exclusions or alternatives when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_metaCInspect
Generate optimized meta tags (title, description, OG tags) for a page. Analyzes page content and provides recommendations for SEO-optimized meta tags based on actual content, headings, and topics.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| url_path | Yes | Page URL path (e.g., "/blog" or "/blog/post") | |
| include_og_tags | No | Include Open Graph tags for social sharing (default: true) | |
| framework | No | Framework format for code snippet (default: nextjs) |
TDQS
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 states the tool 'analyzes page content' and 'provides recommendations,' implying a read-only analysis function, but doesn't clarify if it modifies data, requires authentication, has rate limits, or what the output format looks like. For a tool with no annotations, this leaves significant behavioral gaps.
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 concise and front-loaded, stating the core purpose in the first sentence. The second sentence elaborates on the analysis process without redundancy. Both sentences add value, making it efficient with minimal 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?
Given the complexity (SEO analysis tool with 4 parameters) and the absence of annotations and output schema, the description is moderately complete. It covers the what and how at a high level but lacks details on behavioral traits, output format, and differentiation from siblings. It's adequate as a minimum viable description but has clear gaps for effective agent use.
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 input schema has 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain how 'domain' and 'url_path' interact or provide examples of meta tag outputs). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.
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 purpose: 'Generate optimized meta tags (title, description, OG tags) for a page.' It specifies the resource (meta tags) and the action (generate/optimize), and mentions SEO optimization. However, it doesn't explicitly differentiate from sibling tools like 'get_page_seo' or 'generate_schema', which might have overlapping SEO-related functions.
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 minimal usage guidance. It mentions analyzing page content for recommendations, but doesn't specify when to use this tool versus alternatives like 'get_page_seo' (which might retrieve existing SEO data) or 'generate_schema' (which might handle structured data). No explicit when-not-to-use scenarios or prerequisites are included.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_schemaAInspect
Auto-generate structured data (schema.org JSON-LD) for any page. Detects page type (Article, Product, FAQ, etc.) and generates appropriate schema with validation. Returns ready-to-use code snippets.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| url_path | Yes | Page URL path (e.g., "/blog/post") - REQUIRED | |
| schema_type | No | Schema type to generate. Use "auto" to detect automatically (default). |
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 mentions detection, generation, and validation but doesn't cover error handling, rate limits, authentication needs, or what happens with invalid inputs. The description is functional but lacks operational context needed for safe invocation.
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 efficiently structured in two sentences: first states the core functionality, second adds key features (detection, validation, output format). Every phrase adds value without repetition or fluff, making it easy to parse.
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 3 parameters with full schema coverage but no annotations and no output schema, the description adequately covers the 'what' but lacks depth on behavioral aspects. It mentions the return format ('ready-to-use code snippets') but doesn't describe output structure or error cases. For a generation tool with no safety annotations, more operational context would be beneficial.
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 schema already documents all three parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain interactions between domain and url_path or clarify schema_type selection logic). Baseline 3 is appropriate when 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 the tool's purpose with specific verbs ('Auto-generate structured data', 'Detects page type', 'generates appropriate schema') and resources ('schema.org JSON-LD', 'ready-to-use code snippets'). It distinguishes from siblings by focusing on schema generation rather than crawling, SEO insights, or feature specs.
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 context ('for any page', 'detects page type') but doesn't explicitly state when to use this tool versus alternatives like generate_meta or get_page_seo. It mentions automatic detection vs. manual specification but lacks guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commit_messageAInspect
Generate a conventional-commits-style message from spec/task context. No external AI call — derived from structured spec data already in the database.
Returns a ready-to-use commit message string with type(scope): subject, spec/task references, file list, and co-authorship attribution. Use this before committing to get a well-formatted message.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when no domain is configured. | |
| spec_id | Yes | UUID of the feature spec | |
| task_id | No | UUID of the specific task being completed (recommended for more precise messages) | |
| files_changed | No | List of files changed in this commit (for the message body) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait: 'No external AI call — derived from structured spec data already in the database.' It also describes the return format. This adds transparency beyond basic function.
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 paragraphs with no wasted words. The first sentence front-loads the core purpose. Every sentence adds value: what it does, how it works, what it returns, when to use.
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 no output schema, the description adequately explains the return value. It covers all 5 parameters (via schema) and provides usage context. Lack of annotations is compensated by transparent behavior description. Minor gap: no explicit mention of required permissions or side effects, but not critical for a read-only data processor.
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 value by explaining default behavior for 'domain' (env var fallback), recommending 'task_id' for precision, and clarifying the purpose of 'files_changed'. This exceeds mere schema repetition.
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 uses a specific verb ('Generate') and resource ('conventional-commits-style message'), clearly distinguishing the tool from all siblings which are SEO-related. The verb 'generate' accurately reflects the tool's function.
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 explicitly states 'Use this before committing to get a well-formatted message,' providing clear usage context. It does not explicitly state when not to use or list alternatives, but the purpose is sufficiently unique.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feature_specAInspect
Retrieve a feature specification from Rampify. Use this when starting work on a feature to understand what to build, which files to touch, and what the acceptance criteria are.
Two lookup modes:
spec_id: fetch a specific spec with full criteria and tasks (use this when you know the ID)
search: keyword search across titles and descriptions (returns a list; follow up with spec_id for full details)
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when the domain is not registered as a client. | |
| spec_id | No | UUID of the specific feature spec to retrieve. Returns full spec with criteria and tasks. | |
| search | No | Keyword to search across spec titles and descriptions. Returns a list of matching specs. | |
| include_criteria | No | Include acceptance criteria in the response (default: true). Only applies when using spec_id. | |
| include_tasks | No | Include implementation tasks in the response (default: true). Only applies when using spec_id. |
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 effectively describes the tool's dual-mode behavior (specific retrieval vs. search), return types (full spec vs. list), and when certain parameters apply (include_criteria/ include_tasks only with spec_id). However, it doesn't mention authentication requirements, rate limits, or error conditions.
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 perfectly structured: a clear purpose statement, followed by bullet-point style explanation of the two modes with practical guidance. Every sentence earns its place, and information is front-loaded with no wasted words.
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 6-parameter tool with no annotations and no output schema, the description does an excellent job covering the core functionality and usage patterns. It explains the dual-mode operation and parameter applicability clearly. The main gap is the lack of information about return format/structure, which would be helpful given the absence of an output schema.
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 significant value by explaining the two lookup modes (spec_id vs. search) and their implications, which clarifies the mutual exclusivity and purpose of these parameters beyond what the schema descriptions provide. However, it doesn't address domain/project_id usage scenarios.
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 verb ('Retrieve') and resource ('feature specification from Rampify'), and distinguishes it from siblings by specifying its unique purpose: understanding what to build, which files to touch, and acceptance criteria. It explicitly differentiates from tools like create_feature_spec and update_feature_spec by being a retrieval operation.
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 guidance on when to use this tool ('when starting work on a feature') and distinguishes between two lookup modes (spec_id vs. search). It also advises to 'follow up with spec_id for full details' when using search mode, offering clear usage alternatives within the tool itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gsc_insightsCInspect
Get Google Search Console performance insights with AI-powered content recommendations. Returns top performing pages, query opportunities (improve CTR, rankings, keyword gaps), and actionable recommendations for what content to write next.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| period | No | Time period for analysis (default: 28d) | |
| include_recommendations | No | Include AI-powered content recommendations (default: true) |
TDQS
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 mentions 'AI-powered content recommendations' and the types of insights returned, but doesn't cover critical aspects like authentication requirements, rate limits, data freshness, error handling, or whether it's a read-only operation. For a tool that likely involves external API calls and data processing, this is a significant gap.
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 efficiently structured in two sentences that clearly communicate the tool's function and outputs. It's front-loaded with the core purpose and avoids unnecessary verbiage. However, the second sentence could be slightly more concise by combining the listed return types.
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 complexity of SEO insights and AI recommendations, with no annotations and no output schema, the description is incomplete. It doesn't explain the format or structure of returned data, error conditions, or behavioral constraints. The agent would need to guess about the response format and operational characteristics.
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 schema already documents all three parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. It mentions 'AI-powered content recommendations' which relates to the 'include_recommendations' parameter, but this is already covered in the schema. Baseline 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 the tool's purpose: 'Get Google Search Console performance insights with AI-powered content recommendations.' It specifies the verb ('Get'), resource ('Google Search Console performance insights'), and scope ('with AI-powered content recommendations'). However, it doesn't explicitly differentiate from sibling tools like 'get_page_seo' or 'get_issues', which might also relate to SEO analysis.
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 no guidance on when to use this tool versus alternatives. It lists what the tool returns but doesn't mention prerequisites, context for usage, or comparisons to sibling tools like 'get_page_seo' or 'crawl_site'. This leaves the agent without clear direction on appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_issuesBInspect
Get SEO issues for entire site with health score. Returns health score (0-100), categorized issues by severity, and prioritized recommendations for fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Site domain (e.g., "example.com") | |
| filters | No |
TDQS
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 mentions the output includes a health score, categorized issues, and recommendations, but lacks details on permissions, rate limits, whether it's a read-only operation, or how the tool handles errors or large datasets. This is insufficient for a tool with no annotation coverage.
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 front-loaded and concise, consisting of a single sentence that efficiently conveys the core functionality and output. Every word earns its place without redundancy or unnecessary elaboration.
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 complexity (2 parameters, nested objects, no output schema, and no annotations), the description is partially complete. It outlines the output but lacks details on behavioral traits, parameter usage, and sibling differentiation. Without annotations or an output schema, more context is needed for full agent understanding.
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 50%, with the domain parameter well-documented but the filters object only partially described. The description adds no additional parameter semantics beyond what the schema provides, such as explaining the 'filters' object's purpose or default behaviors. With moderate schema coverage, the baseline score of 3 is appropriate as the description does not compensate for gaps.
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 purpose with specific verbs ('Get SEO issues for entire site') and resources ('site'), and distinguishes it from siblings by specifying it returns a health score, categorized issues, and recommendations, unlike tools like crawl_site or get_page_seo which focus on different aspects.
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 no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or compare it to siblings like get_page_seo (which might target individual pages) or get_gsc_insights (which could involve Google Search Console data), leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keyword_clustersAInspect
Retrieve keyword clusters with keywords, volume data, GSC performance, and audit status. Supports filtering by target_url (exact match), name (partial match), or cluster_id.
Use target_url to find the cluster for a specific page (e.g., target_url: "/" for the homepage cluster). Without filters, returns all clusters.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain. Uses SEO_CLIENT_DOMAIN if not provided. | |
| project_id | No | Project UUID. | |
| target_url | No | Filter by target URL path (e.g., "/" for homepage) | |
| name | No | Filter by cluster name (partial match) | |
| cluster_id | No | Filter by specific cluster ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the data returned (keywords, volume, GSC performance, audit status) and filtering behavior. No contradictions, but could mention 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences that efficiently convey purpose and filtering options without unnecessary words.
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?
Adequately complete for a retrieval tool with no output schema. Covers core behavior and filters, but lacks details on pagination or result limits.
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 covers all parameters with descriptions (100% coverage). The description adds value by explaining target_url as exact match and name as partial match, and noting domain default. Baseline 3, plus extra context.
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 it retrieves keyword clusters with specific data (keywords, volume, GSC performance, audit status) and supports various filters, distinguishing it from sibling tools like create_keyword_cluster or lookup_keywords.
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?
Provides clear guidance on using filters like target_url, name, cluster_id, and explains default behavior without filters (returns all clusters). Does not explicitly mention when not to use, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_page_seoBInspect
Get comprehensive SEO data and insights for a specific page. Returns performance metrics from Google Search Console, detected issues, optimization opportunities, and actionable recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Site domain (e.g., "example.com") | |
| url_path | No | Page URL path (e.g., "/blog/post") | |
| file_path | No | Local file path (will be resolved to URL) | |
| content | No | Current file content (for context) |
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 mentions the tool returns data from Google Search Console and other insights but doesn't specify permissions needed, rate limits, whether it's a read-only operation, or how it handles errors. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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 a single, well-structured sentence that efficiently conveys the tool's purpose and output. It's front-loaded with the core action and resource, with no wasted words, making it highly concise and effective.
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 complexity (SEO analysis with multiple data sources), no annotations, and no output schema, the description is moderately complete. It outlines the scope of returned data but lacks details on behavioral traits, error handling, or output structure, which are important for such a 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 schema already documents all 4 parameters. The description adds no additional meaning about parameters beyond implying they identify a page for SEO analysis. This meets the baseline of 3 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 the specific action ('Get comprehensive SEO data and insights') and resource ('for a specific page'), distinguishing it from siblings like 'get_gsc_insights' (which focuses only on Google Search Console) and 'get_issues' (which might be broader). It specifies the scope of data returned, making the purpose unambiguous.
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 no guidance on when to use this tool versus alternatives like 'get_gsc_insights' or 'get_issues', nor does it mention prerequisites or exclusions. It implies usage for SEO analysis but lacks explicit context for tool selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_contextBInspect
Get security analysis for a site (homepage scan only). Returns security score, detected issues (headers, SSL, exposed files, third-party scripts), and actionable remediation steps. PRIVATE BETA.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Site domain (e.g., "example.com") |
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 describes the return content ('security score, detected issues, and actionable remediation steps') and notes the 'PRIVATE BETA' status, which adds useful context about availability. However, it lacks details on error handling, rate limits, authentication needs, or performance characteristics, leaving gaps for a tool that performs analysis.
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 concise and front-loaded, starting with the core purpose and followed by return details and a beta note. It uses two sentences efficiently, with no wasted words. However, the 'PRIVATE BETA' note could be integrated more smoothly, and it slightly disrupts the flow.
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 tool with no annotations and no output schema, the description provides a good overview of purpose and returns, but it's incomplete. It lacks details on output structure, error cases, and behavioral traits like rate limits. Given the complexity of security analysis, more context would help the agent use it effectively, though the description meets a minimum viable level.
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 input schema has 100% description coverage, with the 'domain' parameter well-documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.
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 purpose: 'Get security analysis for a site (homepage scan only).' It specifies the verb ('Get'), resource ('security analysis'), and scope ('homepage scan only'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_issues' or 'crawl_site', which might also involve site analysis.
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 context by specifying 'homepage scan only' and mentioning it's a 'PRIVATE BETA,' which suggests limited availability. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_issues' or 'crawl_site,' nor does it mention any prerequisites or exclusions for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_commitAInspect
Link a git commit SHA to a feature spec and optionally a task. Creates full traceability: code -> commit -> task -> spec.
Deterministic workflow for AI agents:
Retrieve spec via get_feature_spec (spec_id is now in context)
Implement changes and commit code
Run
git rev-parse HEADto capture the exact SHARun
git remote get-url originand normalize SSH URLs to HTTPSCall this tool with the SHA, repo_url, and spec_id (and task_id if applicable)
The commit is recorded in the spec's related_commits array and commit_count is incremented. If task_id is provided, the commit is also linked to the task with a last_commit_at timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when no domain is configured. | |
| spec_id | Yes | UUID of the feature spec to link the commit to (required) | |
| task_id | No | UUID of the specific task to link the commit to. If provided, the commit is linked to both the task and its parent spec. | |
| commit_sha | Yes | Git commit SHA to link (from `git rev-parse HEAD` after committing) | |
| repo_url | No | Repository HTTPS URL (e.g., "https://github.com/owner/repo"). Derive from `git remote get-url origin` and normalize SSH to HTTPS. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully discloses side effects: the commit is recorded in the spec's related_commits array, commit_count incremented, and if task_id given, linked with last_commit_at. It also notes URL normalization from SSH to HTTPS.
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 somewhat long but well-structured with a clear opening, a numbered workflow, and detailed side effects. Each sentence adds useful information, though minor redundancy exists.
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 no output schema and 6 parameters, the description covers the process, parameter derivation, and behavioral effects. It could mention the return value but is otherwise complete and self-contained.
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% with adequate parameter descriptions. The tool description adds value by explaining how to obtain commit_sha and repo_url (steps 3-4) and clarifying the domain/project_id distinction, going beyond the schema.
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 that the tool links a git commit SHA to a feature spec and optionally a task, creating traceability. This is a specific verb+resource combination and is distinct from all sibling tools.
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 a deterministic 5-step workflow for AI agents, including prerequisites like retrieving the spec, committing code, and capturing the SHA. It explains when to use (after commit) and optional task linking, with no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_feature_specsAInspect
Browse and filter all feature specifications for a project. Returns an overview of specs with status, priority, and task progress.
Use this to answer questions like "what's in progress?", "what's planned?", or "show me all high-priority specs". For full spec details (criteria, tasks, affected files), follow up with get_feature_spec using a spec_id from the results.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when no domain is configured. Uses RAMPIFY_PROJECT_ID env var if not provided. | |
| status | No | Filter by status (e.g., ["planned", "in_progress"]). Omit to return all. | |
| priority | No | Filter by priority. Omit to return all. | |
| feature_type | No | Filter by feature type. Omit to return all. | |
| tags | No | Filter by tags. | |
| module | No | Filter by source module (e.g., "seo" for SEO scan findings). | |
| source | No | Filter by source (e.g., "user" for manual specs, "seo_scan" for findings). | |
| include_stats | No | Include aggregate counts by status and priority (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description implies a read-only operation by saying 'browse and filter' and 'returns an overview'. It doesn't mention side effects, but for a listing tool this is sufficient. Could add more about env var fallbacks.
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?
Four sentences, no fluff. Each sentence serves a purpose: purpose, return type, example queries, follow-up instruction. Well-structured 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?
Given 9 optional parameters and no output schema, the description provides sufficient context: return type (overview with status/priority/task progress), filter capabilities (by status, priority, etc.), and stats option. Could elaborate on exact return fields.
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 value by explaining how parameters like domain/project_id fall back to env vars and gives example usage ('what's planned?'), enhancing understanding beyond schema.
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 it is for browsing/filtering feature specs, specifies it returns an overview with status/priority/task progress, and distinguishes from get_feature_spec by directing users to that tool for full details.
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 explicitly tells when to use this tool (to answer questions like 'what's in progress?') and when to follow up with get_feature_spec for full details, providing clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_keywordsAInspect
Look up search volume, competition, CPC, and monthly trends for a list of keywords using DataForSEO. Results are cached for 30 days — repeated lookups for the same keywords are free.
IMPORTANT: This calls a paid API. The response includes meta.from_cache and meta.from_api counts so you can see what hit the paid API vs cache. Always tell the user before calling this tool and how many keywords you're looking up.
Use this to validate keyword demand during research conversations, before creating clusters.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain. Uses SEO_CLIENT_DOMAIN if not provided. | |
| project_id | No | Project UUID. | |
| keywords | Yes | Keywords to look up (max 100). e.g., ["seo audit tool", "free seo checker"] | |
| locale | No | Language locale (default: "en") | |
| location_code | No | DataForSEO location code (default: 2840 = US). Canada: 2124, UK: 2826. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses critical behavioral traits: the tool calls a paid API, results are cached for 30 days, repeated lookups are free, and the response includes meta fields to track cache vs API usage. It also instructs to inform the user before calling.
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 concise with three well-structured paragraphs. The first sentence states the purpose, the second adds important notes about caching and payment, and the third gives usage context. Every sentence is meaningful and front-loaded.
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 lacking an output schema, the description explains what the response contains (meta fields for cache and API counts) and the return of search volume, competition, CPC, and trends. It covers the paid API, caching, and usage context adequately for an agent to select and invoke the tool correctly.
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 baseline is 3. The description adds value by specifying that keywords are limited to 100 with an example array, noting that domain defaults to SEO_CLIENT_DOMAIN if not provided, and providing example location codes for US, Canada, and UK.
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 verb 'look up' and the resource 'search volume, competition, CPC, and monthly trends for a list of keywords using DataForSEO'. It distinguishes from siblings like suggest_keywords (which suggests keywords) and get_gsc_insights (which provides Google Search Console data).
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 explicitly says 'Use this to validate keyword demand during research conversations, before creating clusters' and instructs to always tell the user before calling with the number of keywords. It does not explicitly state when not to use or name alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
optimize_contentAInspect
Generate specific optimization instructions for a page based on its keyword audit results. Runs the content audit, then for each failing check produces actionable fix instructions: add keyword to title, increase density by N occurrences, add internal/external links, vary keyword formatting.
Use this after reviewing a page with get_page_seo to get step-by-step instructions for improving keyword optimization. The AI agent reads these instructions and modifies the source files.
Constraint: instructions preserve content structure (headings, sections, flow). Only text, formatting, and links are modified.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain (e.g., "example.com"). Uses SEO_CLIENT_DOMAIN env var if not provided. | |
| project_id | No | Project UUID — use instead of domain when no domain is configured. | |
| url_path | Yes | Page URL path to optimize (e.g., "/service-areas/mosquito-control-toronto/") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explains the tool runs a content audit and produces fix instructions for each failing check. It also discloses constraints: only text, formatting, and links are modified; structure is preserved. It does not detail side effects, auth needs, or rate limits, but the core behavior is clear and accurate.
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 paragraphs, each sentence adds value. The main purpose is front-loaded, followed by usage guidance and constraints. It is reasonably concise but could be slightly tighter without losing meaning.
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?
The description explains the output (actionable fix instructions) with examples, but does not specify the exact format (e.g., JSON, list) or how to handle cases with no failing checks. Given no output schema, it leaves some gaps for the agent. It is sufficient but not complete.
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). The tool description adds no additional information about parameters beyond what the schema already provides. Therefore, it meets the baseline of 3.
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 generates specific optimization instructions for a page based on keyword audit results. It uses a specific verb ('generate instructions') and resource ('page optimization'), and distinguishes itself from siblings by noting it is used after get_page_seo, differentiating it from other SEO and content tools.
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 explicitly says 'Use this after reviewing a page with get_page_seo to get step-by-step instructions for improving keyword optimization.' This provides clear when-to-use guidance. It also includes a constraint (preserving content structure), but does not explicitly list when not to use or mention alternatives, so slightly lacking.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_keywordsAInspect
Get related keyword suggestions for a seed keyword using DataForSEO. Returns up to 50 related keywords with search volume and competition data.
IMPORTANT: This calls a paid API. Always tell the user before calling this tool and what seed keyword you're using.
Use this to expand keyword research — find related terms, long-tail variations, and new cluster candidates.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Site domain. Uses SEO_CLIENT_DOMAIN if not provided. | |
| project_id | No | Project UUID. | |
| seed | Yes | Seed keyword to get suggestions for (e.g., "seo audit") | |
| locale | No | Language locale (default: "en") | |
| location_code | No | DataForSEO location code (default: 2840 = US). Canada: 2124, UK: 2826. | |
| limit | No | Max suggestions to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden and discloses paid API call, requiring user notification. This is a key behavioral trait. Lacks details on rate limits or authentication, but the warning is significant and adds value.
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?
Three succinct sentences with clear structure: purpose, important warning, usage advice. No extraneous information, front-loaded with core functionality.
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 no output schema, description sufficiently explains return data (related keywords with search volume and competition). For a tool with 6 parameters (1 required), the description covers key aspects. Could briefly mention limit behavior or pagination, but overall complete for use.
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%, but description adds value by specifying default locale ('en'), default location_code (2840 for US) with examples for Canada and UK, and noting domain uses SEO_CLIENT_DOMAIN if omitted. This enriches understanding beyond schema.
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?
Description clearly states the tool gets related keyword suggestions for a seed keyword using DataForSEO, with details on return data (up to 50 keywords, search volume, competition). It distinguishes itself from sibling like lookup_keywords by focusing on suggestion expansion.
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?
Provides clear guidance on when to use for expanding keyword research and finding related terms. Includes explicit instruction to inform user before calling due to paid API. Could improve by contrasting with alternatives like lookup_keywords, but usage context is well defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_feature_specAInspect
Update a feature spec to reflect actual progress. Mark tasks and criteria as complete, update spec status, and advance next_action.
Use this after completing work described in a spec task. Returns a suggested_commit message string.
Examples:
Mark a task complete: { spec_id, task_id, task_status: "completed" }
Update overall status: { spec_id, status: "in_progress" }
Mark a criterion verified: { spec_id, criterion_id, criterion_status: "verified" }
| Name | Required | Description | Default |
|---|---|---|---|
| spec_id | Yes | UUID of the feature spec to update (required) | |
| status | No | New status for the overall spec | |
| next_action | No | Manually override next_action. Auto-advanced after task completion if omitted. | |
| task_id | No | UUID of the task to update (from get_feature_spec tasks array) | |
| task_status | No | New status for the task | |
| criterion_id | No | UUID of the criterion to update (from get_feature_spec criteria array) | |
| criterion_status | No | New status for the criterion | |
| add_task | No | Add a new task to the spec |
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 reveals that the tool returns a 'suggested_commit message string' and mentions auto-advancement of next_action, which are valuable behavioral details. However, it doesn't cover important aspects like whether this is a destructive operation, what permissions are required, or error handling for invalid updates.
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 appropriately sized and front-loaded with the core purpose in the first sentence. The examples are helpful but could be more concise. Every sentence serves a purpose, though the structure could be slightly improved by separating the examples more clearly from the usage guidance.
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 complexity (8 parameters with nested objects) and absence of both annotations and output schema, the description provides adequate but incomplete context. It explains the purpose and gives usage examples but doesn't fully address behavioral aspects like side effects, error conditions, or the format of the return value beyond 'suggested_commit message string'.
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 schema already documents all 8 parameters thoroughly with descriptions and enums. The description adds some value through the examples that show how parameters combine in practical use cases, but doesn't provide additional semantic context beyond what's in the schema. This meets the baseline for high schema coverage.
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 purpose with specific verbs ('update', 'mark', 'advance') and resources ('feature spec', 'tasks', 'criteria', 'spec status', 'next_action'). It distinguishes from sibling tools like 'create_feature_spec' and 'get_feature_spec' by focusing on updating existing specs rather than creating or retrieving them.
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 clear context for when to use the tool ('after completing work described in a spec task') and offers examples of specific use cases. However, it doesn't explicitly state when NOT to use it or mention alternatives among siblings (e.g., when to use create_feature_spec vs. update_feature_spec).
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. Dates show when Glama detected each change.
9 tool updates
v1.0.0- Added
create_content_spec - Added
create_keyword_cluster - Added
get_commit_message - Added
get_keyword_clusters - Added
link_commit - Added
list_feature_specs - Added
lookup_keywords - Added
optimize_content - Added
suggest_keywords
10 tool updates
v0.1.9- First observed
crawl_site - First observed
create_feature_spec - First observed
generate_meta - First observed
generate_schema - First observed
get_feature_spec - First observed
get_gsc_insights - First observed
get_issues - First observed
get_page_seo - First observed
get_security_context - First observed
update_feature_spec
TDQS
The tools cover two distinct domains (SEO and feature spec management), but create_content_spec and create_feature_spec have very similar names and overlapping descriptions, causing potential ambiguity. Most other tools are clearly distinct, but the presence of two 'create spec' tools without clear separation in naming or behavior detracts from clarity.
All tool names follow a consistent verb_noun pattern with underscores (e.g., crawl_site, create_keyword_cluster, get_page_seo). The naming is uniform and predictable, with no mixing of conventions. Minor variations in verb choice (e.g., 'generate' vs 'create') are acceptable and do not hinder understanding.
With 19 tools, the server covers a broad but well-scoped set of functionalities for SEO and feature specification management. The count is slightly on the higher side but still appropriate given the combined domains; each tool serves a distinct purpose, and there are no extremes.
The tool surface covers the key CRUD operations for feature specs (create, read, update, list, link commits) and a comprehensive set of SEO tools (crawl, analysis, keyword research, optimization). Missing delete operations and a dedicated content spec retrieval tool are minor gaps, but overall the server enables most workflows without dead ends.
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
Run SEO + AI-visibility (GEO) audits from Claude, Cursor & other AI clients.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
- VibeSEOOAuthdev.vibeseo
SEO research, audits, backlinks, GSC, and content workflow tools for AI agents.
Turn Search Console data into SEO actions, content, publishing, indexing, and AI insights.
Related MCP Servers
- AlicenseBqualityCmaintenanceConnects Google Search Console with Claude AI to enable SEO professionals to analyze their SEO data through natural language conversations, providing access to property information, search analytics, URL inspection, and sitemap management.1,458MIT
- AlicenseNot gradedqualityDmaintenanceConnects Google Search Console with Claude AI to analyze SEO data through natural language, enabling search analytics reporting, URL inspection, indexing status checks, sitemap management, and data visualization for SEO professionals.MIT
- AlicenseNot gradedqualityCmaintenanceProvides programmatic access to Google Search Console API data through Claude Code and Cursor, enabling search analytics, sitemap info, URL inspection, and indexing submission.6230MIT
- AlicenseAqualityDmaintenanceEnables AI agents to perform comprehensive SEO audits on web pages, including meta tags, headings, links, images, performance, and more, via a CLI or MCP server.181MIT
Appeared in Searches
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/rampify-dev/rampify-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server