QueryInbox

Consola de Búsqueda de Google y Google Analytics de solo lectura para agentes de IA. Un único endpoint MCP remoto expone métodos nativos de GSC, datos de GA4 y administración de GA4.

Servidor MCP alojado

npx add-mcp 'https://queryinbox.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

[

MCP

Servidor MCP alojado para cualquier cliente que acepte una URL. Nada que instalar.

Conectar vía MCP →

](#mcp)[

Habilidad para agentes

Para agentes que ejecutan comandos de shell y leen un SKILL.md, con o sin MCP.

Instalar la habilidad →

](#skill)[

API REST

La capa HTTP simple debajo de ambos. Para scripts, servicios y herramientas personalizadas.

Llamar a la API →

](#rest-api)

Crear una clave

Abre QueryInbox, ve a Configuración → Acceso de agentes y haz clic en Crear clave. La clave tiene el formato qi_AbCdEfGh.… y se muestra una sola vez: cópiala antes de cerrar el panel. Puedes crear varias claves (una por portátil, una por agente) y revocar cada una por separado.

MCP

QueryInbox sirve MCP directamente en https://queryinbox.com/mcp (HTTP Streamable, sin sesión). Una URL y un encabezado son toda la configuración: nada que instalar, y los cambios llegan con la aplicación.

Esta página es la guía de configuración. Para saber qué expone el servidor en cada producto de Google — los límites que encontrarás y las preguntas que vale la pena hacer — consulta las páginas de Search Console y Google Analytics.

Claude Code

claude mcp add --transport http queryinbox https://queryinbox.com/mcp \
  --header "Authorization: Bearer qi_..."

Codex

Codex solo lee el token de portador desde una variable de entorno, así que exporta la clave primero:

export QUERYINBOX_API_KEY=qi_...
codex mcp add queryinbox --url https://queryinbox.com/mcp \
  --bearer-token-env-var QUERYINBOX_API_KEY

Cursor

Añade esto a ~/.cursor/mcp.json, o .cursor/mcp.json en un proyecto:

{
  "mcpServers": {
    "queryinbox": {
      "url": "https://queryinbox.com/mcp",
      "headers": { "Authorization": "Bearer qi_..." }
    }
  }
}

opencode

Añade un servidor remoto a opencode.json (proyecto) o ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "queryinbox": {
      "type": "remote",
      "url": "https://queryinbox.com/mcp",
      "headers": { "Authorization": "Bearer {env:QUERYINBOX_API_KEY}" }
    }
  }
}

pi

MCP está integrado en pi 0.99.0 y versiones posteriores. El servidor se guarda en ~/.pi/agent/mcp.json; añade -l para escribir .pi/mcp.json para el proyecto actual en su lugar:

pi mcp add queryinbox --url https://queryinbox.com/mcp \
  --header "Authorization=Bearer qi_..."

Otros clientes remotos

Cualquier cliente que acepte una URL y encabezados funciona de la misma manera — nuevas versiones de Claude Desktop, plugins de IDE:

{
  "mcpServers": {
    "queryinbox": {
      "url": "https://queryinbox.com/mcp",
      "headers": { "Authorization": "Bearer qi_..." }
    }
  }
}

Clientes que solo hablan stdio

Conecta el endpoint remoto con el paquete comunitario mcp-remote:

npx -y mcp-remote https://queryinbox.com/mcp \
  --header "Authorization: Bearer qi_..."

Herramientas

HerramientaQué hace
list_resourcesLista las propiedades de Search Console y de Analytics que esta cuenta de QueryInbox puede leer, además del conjunto de trabajo actual del usuario. Una sola llamada que cubre ambas APIs de Google; úsala antes de elegir un sitio o propiedad.
gsc_apiEjecuta cualquier método de solo lectura de Google Search Console. Pasa el nombre nativo del método junto con los campos de solicitud nativos de ese método; todo excepto method y site se reenvía a Google sin cambios (los campos POST se convierten en el cuerpo JSON, los campos GET en la cadena de consulta). Métodos: sites.list, sites.get, sitemaps.list, sitemaps.get, searchanalytics.query, urlInspection.index.inspect. Devuelve la carga útil cruda de Google bajo data. Los datos de Search Console tienen un retraso de 2-3 días. Llama a api_reference para los parámetros y ten en cuenta la cuota de inspección de URL (2,000/día por propiedad).
ga4_dataEjecuta cualquier método de solo lectura de la API de datos de Google Analytics. Pasa el nombre nativo del método junto con el cuerpo de solicitud nativo de ese método (dateRanges, dimensions: [{name}], metrics: [{name}], filters,...); todo excepto method y property se reenvía sin cambios. Métodos: properties.runReport, properties.batchRunReports, properties.runPivotReport, properties.batchRunPivotReports, properties.runRealtimeReport, properties.checkCompatibility, properties.getMetadata, properties.runFunnelReport (alpha), properties.getPropertyQuotasSnapshot (alpha). Devuelve la carga útil cruda de Google bajo data. Usa properties.getMetadata para descubrir nombres de dimensiones y métricas.
ga4_adminEjecuta cualquier método de solo lectura de la API de administración de Google Analytics: descubrimiento de cuentas y propiedades, flujos de datos, eventos clave, eventos de conversión, dimensiones personalizadas y métricas personalizadas. Estos explican qué significan las dimensiones y métricas de los informes (por ejemplo, qué evento cuenta una métrica de keyEvents). Pasa el nombre nativo del método junto con los campos de solicitud nativos; todo excepto method, property y account se reenvía sin cambios. Devuelve la carga útil cruda de Google bajo data.
api_referenceLa referencia generada para gsc_api, ga4_data y ga4_admin: cada método disponible, su ruta, parámetros, notas y las cuotas de Google. Llámala antes de usar un método desconocido o cuando un nombre de método sea rechazado.

