CrewAI
Use Grabbit as a remote MCP tool in CrewAI
CrewAI supports remote HTTP MCP servers through crewai.mcp. Give an agent the configured server, then ask it to capture and inspect a public page.
Prerequisites
From setup to the first capture
- Python with CrewAI 1.15.23
- GRABBIT_API_KEY set by a secret manager
- CREWAI_MODEL plus the matching provider credential, such as OPENAI_API_KEY
- A public target URL
import os
# pip install "crewai==1.15.23"
from crewai import Agent, Crew, Process, Task
from crewai.mcp import MCPServerHTTP
screens = MCPServerHTTP(
url="https://mcp.grabbit.live",
headers={"Authorization": f"Bearer {os.environ['GRABBIT_API_KEY']}"},
streamable=True,
)
reviewer = Agent(
role="Visual QA reviewer",
goal="Capture and inspect deployed pages",
backstory="I verify rendered interfaces.",
llm=os.environ["CREWAI_MODEL"],
mcps=[screens],
)
capture = Task(
description="Capture https://example.com at 1440x900 and report visible layout defects.",
expected_output="The hosted screenshot URL and a short visual QA report.",
agent=reviewer,
)
result = Crew(
agents=[reviewer],
tasks=[capture],
process=Process.sequential,
).kickoff()
print(result)The Bearer header is built at runtime from GRABBIT_API_KEY. The explicit server object keeps the example portable.
A test key returns a placeholder for wiring. The visual check below requires a live key and available credits. Call get_usage before a run when the agent needs to avoid an HTTP 402 interruption.
Call grab and inspect the result
Capture https://example.com at 1440×900. Return the image URL and list any visible layout defects.Expected result
CrewAI discovers the remote MCP tools and can invoke grab. The result includes the capture record and hosted image URL.
Image handling
Adapter and model support varies. Treat image_url as the fallback when an adapter does not pass image blocks to the model.

Troubleshooting
401 or authentication required
Complete the client OAuth flow, or check that the environment variable contains a current sk_ key.
The target URL is rejected
Use a public HTTP or HTTPS URL. Grabbit blocks localhost, private, link-local, and internal network targets.
The image is a placeholder
An sk_test_ key proves the integration without spending credits. Use an sk_live_ key when you need a real render.
402 credits_exhausted
Call get_usage, then add a separately purchased top-up or wait for the next annual subscription grant before retrying.
Security note
Load GRABBIT_API_KEY from the environment or a secret manager. Do not place it in source, task text, or an MCP URL query string.
Hosted screenshots without a browser in the agent runtime
A local headless browser means installing Chromium, keeping its dependencies current, bounding memory use, and handling timeouts. Grabbit runs the screenshot step on hosted rendering infrastructure and returns an image URL.
Local headless browser
- Needs Chromium installed in the agent's runtime
- Cookie and consent handling belongs to your automation
- You own the timeouts, retries, and scaling
- Breaks in CI, sandboxes, and remote runners with no browser
Grabbit
- One call, nothing to install or run
- Dismisses cookie and consent banners automatically
- Handles lazy-loaded, JavaScript-heavy, and full-page captures
- Runs from CI or sandboxes without a local browser install
Grabbit accepts public pages and supports cookie-banner handling, delayed JavaScript, selector targeting, and full-page output. Target sites can still reject automated traffic, and private or internal addresses are blocked.
Flat pricing, built for agents that loop
When an agent captures a page on every step, per-call metering turns into anxiety. Grabbit is one flat rate: $50 per year for 25,000 captures ($0.002 each). Annual subscription credits expire at term end; separately purchased top-ups do not expire while your account remains active. Test-environment keys render placeholders for integration checks. A real page capture needs a live key and available credits.
CrewAI FAQ
- Which CrewAI transport should I use?
- Use MCPServerHTTP with streamable=True for the hosted Streamable HTTP endpoint.
- Will every CrewAI model receive an inline image?
- Do not assume that. image_url works as the fallback when an adapter or model does not pass image blocks through.
Give CrewAI eyes in two minutes
Free wiring test, one install, then your agent can screenshot public pages with a live key.