MCP Integration Guide
ShipKit exposes 30 MCP tools via a single HTTP endpoint. Connect your AI coding tool and control your SaaS operations through natural language.
Getting Your API Key
- Sign in to your ShipKit dashboard
- Go to Settings > API Keys
- Click Create API Key, give it a name
- Copy the key (shown only once) — it looks like
sk_xxxxxxxxxxxxxxxx
Configuration
Claude Code / Cursor / Windsurf
Add to your project's .mcp.json:
{
"mcpServers": {
"shipkit": {
"type": "http",
"url": "https://your-shipkit-url/api/mcp",
"headers": {
"Authorization": "Bearer skyourapi_key"
}
}
}
}
Alternative (URL param, deprecated but supported):
{
"mcpServers": {
"shipkit": {
"type": "http",
"url": "https://your-shipkit-url/api/mcp?apikey=skyourapikey"
}
}
}
Authentication
All tools/call requests require a valid API key. The key is validated and usage is incremented on each call.
| Plan | Monthly MCP Calls |
|---|---|
| Free | 100 |
| Pro | 2,000 |
| Team | 10,000 |
MCP Tools Reference
Screenshot Tools
shipkitcreateproject
Create a new monitoring project.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Project name |
base_url | string | Yes | Base URL of the website |
id, name, baseurl, createdat.
shipkitaddconfig
Add a screenshot configuration to a project.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | Project UUID |
name | string | Yes | Config name |
url | string | Yes | Full URL to capture |
css_selector | string | No | CSS selector to capture a specific element |
viewport_width | number | No | Viewport width in px (default: 1280) |
viewport_height | number | No | Viewport height in px (default: 800) |
waitdelayms | number | No | Wait time in ms after page load (default: 0) |
id, name, url, and all settings.
shipkit_capture
Capture a screenshot, compare with previous, optionally run AI analysis.
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | string | Yes | Screenshot config UUID |
captureid, imageurl, diff, ai_analysis.
shipkit_compare
Compare two captures and return visual diff results.
| Parameter | Type | Required | Description |
|---|---|---|---|
capturebeforeid | string | Yes | UUID of the older capture |
captureafterid | string | Yes | UUID of the newer capture |
changepercentage, changedpixels, diffimageurl, ai_analysis.
shipkitgetcaptures
Get historical captures for a screenshot config.
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | string | Yes | Screenshot config UUID |
limit | number | No | Max results (default: 20) |
AI Analysis Tools
shipkitanalyzechanges
AI analysis of visual changes between two screenshots.
| Parameter | Type | Required | Description |
|---|---|---|---|
diff_id | string | Yes | Diff UUID to analyze |
{ summary, severity, changes[], suggestions[] }
shipkitdiscoverpages
Crawl a website and find all important pages.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Base URL to discover pages on |
max_pages | number | No | Maximum pages to discover (default: 20) |
use_ai | boolean | No | Use AI to rank pages by importance (default: false) |
url, title, importance_score.
shipkitcheckfreshness
Check which screenshot configs have stale captures.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | Project UUID |
maxagehours | number | No | Stale threshold in hours (default: 24) |
isstale, lastcapturedat, hourssince_capture.
Documentation Tools
shipkitgeneratedocs
Generate a complete documentation suite from a URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL of the product to generate docs for |
product_name | string | No | Product name (auto-detected if omitted) |
language | string | No | Language code (default: "en") |
id, sections[].
shipkitupdatedocs
Check for changes and update documentation accordingly.
| Parameter | Type | Required | Description |
|---|---|---|---|
project_id | string | Yes | Project UUID to check |
changesdetected, sectionsupdated[].
shipkittranslatedocs
Translate generated documentation to another language.
| Parameter | Type | Required | Description |
|---|---|---|---|
doc_id | string | Yes | Generated doc UUID |
target_language | string | Yes | Language code (e.g. "zh", "ja", "es", "de") |
id, language, sections[].
Publishing Tools
shipkitgetembed_url
Get a permanent public URL that always shows the latest screenshot.
| Parameter | Type | Required | Description |
|---|---|---|---|
config_id | string | Yes | Screenshot config UUID |
{ embed_url, token }
shipkitpublishto_github
Publish docs to a GitHub repo as a pull request.
| Parameter | Type | Required | Description |
|---|---|---|---|
doc_id | string | Yes | Generated doc UUID |
repo | string | Yes | GitHub repo in "owner/repo" format |
branch | string | No | Target branch (default: "main") |
path | string | No | Path in repo for docs (default: "docs/") |
{ prurl, branchname, files_created }
shipkitpublishto_notion
Publish docs to a Notion workspace.
| Parameter | Type | Required | Description |
|---|---|---|---|
doc_id | string | Yes | Generated doc UUID |
parentpageid | string | Yes | Notion parent page ID |
{ pageids[], notionurl }
shipkitpublishto_gitbook
Publish docs to a GitBook space.
| Parameter | Type | Required | Description |
|---|---|---|---|
doc_id | string | Yes | Generated doc UUID |
space_id | string | Yes | GitBook space ID |
{ spaceurl, pagescreated }
SaaS Maintenance Tools
shipkitgeneratechangelog
Generate a changelog from GitHub commits.
| Parameter | Type | Required | Description |
|---|---|---|---|
repo | string | Yes | GitHub repo in "owner/repo" format |
from | string | Yes | Start date (ISO 8601) or git tag |
to | string | No | End date or git tag (default: now) |
entries[].
shipkitseoscan
Run an SEO analysis on a URL.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to scan |
score, issues[], recommendations[].
shipkitstatuscheck
Check service health and availability.
Returns:{ status, version, aienabled, billingenabled }
Account Tools
shipkit_usage
View current month usage stats.
Returns:{ plan, capturesused, captureslimit, mcpcallsused, mcpcallslimit }
shipkit_projects
List all projects owned by the authenticated user.
Returns: Array of projects withid, name, configcount, lastcapture_at.
Launch & Promote Tools
shipkitoptimizelanding
Analyze a landing page and return structured data for optimization.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Landing page URL |
{ headings[], ctas[], metatags, contentblocks[], performance_hints[] }
shipkitscanlegal_data
Scan a product page for data collection patterns to draft legal documents.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Product URL to scan |
product_name | string | Yes | Product name |
type | string | Yes | "privacy" or "terms" |
{ forms[], cookies[], thirdpartyscripts[], datacollectionpatterns[] }
shipkitfetchph_data
Extract product data for Product Hunt launch materials.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Product URL |
description | string | No | Optional product description for context |
{ productname, tagline, description, features[], screenshoturls[] }
shipkitfetchsocial_data
Get product info with platform-specific formatting guidelines.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Product URL |
platforms | string[] | Yes | Platforms: twitter, linkedin, reddit, hackernews, indiehackers, v2ex, xiaohongshu |
{ productinfo, platforms: { [name]: { charlimit, tone, format, guidelines } } }
shipkitfetchcomparison_data
Fetch your product and competitor data for comparison content.
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Your product URL |
competitors | string[] | Yes | List of competitor URLs |
{ your_product, competitors[] }
shipkitgetlaunch_calendar
Get a launch calendar template with a 4-week timeline.
| Parameter | Type | Required | Description |
|---|---|---|---|
launch_date | string | Yes | Launch date (YYYY-MM-DD) |
{ platforms[], timeline[] }
Email & Support Tools
shipkitsearchdocs
Search hosted docs for building AI-powered support bots.
| Parameter | Type | Required | Description |
|---|---|---|---|
site_id | string | Yes | Hosted site slug |
question | string | Yes | User question to search for |
{ page_title, excerpt, path }.
shipkitgetwidget_code
Get embeddable JavaScript widget code for AI doc search on your website.
| Parameter | Type | Required | Description |
|---|---|---|---|
site_id | string | Yes | Hosted site slug |
{ scripttag, widgethtml }
Common Scenarios
1. "Generate documentation for my website"
Tell Claude:
"Use ShipKit to generate docs for https://myapp.com"
Claude will call:
shipkitdiscoverpages— find all important pagesshipkitgeneratedocs— generate full documentationshipkitpublishto_github— publish as a PR to your repo
2. "Prepare my Product Hunt launch"
Tell Claude:
"I'm launching https://myapp.com on Product Hunt next Tuesday. Help me prepare."
Claude will call:
shipkitfetchph_data— extract product info and screenshotsshipkitgetlaunch_calendar— get a 4-week timelineshipkitfetchsocial_data— get guidelines for each platform
Then Claude writes your tagline, description, first comment, and social posts using the returned data.
3. "Monitor my product for visual changes"
Tell Claude:
"Set up screenshot monitoring for https://myapp.com — track the homepage, pricing page, and docs."
Claude will call:
shipkitcreateproject— create a monitoring projectshipkitaddconfig(x3) — add configs for each pageshipkit_capture(x3) — take initial screenshots
4. "Write a Twitter launch post"
Tell Claude:
"Write a Twitter post announcing https://myapp.com"
Claude will call:
shipkitfetchsocial_datawithplatforms: ["twitter"]— get product info + Twitter guidelines
Then Claude writes the post using the returned data and platform constraints.
5. "Check my landing page"
Tell Claude:
"Analyze my landing page at https://myapp.com and suggest improvements"
Claude will call:
shipkitoptimizelanding— get structured page datashipkitseoscan— check SEO issues
Then Claude provides optimization suggestions based on the returned data.
Protocol Details
ShipKit implements MCP over HTTP using JSON-RPC 2.0.
Endpoint:POST /api/mcp
Supported methods:
initialize— handshake, returns server info and capabilitiesnotifications/initialized— client acknowledgmenttools/list— returns all 30 tool definitions (no API key validation)tools/call— execute a tool (requires valid API key, increments usage)
curl -X POST https://your-shipkit-url/api/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer skyourapi_key" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "shipkit_usage",
"arguments": {}
}
}'
Response:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{ \"plan\": \"pro\", \"capturesused\": 42, \"captureslimit\": 500 }"
}
]
}
}