Skip to main content
Glama

Server Details

Grabbit gives AI agents eyes on the web through a hosted MCP server. Send a public URL and get a pixel-perfect hosted image back, without maintaining Chromium, Playwright, or a browser fleet.

Capture a full page, exact viewport, or single CSS selector as PNG, JPEG, or WebP. Grabbit handles cookie and consent banners, waits for JavaScript-heavy pages, blocks private and internal URLs, supports safe retries with idempotency keys, and delivers async results through signed webhooks. Completed captures include a CDN URL.

Connect with OAuth 2.1 or an API key. Grabbit works with Claude, Cursor, Codex, and any MCP client.

Live captures cost $0.002 each. The $50 annual plan includes 25,000 prepaid credits that never reset or expire. Free test keys return placeholder images, so you can wire up the integration before paying.

Home: https://grabbit.live

Docs: https://grabbit.live/screenshot-api

Built by BrainGrid.

Ownership verified
Status
Healthy
Uptime
9.1% over 46 days
Last Tested
Transport
Streamable HTTP ยท MCP 2025-11-25
URL
Repository
BrainGridAI/grabbit-mcp
GitHub Stars
0
Server Listing
Grabbit

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: grab creates a screenshot, get_grab fetches one by id, list_grabs browses recent captures, get_usage reports team credits, and get_pricing covers plans and comparisons. get_grab vs list_grabs and get_pricing vs get_usage are well-separated by their descriptions.

Naming Consistency4/5

The set mostly follows a verb_noun pattern (get_grab, get_pricing, get_usage, list_grabs), with 'grab' standing alone as the core action verb. This is a minor, readable deviation rather than a break in convention.

Tool Count5/5

Five tools is well-scoped for a hosted screenshot service: create, retrieve, list, plus account and pricing info. Each tool earns its place with no redundancy.

Completeness4/5

The capture lifecycle is well covered (create, get by id, list) along with usage and pricing. Minor gaps like a delete/expire operation or batch capture exist, but core workflows are fully supported and agents can work around them.

Available Tools

5 tools
get_grabFetch a grabA
Read-only
Inspect

