Dribba

Dribba

Official SDK, CLI, MCP server and agent skills for the Dribba public API — no API key required.

Category
Visit Server

README

dribba

Official SDK and CLI for the Dribba public API.

No API key, no OAuth, no account. Every read endpoint is public. If you were looking for the credentials page, there isn't one — see dribba.com/auth.md.

CLI

Nothing to install:

npx dribba services --table
npx dribba cases --limit 3 | jq -r '.items[].slug'
npx dribba estimate --platforms ios,android --complexity complex
npx dribba ask "flutter migration"
npx dribba markdown /servicios
npx dribba --help

Add --sandbox to hit the frozen fixtures instead of production.

MCP server (stdio bridge)

Dribba's MCP server is remote — Streamable HTTP at https://dribba.com/mcp. If your client only speaks stdio, this package ships the bridge:

{
  "mcpServers": {
    "dribba": { "command": "npx", "args": ["-y", "dribba-mcp"] }
  }
}
npx dribba-mcp            # product surface: 5 tools + llms.txt resources
npx dribba-mcp --docs     # documentation surface: 4 tools

It forwards JSON-RPC and nothing else, so the tools, resources and protocol version are whatever the server declares — there is no second implementation to drift. If your client does speak Streamable HTTP, skip the bridge and point it straight at the URL.

Verified with the official @modelcontextprotocol/sdk over stdio: connect, tools/list, tools/call, resources/list, resources/read.

SDK

npm i dribba        # JavaScript / TypeScript
pip install dribba  # Python 3.9+, same methods, also dependency-free

The Python client lives in python/ and is published to PyPI as dribba.

import { Dribba } from "dribba";

const dribba = new Dribba();

const { items, total, next_cursor } = await dribba.services({ limit: 5 });
const study = await dribba.case("cityxerpa");
const budget = await dribba.estimate({ platforms: ["ios", "android"] });

// Whole collections, following the cursor for you
for await (const job of dribba.paginate("/api/v1/jobs")) {
  console.log(job.title);
}

Errors

Every 4xx/5xx throws a DribbaError. Branch on code — it is stable. title and detail are prose and may be reworded.

import { DribbaError } from "dribba";

try {
  await dribba.service("nope");
} catch (error) {
  if (error instanceof DribbaError && error.code === "resource_not_found") {
    console.log(error.resolution); // what to do next, from the server
  }
}

Rate limits

120 requests per 60 seconds per IP. After any call, dribba.rateLimit holds what the last response advertised, so you can self-throttle instead of provoking a 429:

await dribba.company();
console.log(dribba.rateLimit); // { limit: 120, remaining: 118, reset: 47 }

Sandbox

Frozen fixtures with production shapes. Useful because a test that asserts "there are 9 services" breaks the day we publish the tenth — against the sandbox it does not.

const sandbox = new Dribba({ sandbox: true });
const services = await sandbox.services(); // services.sandbox === true

Idempotency

Idempotency-Key on any POST. Same key and same body replays the stored response; same key with a different body is a 400.

await dribba.estimate(input, { idempotencyKey: crypto.randomUUID() });

Markdown, and the async export

Any page as markdown, and a one-request export of many pages:

const page = await dribba.markdown("/servicios");

const job = await dribba.startExport(["/", "/precios", "/servicios"]);
await dribba.waitForExport(job.id);
const everything = await dribba.exportResult(job.id);

Export jobs live in one server instance's memory and expire after 15 minutes; a 404 while polling means the request reached a different instance, not that the work was lost.

Beyond the REST API

  • MCP — two remote servers over Streamable HTTP, no auth: https://dribba.com/mcp (actions) and https://dribba.com/docs/mcp (docs). See https://dribba.com/developers/mcp.
  • Markdown of any pageAccept: text/markdown, or append .md.
  • The whole site as an OKF bundle.
  • /ask — NLWeb: a natural-language question, verbatim passages back.

Skills and the Agent Plugins manifest

This repo doubles as a portable Agent Plugin:

plugin.json          the manifest
mcp.json             the two remote MCP servers
skills/              seven SKILL.md files describing what dribba.com exposes

Install the skills into your agent:

npx skills add dribbaengineering/dribba

skills/ is generated from what the site serves at https://dribba.com/.well-known/agent-skills/. Edit the site, not the copy — the copy is what drifts.

Requirements

Node 20+. Zero dependencies.

License

MIT. The data behind the API is CC BY 4.0 — cite "Dribba" and link the source URL.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured