Skip to main content
Glama
Sleywill

SnapAPI MCP Server

by Sleywill

snapapi-mcp

SnapAPI를 위한 MCP(Model Context Protocol) 서버입니다. Claude Desktop, Cursor, Windsurf, Cline, Zed와 같은 AI 도구에서 직접 웹 페이지 스크린샷 촬영, 스크래핑, 콘텐츠 추출, PDF 생성, 비디오 녹화 및 페이지 분석을 수행할 수 있습니다.

이것은 무엇인가요?

이 패키지는 AI 어시스턴트를 SnapAPI 웹 캡처 API에 연결하는 로컬 MCP 서버를 실행합니다. 설정이 완료되면 AI는 다음을 수행할 수 있습니다:

  • 모든 URL의 스크린샷 촬영 (전체 페이지, 모바일, 다크 모드, 요소 선택, 기기 에뮬레이션)

  • 실제 브라우저를 사용하여 웹 페이지 스크래핑 및 깔끔한 텍스트, HTML 또는 링크 목록 가져오기

  • LLM 사용에 최적화된 콘텐츠 추출 (마크다운, 기사, 메타데이터, 구조화된 데이터)

  • URL 또는 HTML에서 PDF 생성

  • 선택적 상호작용 시나리오와 함께 브라우저 세션 비디오 녹화

  • AI를 통한 페이지 분석 (한 번의 호출로 추출 및 분석)

  • 사용량 할당량 및 계정 통계 확인

Related MCP server: Local-MCP-server

사전 요구 사항

빠른 시작

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json(macOS) 또는 %APPDATA%\Claude\claude_desktop_config.json(Windows)에 추가하세요:

{
  "mcpServers": {
    "snapapi": {
      "command": "npx",
      "args": ["-y", "snapapi-mcp"],
      "env": {
        "SNAPAPI_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

저장 후 Claude Desktop을 재시작하세요.

Cursor

~/.cursor/mcp.json에 추가하세요:

{
  "mcpServers": {
    "snapapi": {
      "command": "npx",
      "args": ["-y", "snapapi-mcp"],
      "env": {
        "SNAPAPI_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json에 추가하세요:

{
  "mcpServers": {
    "snapapi": {
      "command": "npx",
      "args": ["-y", "snapapi-mcp"],
      "env": {
        "SNAPAPI_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Cline (VS Code)

Cline 설정 → MCP Servers → Add Server를 엽니다:

  • Command: npx

  • Args: -y snapapi-mcp

  • Environment: SNAPAPI_API_KEY=sk_live_your_key_here

VS Code (네이티브 MCP 지원)

워크스페이스(또는 사용자 설정)의 .vscode/mcp.json에 추가하세요:

{
  "servers": {
    "snapapi": {
      "command": "npx",
      "args": ["-y", "snapapi-mcp"],
      "env": {
        "SNAPAPI_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Zed

~/.config/zed/settings.json에 추가하세요:

{
  "context_servers": {
    "snapapi": {
      "command": {
        "path": "npx",
        "args": ["-y", "snapapi-mcp"],
        "env": {
          "SNAPAPI_API_KEY": "sk_live_your_key_here"
        }
      }
    }
  }
}

자동 설치 프로그램

포함된 헬퍼 스크립트를 실행하세요:

# For Claude Desktop
./install-mcp.sh claude

# For Cursor
./install-mcp.sh cursor

# For Windsurf
./install-mcp.sh windsurf

사용 가능한 도구

ping

SnapAPI에 연결 가능한지, API 키가 유효한지 확인합니다. 매개변수가 필요하지 않습니다.

예시 프롬프트: "Ping SnapAPI to check it's working"


screenshot

광범위한 사용자 정의를 통해 모든 URL의 스크린샷을 촬영합니다.

매개변수:

매개변수

타입

필수

설명

url

string

*

캡처할 URL

html

string

*

렌더링할 원시 HTML (url 대신 사용)

markdown

string

*

렌더링할 마크다운 (url 대신 사용)

format

string

no

png, jpeg, webp 또는 avif (기본값: png)

quality

number

no

jpeg/webp 품질 1–100 (기본값: 80)

width

number

no

뷰포트 너비 (기본값: 1280)

height

number

no

뷰포트 높이 (기본값: 800)

fullPage

boolean

no

스크롤 가능한 전체 페이지 캡처

selector

string

no

요소 캡처를 위한 CSS 선택자

delay

number

no

페이지 로드 후 캡처 전 대기 시간(ms)

waitUntil

string

no

load, domcontentloaded 또는 networkidle

darkMode

boolean

no

다크 컬러 스킴

blockAds

boolean

no

광고 네트워크 차단

blockCookieBanners

boolean

no

쿠키 팝업 차단

css

string

no

주입할 사용자 정의 CSS

javascript

string

no

실행할 사용자 정의 JS

device

string

no

기기 프리셋 (예: iphone-15-pro) — list_devices로 전체 목록 확인

hideSelectors

string[]

no

캡처 전 숨길 요소

*url, html, markdown 중 하나 이상이 제공되어야 합니다.

예시 프롬프트:


scrape

실제 브라우저를 사용하여 웹 페이지 콘텐츠를 스크래핑합니다 (JavaScript 렌더링 페이지 작동).

매개변수:

매개변수

타입

필수

설명

url

string

yes

스크래핑할 URL

type

string

no

text (마크다운), html 또는 links (기본값: text)

pages

number

no

따라갈 페이지 수, 1–10 (기본값: 1)

waitMs

number

no

페이지 로드 후 추가 대기 시간(ms)

blockResources

boolean

no

속도 향상을 위해 이미지/미디어/폰트 차단

locale

string

no

브라우저 로케일 (예: en-US)

premiumProxy

boolean

no

차단을 우회하기 위해 주거용 프록시 사용

예시 프롬프트:


extract

LLM에 최적화된 깔끔하고 구조화된 콘텐츠를 추출합니다.

매개변수:

매개변수

타입

필수

설명

url

string

yes

추출할 URL

type

string

no

markdown, text, html, article, links, images, metadata 또는 structured (기본값: markdown)

selector

string

no

CSS 요소로 추출 범위 지정

waitFor

string

no

추출 전 CSS 선택자 대기

maxLength

number

no

최대 문자 길이

cleanOutput

boolean

no

노이즈 제거 (기본값: true)

blockAds

boolean

no

광고 네트워크 차단

blockCookieBanners

boolean

no

쿠키 팝업 차단

fields

object

no

사용자 정의 필드 추출 맵

예시 프롬프트:


pdf

URL 또는 HTML에서 PDF를 생성합니다.

매개변수:

매개변수

타입

필수

설명

url

string

*

PDF로 변환할 URL

html

string

*

PDF로 변환할 HTML (url 대신 사용)

pdfOptions.pageSize

string

no

a4, a3, a5, letter, legal, tabloid (기본값: a4)

pdfOptions.landscape

boolean

no

가로 방향

pdfOptions.printBackground

boolean

no

배경 그래픽 포함

pdfOptions.scale

number

no

배율 0.1–2

pdfOptions.marginTop

string

no

상단 여백, 예: 1cm

pdfOptions.marginBottom

string

no

하단 여백

pdfOptions.marginLeft

string

no

왼쪽 여백

pdfOptions.marginRight

string

no

오른쪽 여백

delay

number

no

페이지 로드 후 대기 시간(ms)

waitUntil

string

no

load, domcontentloaded 또는 networkidle

*url 또는 html 중 하나 이상이 제공되어야 합니다.

예시 프롬프트:


analyze

한 번의 호출로 URL에서 콘텐츠를 추출하고 AI 모델로 분석합니다.

매개변수:

매개변수

타입

필수

설명

url

string

yes

분석할 URL

prompt

string

yes

AI를 위한 분석 지침

extractType

string

no

markdown, text, article 또는 structured (기본값: article)

maxLength

number

no

AI에 전달할 최대 문자 수 (기본값: 20000)

예시 프롬프트:


video

브라우저 세션을 비디오(WebM)로 녹화합니다.

매개변수:

매개변수

타입

필수

설명

url

string

yes

녹화할 URL

duration

number

no

녹화 시간(초), 1–60 (기본값: 5)

width

number

no

뷰포트 너비 (기본값: 1280)

height

number

no

뷰포트 높이 (기본값: 800)

scenario

string

no

녹화 중 실행할 JavaScript (스크롤, 클릭 등)

delay

number

no

녹화 시작 전 대기 시간(ms)

waitUntil

string

no

load, domcontentloaded 또는 networkidle

darkMode

boolean

no

다크 컬러 스킴

blockAds

boolean

no

광고 네트워크 차단

blockCookieBanners

boolean

no

쿠키 팝업 차단

device

string

no

기기 프리셋 — list_devices로 전체 목록 확인

예시 프롬프트:


get_usage

SnapAPI 할당량 및 월간 통계를 확인합니다. 매개변수가 필요하지 않습니다.

예시 프롬프트:

  • "How many SnapAPI requests do I have left this month?"

  • "Show me my SnapAPI usage"


list_devices

스크린샷 및 비디오 에뮬레이션을 위한 모든 사용 가능한 기기 프리셋을 나열합니다. 매개변수가 필요하지 않습니다.

예시 프롬프트: "What device presets are available for screenshots?"


환경 변수

변수

필수

설명

SNAPAPI_API_KEY

Yes

SnapAPI API 키 (sk_live_...)

SNAPAPI_BASE_URL

No

API 기본 URL (기본값: https://api.snapapi.pics)


개발

# Clone the repo
git clone https://github.com/Sleywill/snapapi-mcp.git
cd snapapi-mcp

# Install dependencies
npm install

# Build
npm run build

# Run locally (reads MCP protocol from stdin)
SNAPAPI_API_KEY=sk_live_your_key node dist/index.js

문제 해결

"SNAPAPI_API_KEY environment variable is required" MCP 설정의 env 블록에 API 키가 포함되어 있는지 확인하세요. sk_live_로 시작하는지 확인하세요.

Claude Desktop에 도구가 나타나지 않음 설정 저장 후 Claude Desktop을 재시작하세요. 다음 위치에서 MCP 로그를 확인하세요:

  • macOS: ~/Library/Logs/Claude/mcp*.log

  • Windows: %APPDATA%\Claude\logs\mcp*.log

첫 실행 시 npx가 너무 오래 걸림 "args": ["-y", "snapapi-mcp"]를 사용하세요. -y 플래그는 상호작용 없이 설치 프롬프트를 자동으로 확인합니다.

screenshot / scrape 오류 반환

  • app.snapapi.pics/dashboard에서 API 키가 유효한지 확인하세요.

  • get_usage 도구로 남은 할당량을 확인하세요.

  • JavaScript가 많은 페이지의 경우 "waitUntil": "networkidle""delay" 값을 추가해 보세요.

analyze 도구 오류 반환 분석 엔드포인트는 SnapAPI 백엔드에서 Anthropic API 크레딧을 요구합니다. extract 도구를 대체제로 사용하여 페이지 콘텐츠를 가져온 후 직접 분석하세요.


라이선스

MIT

Available Tools

9 tools
analyzeA

Extract content from a URL and analyze it with an AI model. Returns AI-generated insights, summaries, sentiment, or custom analysis based on your prompt. Combines web extraction with LLM analysis in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to extract and analyze.
promptYesThe analysis instruction for the AI, e.g. 'Summarize the key points', 'Extract all product specifications', 'What is the overall sentiment?'
extractTypeNoHow to extract the page content before analysis (default: article).
maxLengthNoMaximum characters of extracted content to pass to the AI (default: 20000).

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses critical AI-model usage ('analyze it with an AI model', 'AI-generated insights') which explains the non-deterministic nature, but omits other behavioral traits like idempotency, latency implications, or cost/rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly constructed sentences with zero waste. Front-loaded with the core action (extract+analyze), followed by return values, and ending with sibling differentiation. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 covers return values ('AI-generated insights, summaries...'). Addresses the tool's complexity (AI processing) but could strengthen with mention of error conditions or latency expectations typical of LLM calls.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage, establishing baseline 3. The description adds high-level context that the prompt drives 'custom analysis', but does not augment specific parameter semantics (formats, enum usage patterns) beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Extract', 'analyze') with clear resource ('URL') and distinguishes from siblings like 'extract' and 'scrape' by explicitly stating 'Combines web extraction with LLM analysis in one call', clarifying the AI-powered differentiation.

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

Usage Guidelines4/5

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

Implies when to use versus alternatives by emphasizing the combined extraction+analysis workflow ('in one call'), but lacks explicit guidance on when NOT to use it (e.g., 'use extract for raw content without AI processing').

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

extractA

Extract clean, structured content from a URL. Returns Markdown, plain text, article data (via Mozilla Readability), OG metadata, links, images, or custom structured fields. Optimized for feeding web content to LLMs without HTML noise.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to extract content from.
typeNoExtraction mode (default: markdown). 'article' uses Mozilla Readability for article body extraction. 'structured' returns title, author, word count, and cleaned content. 'metadata' returns OG tags and meta fields. 'links' and 'images' return lists of URLs.
selectorNoCSS selector to scope extraction to a specific element.
waitForNoCSS selector to wait for before extracting.
maxLengthNoMaximum character length of the returned content.
cleanOutputNoRemove excess whitespace and empty links (default: true).
darkModeNoRender the page with dark color scheme.
blockAdsNoBlock ad networks.
blockCookieBannersNoBlock cookie consent popups.
fieldsNoCustom field extraction map: keys are field names, values describe what to extract. Example: {"price": "product price as a number", "rating": "star rating out of 5"}.

TDQS

A4.2/5.0
Behavior3/5

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 adds valuable implementation context by noting the use of 'Mozilla Readability' and 'HTML noise' removal, but lacks disclosure on error handling, rate limiting, authentication requirements, or timeout behavior expected from a web extraction service.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two efficient sentences with zero redundancy. It front-loads the core action ('Extract clean, structured content') and immediately follows with outputs and optimization purpose. Every word contributes to understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 10 parameters and no output schema, the description adequately covers return value types (Markdown, article data, metadata, etc.) and the custom structured fields capability. It appropriately delegates parameter details to the comprehensive schema while providing high-level use case context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While the input schema has 100% description coverage, the description adds crucial semantic context by framing the tool for 'LLM feeding,' which helps agents understand the intent behind parameters like cleanOutput, blockAds, maxLength, and the custom fields object. It explains the 'why' behind the extraction modes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool extracts 'clean, structured content from a URL' and specifically lists output formats (Markdown, article data via Mozilla Readability, OG metadata, etc.). The phrase 'without HTML noise' effectively distinguishes it from the sibling 'scrape' tool, while 'feeding web content to LLMs' differentiates it from 'screenshot'.

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

Usage Guidelines4/5

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

The description provides clear usage context by specifying it is 'Optimized for feeding web content to LLMs,' indicating when to use this tool. However, it does not explicitly state when NOT to use it or name specific sibling alternatives (e.g., 'use screenshot for visual captures').

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

get_usageA

Check your SnapAPI account usage, quota, and plan details for the current billing period. Shows requests used vs. limit, remaining quota, and monthly statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses return content ('requests used vs. limit, remaining quota, and monthly statistics') but omits auth requirements, rate limits, caching behavior, or whether this counts against quota itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste: first establishes action and scope, second details specific return values. Front-loaded with the verb and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a 0-parameter utility. Describes return values effectively (compensating for missing output schema), but lacks mention of authentication prerequisites or billing period calculation boundaries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters present; baseline 4 per scoring rules. Schema is empty object with no properties requiring semantic elaboration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Check' + resource 'SnapAPI account usage, quota, and plan details' + scope 'current billing period'. Clearly distinguishes from siblings (analyze, extract, screenshot, etc.) which are content/media processing tools rather than account metadata.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance, prerequisites, or alternatives mentioned. While the purpose is distinct from siblings, the description provides no contextual guidance on when to query usage versus performing other operations.

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

list_devicesA

List all available device presets for screenshot and video emulation. Each preset sets the correct viewport, device scale factor, and mobile flag (phones, tablets, desktops). Pass the device id to the screenshot or video tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, description carries full burden. It discloses what each preset contains (viewport, device scale factor, mobile flag) and categorizes the devices (phones, tablets, desktops), but omits safety traits, rate limits, or caching behavior typical of read operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: purpose statement, content explanation, and usage instruction. Information density is high with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter discovery tool without output schema, the description adequately explains the return concept (presets with IDs) and their relationship to consumer tools (screenshot, video). Covers necessary context for agent selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters present; baseline score applies per rubric. The description appropriately requires no additional parameter explanation given the empty input schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'List' with specific resource 'device presets'. The scope is well-defined ('for screenshot and video emulation') and distinguishes from siblings like analyze or pdf by explicitly mentioning the screenshot/video domain.

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

Usage Guidelines4/5

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

Explicitly states the output intent: 'Pass the device id to the screenshot or video tool.' This establishes the workflow (use before screenshot/video) and links to specific sibling tools, though it lacks explicit 'when not to use' guidance.

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

pdfB

Generate a PDF from a URL or HTML content. Supports page sizes, margins, landscape orientation, background graphics, and custom scaling.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL to convert to PDF. Required unless html is provided.
htmlNoRaw HTML to convert to PDF. Alternative to url.
pdfOptionsNoPDF layout and formatting options.
widthNoViewport width in pixels (default: 1280).
heightNoViewport height in pixels (default: 800).
delayNoMilliseconds to wait after page load before generating PDF.
waitUntilNoWhen to consider the page ready (default: load).

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It lists capabilities (page sizes, margins, scaling) hinting at the rendering engine complexity, but omits critical behavioral details: viewport emulation, dynamic content handling (delay/waitUntil parameters), error cases for invalid URLs, or output binary handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences with zero waste. Front-loaded with the core action ('Generate a PDF'), followed by a feature summary. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers primary PDF layout concerns but ignores the web-rendering nuances critical to this tool's function: viewport dimensions, network idle waiting, and delay mechanisms are absent despite being significant parameters for successful conversion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing baseline 3. The description maps features to the pdfOptions object ('page sizes', 'margins', 'landscape') and input modes, but does not add syntax clarification beyond the schema's existing documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('Generate') and resource ('PDF') with explicit input sources ('URL or HTML content'). However, it does not differentiate from sibling 'screenshot' or 'scrape' tools, leaving ambiguity about when to prefer PDF generation over image capture.

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

Usage Guidelines2/5

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

Lacks explicit guidance on when to use this tool versus siblings like 'screenshot' or 'scrape'. The schema describes the url/html mutual exclusivity ('At least one...must be provided'), but the description gives no contextual 'when-to-use' advice.

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

pingA

Check that the SnapAPI service is reachable and the API key is valid. Returns the API status and current server time. Use this to verify your configuration before making other calls.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full disclosure burden. Successfully mentions return values ('Returns the API status and current server time') and validation purpose. Could enhance by explicitly stating idempotency or safety for repeated calls, but covers core behavioral traits well for a simple health check.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly constructed sentences: purpose, return values, and usage guidance. Front-loaded with action verb 'Check'. Zero redundancy or waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Complete for a zero-parameter health check tool. Addresses purpose, returns, and usage context without requiring output schema elaboration. Sufficient complexity coverage given simple schema and lack of annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters present, establishing baseline of 4. Description appropriately makes no parameter claims since schema confirms no inputs required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Check' with clear resources (SnapAPI service, API key) and scope (reachability, validity). Distinguishes from operational siblings (analyze, extract, etc.) by positioning as a configuration verification tool rather than a data processing operation.

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

Usage Guidelines4/5

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

Explicit when-to-use guidance: 'Use this to verify your configuration before making other calls.' Provides clear temporal context for invocation. Does not explicitly name alternative tools or 'when-not-to-use' exclusions, hence not a 5.

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

scrapeA

Scrape a URL using a real browser and return page content as plain text (Markdown), raw HTML, or a list of links. Works on JavaScript-rendered pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to scrape.
typeNoReturn format: 'text' for Markdown-converted content, 'html' for raw HTML, 'links' for extracted hyperlinks (default: text).
pagesNoNumber of pages to follow and scrape, 1–10 (default: 1).
waitMsNoExtra wait time in ms after page load (0–30000, default: 0).
blockResourcesNoBlock images, media, and fonts to speed up scraping (default: false).
localeNoBrowser locale, e.g. en-US, de-DE (default: system).
premiumProxyNoRoute through a residential proxy to bypass bot detection (default: false).

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries full disclosure burden. It successfully notes the browser-based execution and JavaScript support, but omits critical behavioral details: it doesn't explain the multi-page crawling capability (1-10 pages), anti-bot implications of premiumProxy, or performance characteristics like typical latency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely efficient two-sentence structure. First sentence delivers the complete core value proposition (action + mechanism + outputs); second sentence adds the JavaScript capability differentiator. Zero redundancy, front-loaded with essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (browser automation, pagination, proxy support) and lack of output schema, the description is minimally adequate. It covers the basic scraping contract but fails to contextualize advanced features like multi-page crawling or bot detection bypass, which are significant capabilities implied by the parameter schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing a baseline of 3. The description mentions output formats (aligning with the 'type' enum) but adds no semantic context for complex parameters like 'pages' (pagination behavior), 'blockResources' (performance impact), or 'premiumProxy' (use case) beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the core action (scrape URL), mechanism (real browser), and output formats (Markdown text, raw HTML, links). It implies distinction from simple HTTP fetch tools via 'real browser' and 'JavaScript-rendered pages,' though it doesn't explicitly differentiate from siblings like 'extract' or 'screenshot.'

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

Usage Guidelines3/5

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

Provides implicit guidance by noting it 'Works on JavaScript-rendered pages,' signaling use for dynamic content. However, it lacks explicit when-to-use guidance regarding the pagination feature ('pages' parameter) or when to prefer 'text' vs 'html' vs 'links' outputs, and doesn't mention alternatives.

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

screenshotA

Take a screenshot of a URL or render HTML/Markdown and return the image. Supports full-page capture, device emulation, dark mode, element selection, custom CSS/JS injection, ad/cookie-banner blocking, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoThe URL to screenshot. Required unless html or markdown is provided.
htmlNoRaw HTML to render and screenshot. Alternative to url.
markdownNoMarkdown to render and screenshot. Alternative to url.
formatNoOutput image format (default: png).
qualityNoImage quality 1–100 for jpeg/webp (default: 80).
widthNoViewport width in pixels (default: 1280).
heightNoViewport height in pixels (default: 800).
fullPageNoCapture the full scrollable page (default: false).
selectorNoCSS selector to capture a specific element.
delayNoMilliseconds to wait after page load before capture (0–30000).
waitUntilNoWhen to consider the page ready (default: load). Use networkidle for SPAs.
darkModeNoRender with dark color scheme (default: false).
blockAdsNoBlock ad networks (default: false).
blockCookieBannersNoBlock cookie consent popups (default: false).
cssNoCustom CSS to inject before capture.
javascriptNoCustom JavaScript to execute before capture.
deviceNoDevice preset (e.g. iphone-15-pro, macbook-pro-16, pixel-8). Overrides width, height, scale, and mobile settings. Use the list_devices tool to see all presets.
hideSelectorsNoCSS selectors of elements to hide before capture.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and discloses specific behavioral capabilities (ad/cookie-banner blocking, CSS/JS injection, device emulation, dark mode). However, it omits operational context like error handling, timeout behavior, or whether the tool makes external network requests.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently structured: the first establishes core function and I/O, the second enumerates key capabilities. Every phrase earns its place; 'and more' is acceptable given the 18-parameter complexity without being overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 18 parameters, no annotations, and no output schema, the description adequately covers the essentials (input sources, output type, key features) but lacks detail on error scenarios, return value structure, or pagination. The 100% schema coverage compensates for parameter details, but behavioral gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description maps capabilities to parameters (e.g., 'full-page capture' to fullPage, 'device emulation' to device) but does not add semantic context beyond what the schema already provides regarding formats, ranges, or validation rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the core action ('Take a screenshot') and resources ('URL', 'HTML/Markdown') with clear output ('return the image'). It effectively distinguishes from siblings like 'pdf', 'video', and 'scrape' by specifying image generation rather than document extraction or video production.

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

Usage Guidelines3/5

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

The description clarifies input alternatives (URL vs HTML vs Markdown) implying when to use each, but lacks explicit guidance on choosing this tool over siblings like 'scrape' (data extraction) or 'pdf' (document generation). No 'when-not-to-use' or prerequisite guidance is provided.

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

videoA

Record a browser session as a video (WebM). Optionally runs a JavaScript scenario (clicks, scrolls, form fills) before and during recording. Returns a URL to download the recorded video.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL to record.
widthNoViewport width in pixels (default: 1280).
heightNoViewport height in pixels (default: 800).
durationNoRecording duration in seconds (1–60, default: 5).
scenarioNoJavaScript to run inside the page during recording, e.g. scroll or click actions.
waitUntilNoWhen to start recording (default: load).
delayNoMilliseconds to wait after page load before starting the recording.
darkModeNoRecord with dark color scheme (default: false).
blockAdsNoBlock ad networks during recording (default: false).
blockCookieBannersNoBlock cookie consent popups (default: false).
deviceNoDevice preset for recording (e.g. iphone-15-pro). Use the list_devices tool to see all presets.

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full disclosure burden. Adds valuable context that JavaScript runs 'before and during' recording and that return is a URL. Missing: URL expiration/temporariness, headless vs visible browser, error handling for invalid JavaScript, or resource limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero fluff. Front-loaded with core action (Record) and format (WebM). Second sentence covers optional complexity (JS scenario) and return value. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for an 11-parameter video tool with 100% schema coverage. Description compensates for missing output schema by stating return format (URL). Could strengthen with URL persistence details or error behavior, but functional coverage is complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, establishing baseline 3. Description Adds significant value for complex 'scenario' parameter: elaborates timing ('before and during' vs schema's 'during'), and expands examples ('form fills' not in schema). Justifies elevation above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Excellent specificity: 'Record a browser session as a video (WebM)' provides exact verb, resource, and format. Clearly distinguishes from sibling 'screenshot' (static image) and 'pdf' (document capture) through the motion/recording aspect.

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

Usage Guidelines3/5

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

Implies use case through 'Optionally runs a JavaScript scenario' (dynamic interactions), but lacks explicit when-to-use vs alternatives (e.g., 'use screenshot for static pages, video for motion') or prerequisites. No mention of 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv3.1.0
    • First observedanalyze
    • First observedextract
    • First observedget_usage
    • First observedlist_devices
    • First observedpdf
    • First observedping
    • First observedscrape
    • First observedscreenshot
    • First observedvideo

TDQS

A3.8/5.0

Scored across 9 tools

Disambiguation3/5

Most tools are clearly distinct by output type (image, PDF, video, usage, devices), but scrape and extract overlap significantly—both return Markdown, plain text, and links from a URL. Descriptions help differentiate raw scraping from structured extraction, but an agent could still be uncertain which to choose.

Naming Consistency3/5

Names are all lowercase and readable, but conventions are mixed: some are verb+object (get_usage, list_devices), some are bare verbs (scrape, extract, analyze, ping), and some are noun-like action commands (pdf, video, screenshot). There is no consistent verb_noun pattern, though the naming is still predictable enough to navigate.

Tool Count5/5

Nine tools is a well-scoped set for a browser automation and web content API. Each tool covers a distinct core capability or supporting function, with no obvious bloat or redundancy that would make the surface feel heavy.

Completeness5/5

The tool surface covers the advertised SnapAPI capabilities thoroughly: scraping, structured extraction, screenshots, PDFs, video recording, AI analysis, device presets, usage checks, and connectivity verification. There are no obvious dead ends or missing core operations for this stateless, action-oriented API.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A lightweight Model Context Protocol (MCP) server that enables your LLM to capture screenshots of any specified URL and return only the access URL for the captured image. This tool simplifies the process of generating and sharing webpage snapshots, making it perfect for integrating visual capture ca
    1
    2
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Screenshot and HTML Rendering MCP Server for AI Agents. Capture screenshots, render HTML to images, and generate PDFs via simple API calls. Compatible with Claude, Cursor, and any MCP client.
    1
    MIT