Habilidad para agentes

Para cualquier agente que ejecute comandos de shell y lea un SKILL.md. La habilidad enseña al agente las llamadas REST que MCP envuelve, y la clave sigue siendo el único secreto que necesita.

Instalación

La habilidad se sirve en /skills/queryinbox y su referencia de métodos generada en /skills/queryinbox/reference — ábrelas en el navegador primero si quieres, luego instala ambas en el directorio de habilidades de tu plataforma:

# pi
mkdir -p ~/.pi/agent/skills/queryinbox
curl -fsSL https://queryinbox.com/skills/queryinbox \
  -o ~/.pi/agent/skills/queryinbox/SKILL.md
curl -fsSL https://queryinbox.com/skills/queryinbox/reference \
  -o ~/.pi/agent/skills/queryinbox/reference.md

# Claude Code
mkdir -p ~/.claude/skills/queryinbox
curl -fsSL https://queryinbox.com/skills/queryinbox \
  -o ~/.claude/skills/queryinbox/SKILL.md
curl -fsSL https://queryinbox.com/skills/queryinbox/reference \
  -o ~/.claude/skills/queryinbox/reference.md

# other harnesses that read the shared skills directory
mkdir -p ~/.agents/skills/queryinbox
curl -fsSL https://queryinbox.com/skills/queryinbox \
  -o ~/.agents/skills/queryinbox/SKILL.md
curl -fsSL https://queryinbox.com/skills/queryinbox/reference \
  -o ~/.agents/skills/queryinbox/reference.md

Actualizar la habilidad más tarde es el mismo par de curls.

Almacenamiento de la clave

La habilidad lee QUERYINBOX_API_KEY cuando está configurada y recurre a un archivo, así que la clave sigue funcionando entre terminales y agentes lanzados desde la interfaz gráfica sin tocar tu perfil de shell:

mkdir -p ~/.config/queryinbox
printf '%s\n' 'qi_...' > ~/.config/queryinbox/api-key
chmod 600 ~/.config/queryinbox/api-key

¿Prefieres una variable de entorno? Hazla persistente en lugar de exportarla por shell: macOS/zsh ~/.zshrc, Linux/bash ~/.bashrc, fish set -Ux, Windows PowerShell setx, o la configuración de entorno de tu propia plataforma (para Claude Code, el bloque env en ~/.claude/settings.json).

API REST

MCP es un envoltorio alrededor de estos endpoints, y la habilidad los documenta. Hay una ruta por API de Google; method nombra el endpoint a llamar y cada otro campo es la solicitud nativa de ese endpoint — los campos POST se convierten en el cuerpo JSON, los campos GET en la cadena de consulta. Envía la clave como token de portador; el selector site o property acepta un valor completo o una subcadena única y se resuelve antes de la llamada.

curl -s https://queryinbox.com/api/agent/resources \
  -H "Authorization: Bearer $QUERYINBOX_API_KEY"

curl -s https://queryinbox.com/api/agent/gsc \
  -H "Authorization: Bearer $QUERYINBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method":"searchanalytics.query","site":"example.com",
       "startDate":"2026-09-01","endDate":"2026-09-28",
       "dimensions":["query"],"rowLimit":20}'

curl -s https://queryinbox.com/api/agent/ga4 \
  -H "Authorization: Bearer $QUERYINBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method":"properties.runReport","property":"example.com",
       "dateRanges":[{"startDate":"2026-09-01","endDate":"2026-09-28"}],
       "dimensions":[{"name":"date"}],
       "metrics":[{"name":"sessions"},{"name":"activeUsers"}]}'

También disponible: POST /api/agent/ga4/admin para configuración de propiedades y metadatos (flujos de datos, eventos clave, dimensiones personalizadas), y POST /api/agent/reference para la lista completa de métodos con parámetros y cuotas.

Errores

HTTPCódigoSignificado
400invalid_requestEl cuerpo está mal formado o falta un campo obligatorio ( method, o el selector que necesita un método)
400method_not_availableEl método no forma parte de la superficie de solo lectura (escrituras, configuración de cuentas o exportaciones que crean estado)
401invalid_api_keyLa clave es incorrecta o fue revocada — crea una nueva en Configuración
404site_not_found, site_ambiguous, property_not_found, property_ambiguousLos selectores no coincidieron con nada o con varios recursos; el cuerpo lista los candidatos
409reauth_requiredLa clave está bien, pero la autorización subyacente de Google expiró o fue revocada. Inicia sesión de nuevo en QueryInbox; la respuesta incluye un reauthUrl, y la misma clave sigue funcionando después
429rate_limitedMás de 120 solicitudes por minuto — retrocede
429google_quota_exceededLa cuota propia de Google (por ejemplo, la inspección de URL con 2,000/día por propiedad) — retrocede, respetando retryAfter cuando esté presente
502google_errorGoogle mismo falló o rechazó la consulta

Bueno saber

  • Solo lectura. Una clave puede leer las APIs de lectura de Search Console y Analytics que cubren esos dos alcances; algunos endpoints están deliberadamente excluidos (configuración de cuentas, exportaciones que crean estado). Nunca se escribe nada de vuelta a Google.
  • Las claves no expiran por sí solas. Revócalas en Configuración en cualquier momento, o usa Desconectar Google para eliminar la autorización de Google y todas las claves a la vez.
  • Search Console tiene un retraso de 2–3 días, y el día más reciente está incompleto. Analytics informa por día; un informe en tiempo real (properties.runRealtimeReport) cubre los últimos 30 minutos.
  • El agente nunca ve tu contraseña o tokens de Google — solo esta clave. Revocar la clave corta el acceso de inmediato.