Skip to main content
Glama

dribba

SDK oficial y CLI para la API pública de Dribba.

Sin clave de API, sin OAuth, sin cuenta. Cada endpoint de lectura es público. Si buscabas las credenciales, no existen — consulta dribba.com/auth.md.

CLI

Nada que instalar:

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

Añade --sandbox para usar los fixtures congelados en lugar de producción.

Related MCP server: local-skills-mcp

Servidor MCP (puente stdio)

El servidor MCP de Dribba es remoto — HTTP Streamable en https://dribba.com/mcp. Si tu cliente solo habla stdio, este paquete incluye el puente:

{
  "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

Reenvía JSON-RPC y nada más, así que las herramientas, los recursos y la versión del protocolo son los que declare el servidor — no hay una segunda implementación que pueda desviarse. Si tu cliente sí habla HTTP Streamable, omite el puente y apunta directamente a la URL.

Verificado con el @modelcontextprotocol/sdk oficial sobre stdio: conecta, 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

El cliente Python vive en python/ y se publica en PyPI como 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);
}

Errores

Cualquier 4xx/5xx lanza un DribbaError. Usa code para ramificar — es estable. title y detail son prosa y pueden reformularse.

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
  }
}

Límites de velocidad

120 solicitudes por 60 segundos por IP. Tras cualquier llamada, dribba.rateLimit contiene lo que respondió la última respuesta, así que puedes auto-regular tu ritmo en lugar de provocar un 429:

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

Sandbox

Fixtures congelados con las mismas formas que producción. Útil porque una prueba que afirma "hay 9 servicios" se rompe el día que publiquemos el décimo — contra el sandbox no se rompe.

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

Idempotencia

Idempotency-Key en cualquier POST. Misma clave y mismo cuerpo reproducen la respuesta almacenada; misma clave con un cuerpo diferente devuelve un 400.

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

Markdown y exportación asíncrona

Cualquier página como markdown, y una exportación de muchas páginas en una sola solicitud:

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);

Los trabajos de exportación viven en la memoria de una única instancia del servidor y caducan tras 15 minutos; un 404 al consultar significa que la solicitud llegó a una instancia diferente, no que el trabajo se haya perdido.

Más allá de la API REST

  • MCP — dos servidores remotos sobre HTTP Streamable, sin autenticación: https://dribba.com/mcp (acciones) y https://dribba.com/docs/mcp (documentación). Consulta https://dribba.com/developers/mcp.

  • Markdown de cualquier página — Accept: text/markdown, o añade .md.

  • El sitio completo como un paquete OKF.

  • /ask — NLWeb: una pregunta en lenguaje natural, pasajes textuales como respuesta.

Skills y el manifiesto de complementos de Agent

Este repositorio funciona también como un Agent Plugin portátil:

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

Instala las skills en tu agente:

npx skills add dribbaengineering/dribba

skills/ se genera a partir de lo que el sitio sirve en https://dribba.com/.well-known/agent-skills/. Edita el sitio, no la copia — la copia es lo que se desactualiza.

Requisitos

Node 20+. Cero dependencias.

Licencia

MIT. Los datos detrás de la API son CC BY 4.0 — cita "Dribba" y enlaza la URL de la fuente.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A powerful MCP server that brings the skills.sh ecosystem directly to your AI agents, enabling effortless discovery, installation, and management of skills.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready MCP server that gives an LLM agent standalone-equivalent control over a Mineflayer Minecraft bot — movement, mining, crafting, inventory, combat, containers, chat, and much more — exposed as 110 strongly-typed tools across 23 groups, with full bot lifecycle management and dual (poll + push) event streaming.
    97 npm
    4
    MIT