Fetch a previously created grab by id: status, hosted image URL, and metadata. Useful for polling async grabs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesGrab id (UUID)
return_imageNoInline the image too (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesGrab id.
bytesNoImage size in bytes.
widthNoViewport width in pixels.
formatNoImage format.
heightNoViewport height in pixels (3240 in the response for full_page captures).
statusYesLifecycle state. Only done grabs have an image_url.
image_urlNoHosted image URL once status is done (relative for sk_test_ placeholders).
created_atNoISO 8601 creation time.
target_urlNoThe captured URL.
execution_msNoRender time in milliseconds.
error_messageNoWhy a failed grab failed.
credits_remainingNoTeam credits left after this grab (live keys only).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, covering the safety profile. The description still adds real value by disclosing the async/polling workflow ('previously created grab', 'polling async grabs'), telling the agent this is a repeated-read pattern rather than a one-shot call.

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 filler, and the identity/return-value information is front-loaded before the polling hint. Every clause 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?

An output schema exists, so the description is not obligated to explain return values (even though it briefly does). For a simple two-parameter read tool with full annotation coverage, the definition is nearly complete; only explicit sibling routing is absent.

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%, so both parameters (id, return_image) are fully documented in the schema itself. The description only implies the id-based lookup that the schema already states, adding no syntax, format, or default detail beyond it.

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?

States a specific verb+resource ('Fetch a previously created grab by id') and enumerates the payload ('status, hosted image URL, and metadata'), so an agent can tell it apart from list_grabs and grab without opening the schema.

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?

'Useful for polling async grabs' gives one concrete use case, which is genuinely helpful routing context. However, it never names the alternatives (list_grabs for enumeration, grab for creation) or states when not to use this tool, so the guidance is implied rather than explicit.

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

get_pricingPricing & comparisonA
Read-only
Inspect

Grabbit's pricing plus dated, first-party sourced comparisons with Urlbox, ScreenshotOne, and ApiFlash. Includes named plan math and separate API, SDK/example, CLI, MCP, authentication, and result facts. Defaults to a compact summary; request full detail for methodology, migration notes, limitations, and the complete source registry.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNosummary by default, or full for every comparison field and source
providerNoOptional provider filter for a smaller response

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksYes
pricingYes
comparisonYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value beyond that by disclosing provenance ('first-party sourced', 'dated') and the default-vs-full response behavior, which the agent cannot infer from annotations alone. It omits any caveats about freshness limits or rate limits, keeping it short of a 5.

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

Conciseness4/5

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

Two sentences, front-loaded with what the tool returns before the detail-level switch. Every clause carries content, though the middle run-on listing of fact categories is dense and slightly harder to parse than necessary.

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?

With an output schema present, return values need not be explained, and both parameters plus their enums are documented. The description covers scope, provenance and the default behavior, leaving only cross-tool routing guidance as a gap for what appears to be a low-risk read-only tool.

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%, so the baseline is 3 and the schema already defines both enum parameters. The description goes beyond the schema by specifying what 'full' actually unlocks (methodology, migration notes, limitations, complete source registry) and by noting the compact default, which meaningfully clarifies the cost/benefit of the flag.

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 names a specific resource (Grabbit's pricing) and enumerates exactly what the response contains: dated, first-party sourced comparisons against Urlbox, ScreenshotOne and ApiFlash, plus named plan math and separate API/SDK/CLI/MCP/auth facts. An agent can immediately distinguish this from sibling tools get_grab, get_usage, grab and list_grabs, which deal with grab records and usage rather than pricing.

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?

It gives real guidance on the detail parameter (compact by default, request full for methodology/migration/limitations/source registry), but never states when to reach for this tool versus alternatives or any exclusions. Usage is only implied by the topic.

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

get_usageCredits & usageA
Read-only
Inspect

Your team's remaining credits, plan, and 30-day grab counts. Check this to know when to top up (https://grabbit.live/app/billing).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
planYes
usageYes
top_upYesWhere to buy more credits.
creditsYes
environmentYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the data scope (credits, plan, 30-day counts), but since an output schema exists, this overlaps structured data and adds little independent behavioral context.

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 tightly written sentences: the first front-loads exactly what is returned, the second gives the actionable purpose plus a link. No filler; every clause 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?

For a zero-parameter read-only tool with a full output schema and clear annotations, the description covers what the agent needs to decide to call it. It hints at return values even though the output schema carries them.

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?

The tool takes zero parameters, so the baseline is 4. There is nothing to disambiguate, and the description appropriately avoids inventing parameter detail.

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 states a specific resource and its contents: the team's remaining credits, plan, and 30-day grab counts. This clearly separates it from get_pricing and list_grabs, though it never explicitly names a sibling for contrast.

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?

"Check this to know when to top up" supplies a concrete decision context for invoking the tool. It gives no explicit exclusions or named alternatives, so it stops short of full when/when-not guidance.

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

grabTake a screenshotAInspect

Capture a screenshot of any public web page by URL and get back a hosted image, with no local headless browser, Chromium, Playwright, or Puppeteer to install or run. Hosted rendering handles cookie and consent banners, lazy-loaded and JavaScript-heavy pages, and full-page capture. Reach for this whenever you need to SEE a page: verifying your own UI/frontend work, capturing a live site, or feeding a real rendered image into a vision step. Live grabs cost 1 credit ($0.002 flat); test-environment keys return free placeholders. Returns the image inline by default plus the hosted URL and your remaining credits. Wraps the Grabbit screenshot API (POST /v1/grabs; same parameters): https://grabbit.live/screenshot-api

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute http/https URL to capture (e.g. https://nyt.com)
widthNoViewport width (default 1280)
formatNoImage format (default png)
heightNoViewport height (default 720; ignored when full_page)
delay_msNoSettle delay before capture
selectorNoCSS selector to capture a single element
full_pageNoCapture the full page height
return_imageNoInline the image in the response (default true; set false to save tokens)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesGrab id.
bytesNoImage size in bytes.
widthNoViewport width in pixels.
formatNoImage format.
heightNoViewport height in pixels (3240 in the response for full_page captures).
statusYesLifecycle state. Only done grabs have an image_url.
image_urlNoHosted image URL once status is done (relative for sk_test_ placeholders).
created_atNoISO 8601 creation time.
target_urlNoThe captured URL.
execution_msNoRender time in milliseconds.
error_messageNoWhy a failed grab failed.
credits_remainingNoTeam credits left after this grab (live keys only).

TDQS

A4.4/5.0
Behavior5/5

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

Goes well beyond the annotations (openWorldHint, idempotentHint=false) by disclosing the credit cost (1 credit, $0.002 flat), that test keys return free placeholders, that hosted rendering handles cookie/consent banners and lazy-loaded JS, and that the response includes the inline image plus hosted URL and remaining credits. This is the rich behavioral context annotations cannot carry.

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

Conciseness4/5

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

Front-loaded with the core action and benefit, then cost and return behavior; every sentence carries usable signal. Slight bloat from the 'no Playwright/Puppeteer to install' framing and the trailing API endpoint citation, which are marketing/reference rather than decision-critical.

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?

With an output schema present, the description needn't explain return values yet still notes the inline image plus hosted URL and remaining credits. For a single-required-param, 8-parameter tool it covers purpose, cost, use cases, and rendering behavior completely.

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%, so all 8 parameters carry their own descriptions, including defaults, bounds, and the height/full_page interaction. The description reinforces a couple of these (inline image by default, full-page capture) but adds little syntax or semantics beyond the schema, so the baseline 3 is correct.

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?

States a specific verb and resource ('Capture a screenshot of any public web page by URL and get back a hosted image') and clearly distinguishes itself from the sibling read/listing tools (get_grab, list_grabs) by being the creation tool. An agent can tell this apart from the retrieval siblings without opening schemas.

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?

Gives explicit when-to-use framing ('Reach for this whenever you need to SEE a page: verifying your own UI/frontend work, capturing a live site, or feeding a real rendered image into a vision step'). It does not name the sibling alternatives or state when not to use this versus get_grab/list_grabs, so it stops short of a 5.

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

list_grabsList recent grabsA
Read-only
Inspect

Browse your team's recent screenshots (newest first).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoRows to return (default 20)
statusNoFilter by status

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
has_moreYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful ordering trait (newest first) but says nothing about pagination or result volume, so it adds modest value beyond the annotations.

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?

A single sentence with zero filler, front-loading the verb and resource and appending the ordering constraint where it belongs.

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?

An output schema exists, so return values need no explanation, and the read-only annotations cover safety. For a simple two-parameter list tool the description is nearly complete, with only pagination behavior left implicit.

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%: limit has a documented default (20) and status has a documented enum, so the schema carries the parameter burden. The description adds no filtering or limit semantics of its own, making the baseline 3 appropriate.

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?

States a specific verb (browse) and resource (team's recent screenshots, i.e. grabs) plus the sort order (newest first). It does not explicitly distinguish itself from the sibling get_grab, but the plural/listing framing makes the distinction inferable.

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 phrase 'your team's recent' implies the listing use case, but there is no explicit when-to-use guidance and no mention of when to prefer get_grab for a single item. Usage is only implied.

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. 1 tool update
    • Changedget_pricing25 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "summary by default, or full for every comparison field and source",
        +  "enum": [
        +    "summary",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / provider
        Added value: +{
        +  "description": "Optional provider filter for a smaller response",
        +  "enum": [
        +    "urlbox",
        +    "screenshotone",
        +    "apiflash"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / agent_surfaces
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "comparison_url": {
        +        "type": "string"
        +      },
        +      "provider": {
        +        "type": "string"
        +      },
        +      "surfaces": {
        +        "items": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "availability": {
        +              "type": "string"
        +            },
        +            "grabbit_availability": {
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "source_url": {
        +              "type": "string"
        +            },
        +            "verified_on": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name",
        +            "availability",
        +            "grabbit_availability",
        +            "source_url",
        +            "verified_on"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "provider",
        +      "comparison_url",
        +      "surfaces"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / comparison / properties / decision_pages
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "best_fit": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "capture_capabilities": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "competitor": {
        +        "type": "string"
        +      },
        +      "pricing_tiers": {
        +        "items": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "name": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "name"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      },
        +      "url": {
        +        "type": "string"
        +      },
        +      "verdict": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "competitor",
        +      "url",
        +      "verdict",
        +      "pricing_tiers",
        +      "capture_capabilities",
        +      "best_fit"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / comparison / properties / detail
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / detail_hint
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / agent_evidence
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "locator": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source_url",
        +    "locator",
        +    "note",
        +    "status"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / billing_unit
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / capture_evidence
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "locator": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source_url",
        +    "locator",
        +    "note",
        +    "status"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / evidence_status
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / plan
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / pricing_evidence
        Added value: +{
        +  "additionalProperties": {},
        +  "properties": {
        +    "locator": {
        +      "type": "string"
        +    },
        +    "note": {
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "type": "string"
        +    },
        +    "status": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source_url",
        +    "locator",
        +    "note",
        +    "status"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / quota_evidence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {},
        +      "properties": {
        +        "locator": {
        +          "type": "string"
        +        },
        +        "note": {
        +          "type": "string"
        +        },
        +        "source_url": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "source_url",
        +        "locator",
        +        "note",
        +        "status"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / quota_note
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / source_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / providers / items / properties / verified_on
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / comparison / properties / providers / items / required
        Previous value: -[
        -  "name",
        -  "per_grab",
        -  "billing",
        -  "included",
        -  "unused_credits",
        -  "features_supported",
        -  "agent_install",
        -  "is_grabbit"
        -]New value: +[
        +  "name",
        +  "plan",
        +  "per_grab",
        +  "billing",
        +  "billing_unit",
        +  "quota_note",
        +  "included",
        +  "unused_credits",
        +  "features_supported",
        +  "agent_install",
        +  "source_url",
        +  "verified_on",
        +  "evidence_status",
        +  "pricing_evidence",
        +  "quota_evidence",
        +  "capture_evidence",
        +  "agent_evidence",
        +  "is_grabbit"
        +]
      • addedOutput schema / properties / comparison / properties / schema_version
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / comparison / properties / sources
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "properties": {
        +      "claim_group": {
        +        "type": "string"
        +      },
        +      "evidence_status": {
        +        "type": "string"
        +      },
        +      "label": {
        +        "type": "string"
        +      },
        +      "locator": {
        +        "type": "string"
        +      },
        +      "note": {
        +        "type": "string"
        +      },
        +      "url": {
        +        "type": "string"
        +      },
        +      "verified_on": {
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "label",
        +      "url",
        +      "locator",
        +      "claim_group",
        +      "verified_on",
        +      "note",
        +      "evidence_status"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / comparison / required
        Previous value: -[
        -  "last_verified",
        -  "features",
        -  "providers",
        -  "notes"
        -]New value: +[
        +  "schema_version",
        +  "last_verified",
        +  "features",
        +  "providers",
        +  "decision_pages",
        +  "agent_surfaces",
        +  "notes"
        +]
      • addedOutput schema / properties / pricing / properties / annual / properties / reset_policy
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / pricing / properties / annual / required
        Previous value: -[
        -  "price_usd",
        -  "credits_per_year"
        -]New value: +[
        +  "price_usd",
        +  "credits_per_year",
        +  "reset_policy"
        +]
      • addedOutput schema / properties / pricing / properties / prepaid_packages / items / properties / reset_policy
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / pricing / properties / prepaid_packages / items / required
        Previous value: -[
        -  "name",
        -  "credits",
        -  "price_usd"
        -]New value: +[
        +  "name",
        +  "credits",
        +  "price_usd",
        +  "reset_policy"
        +]
  2. 5 tool updates
    • Changedget_grab1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "bytes": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Image size in bytes."
        +    },
        +    "created_at": {
        +      "description": "ISO 8601 creation time.",
        +      "type": "string"
        +    },
        +    "credits_remaining": {
        +      "description": "Team credits left after this grab (live keys only).",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "error_message": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Why a failed grab failed."
        +    },
        +    "execution_ms": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Render time in milliseconds."
        +    },
        +    "format": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "png",
        +            "jpeg",
        +            "webp"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Image format."
        +    },
        +    "height": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Viewport height in pixels (3240 in the response for full_page captures)."
        +    },
        +    "id": {
        +      "description": "Grab id.",
        +      "type": "string"
        +    },
        +    "image_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Hosted image URL once status is done (relative for sk_test_ placeholders)."
        +    },
        +    "status": {
        +      "description": "Lifecycle state. Only done grabs have an image_url.",
        +      "enum": [
        +        "pending",
        +        "processing",
        +        "done",
        +        "failed"
        +      ],
        +      "type": "string"
        +    },
        +    "target_url": {
        +      "description": "The captured URL.",
        +      "type": "string"
        +    },
        +    "width": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Viewport width in pixels."
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedget_pricing1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "comparison": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "features": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "last_verified": {
        +          "type": "string"
        +        },
        +        "notes": {
        +          "type": "string"
        +        },
        +        "providers": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "agent_install": {
        +                "type": "string"
        +              },
        +              "billing": {
        +                "type": "string"
        +              },
        +              "features_supported": {
        +                "items": {
        +                  "type": "string"
        +                },
        +                "type": "array"
        +              },
        +              "included": {
        +                "type": "string"
        +              },
        +              "is_grabbit": {
        +                "type": "boolean"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "per_grab": {
        +                "type": "string"
        +              },
        +              "unused_credits": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "per_grab",
        +              "billing",
        +              "included",
        +              "unused_credits",
        +              "features_supported",
        +              "agent_install",
        +              "is_grabbit"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "last_verified",
        +        "features",
        +        "providers",
        +        "notes"
        +      ],
        +      "type": "object"
        +    },
        +    "links": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "pricing": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "annual": {
        +          "additionalProperties": {},
        +          "properties": {
        +            "credits_per_year": {
        +              "maximum": 9007199254740991,
        +              "minimum": -9007199254740991,
        +              "type": "integer"
        +            },
        +            "price_usd": {
        +              "type": "number"
        +            }
        +          },
        +          "required": [
        +            "price_usd",
        +            "credits_per_year"
        +          ],
        +          "type": "object"
        +        },
        +        "billing_model": {
        +          "type": "string"
        +        },
        +        "currency": {
        +          "type": "string"
        +        },
        +        "free_tier": {
        +          "type": "boolean"
        +        },
        +        "per_grab_usd": {
        +          "type": "number"
        +        },
        +        "prepaid_packages": {
        +          "items": {
        +            "additionalProperties": {},
        +            "properties": {
        +              "credits": {
        +                "maximum": 9007199254740991,
        +                "minimum": -9007199254740991,
        +                "type": "integer"
        +              },
        +              "name": {
        +                "type": "string"
        +              },
        +              "price_usd": {
        +                "type": "number"
        +              }
        +            },
        +            "required": [
        +              "name",
        +              "credits",
        +              "price_usd"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "test_mode": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "per_grab_usd",
        +        "currency",
        +        "billing_model",
        +        "free_tier",
        +        "test_mode",
        +        "annual",
        +        "prepaid_packages"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "pricing",
        +    "comparison",
        +    "links"
        +  ],
        +  "type": "object"
        +}
    • Changedget_usage1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "credits": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "prepaid": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "subscription": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "total": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "subscription",
        +        "prepaid",
        +        "total"
        +      ],
        +      "type": "object"
        +    },
        +    "environment": {
        +      "enum": [
        +        "live",
        +        "test"
        +      ],
        +      "type": "string"
        +    },
        +    "plan": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "expires_at": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "name": {
        +          "type": "string"
        +        },
        +        "status": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "name",
        +        "status",
        +        "expires_at"
        +      ],
        +      "type": "object"
        +    },
        +    "top_up": {
        +      "description": "Where to buy more credits.",
        +      "type": "string"
        +    },
        +    "usage": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "grabs_last_30d": {
        +          "description": "All grabs, both environments.",
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        },
        +        "live_grabs_last_30d": {
        +          "maximum": 9007199254740991,
        +          "minimum": -9007199254740991,
        +          "type": "integer"
        +        }
        +      },
        +      "required": [
        +        "grabs_last_30d",
        +        "live_grabs_last_30d"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "credits",
        +    "plan",
        +    "usage",
        +    "environment",
        +    "top_up"
        +  ],
        +  "type": "object"
        +}
    • Changedgrab1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "bytes": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Image size in bytes."
        +    },
        +    "created_at": {
        +      "description": "ISO 8601 creation time.",
        +      "type": "string"
        +    },
        +    "credits_remaining": {
        +      "description": "Team credits left after this grab (live keys only).",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "error_message": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Why a failed grab failed."
        +    },
        +    "execution_ms": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Render time in milliseconds."
        +    },
        +    "format": {
        +      "anyOf": [
        +        {
        +          "enum": [
        +            "png",
        +            "jpeg",
        +            "webp"
        +          ],
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Image format."
        +    },
        +    "height": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Viewport height in pixels (3240 in the response for full_page captures)."
        +    },
        +    "id": {
        +      "description": "Grab id.",
        +      "type": "string"
        +    },
        +    "image_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Hosted image URL once status is done (relative for sk_test_ placeholders)."
        +    },
        +    "status": {
        +      "description": "Lifecycle state. Only done grabs have an image_url.",
        +      "enum": [
        +        "pending",
        +        "processing",
        +        "done",
        +        "failed"
        +      ],
        +      "type": "string"
        +    },
        +    "target_url": {
        +      "description": "The captured URL.",
        +      "type": "string"
        +    },
        +    "width": {
        +      "anyOf": [
        +        {
        +          "maximum": 9007199254740991,
        +          "minimum": 0,
        +          "type": "integer"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ],
        +      "description": "Viewport width in pixels."
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "status"
        +  ],
        +  "type": "object"
        +}
    • Changedlist_grabs1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": {},
        +  "properties": {
        +    "data": {
        +      "items": {
        +        "additionalProperties": {},
        +        "properties": {
        +          "bytes": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Image size in bytes."
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 creation time.",
        +            "type": "string"
        +          },
        +          "error_message": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Why a failed grab failed."
        +          },
        +          "execution_ms": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Render time in milliseconds."
        +          },
        +          "format": {
        +            "anyOf": [
        +              {
        +                "enum": [
        +                  "png",
        +                  "jpeg",
        +                  "webp"
        +                ],
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Image format."
        +          },
        +          "height": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Viewport height in pixels (3240 in the response for full_page captures)."
        +          },
        +          "id": {
        +            "description": "Grab id.",
        +            "type": "string"
        +          },
        +          "image_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Hosted image URL once status is done (relative for sk_test_ placeholders)."
        +          },
        +          "status": {
        +            "description": "Lifecycle state. Only done grabs have an image_url.",
        +            "enum": [
        +              "pending",
        +              "processing",
        +              "done",
        +              "failed"
        +            ],
        +            "type": "string"
        +          },
        +          "target_url": {
        +            "description": "The captured URL.",
        +            "type": "string"
        +          },
        +          "width": {
        +            "anyOf": [
        +              {
        +                "maximum": 9007199254740991,
        +                "minimum": 0,
        +                "type": "integer"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ],
        +            "description": "Viewport width in pixels."
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "status",
        +          "created_at"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "has_more": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "has_more"
        +  ],
        +  "type": "object"
        +}
  3. 5 tool updates
    • First observedget_grab
    • First observedget_pricing
    • First observedget_usage
    • First observedgrab
    • First observedlist_grabs

Publisher details

Operator
BrainGrid ยท Publisher source
Operator website
https://grabbit.live
Vendor relationship
First-party
Trust center
Unknown
Restrictions
Requires a Grabbit account: sign in with OAuth 2.1 or use a Bearer API key. Live grabs are billed per capture from prepaid credits; test keys return free placeholder images for wiring up integrations.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Hosted, SSRF-safe, cached screenshots and Open Graph images for AI agents - no headless Chrome to run.
    34 npm
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Hosted Playwright browser automation for AI agents. Returns accessibility trees instead of screenshots, cutting token usage by 77%. Navigate, interact, extract structured data, and take screenshots โ€” all via MCP. Zero infrastructure, credit-based pricing.
    6
    223 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.