Docs de la API de Bidlo

Bidlo da acceso a sus datos del mercado de obra pesada a los agentes mediante un servidor MCP y una REST API. Ambos leen y escriben las mismas colecciones que tu equipo ve en la app, hasta donde permita la clave.
Especificación OpenAPIObtener una clave de API
Contenido

¿Qué le puedo preguntar?

Pregunta con tus propias palabras: un agente convierte la pregunta en una consulta y lee lo que coincide.

“Muéstrame las próximas obras de asfalto en el condado de Bexar.”
Solicitud
MCP tool: documents_query

{
  "collection_id": "Project",
  "filters": [
    { "field_id": "County", "operator": "contains",
      "value": ["<document_id of Bexar County>"] },
    { "field_id": "Bid Date", "operator": "gte", "value": "today" },
    { "field_id": "Type of Work", "operator": "contains",
      "value": "asphalt" }
  ],
  "sorts": [{ "field_id": "Bid Date", "direction": "asc" }],
  "fields": ["Bid Date"]
}
Respuesta
{
  "data": [
    {
      "id": "<document_id>",
      "name": "<job name>",
      "collection_id": "<collection_id>",
      "created_at": "<timestamp>",
      "updated_at": "<timestamp>",
      "fields": {
        "<field_id>": {
          "value": "<bid date>",
          "field_name": "Bid Date",
          "field_type": "date",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 100,
    "collection_id": "<collection_id>",
    "next_cursor": null
  }
}
“Muéstrame una lista de subs de señalamiento precalificados.”
Solicitud
MCP tool: documents_query

{
  "collection_id": "Contractor",
  "filters": [
    { "field_id": "Primary Trade", "operator": "contains",
      "value": ["<document_id of the striping trade>"] },
    { "field_id": "Status", "operator": "contains",
      "value": ["<document_id of the Prequalified option>"] }
  ],
  "fields": ["Phone", "Website"]
}
Respuesta
{
  "data": [
    {
      "id": "<document_id>",
      "name": "<company name>",
      "collection_id": "<collection_id>",
      "created_at": "<timestamp>",
      "updated_at": "<timestamp>",
      "fields": {
        "<field_id>": {
          "value": "<phone>",
          "field_name": "Phone",
          "field_type": "text",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        },
        "<field_id>": {
          "value": "<website>",
          "field_name": "Website",
          "field_type": "text",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 100,
    "collection_id": "<collection_id>",
    "next_cursor": null
  }
}
“¿Qué suelos a menos de 10 millas de este punto tienen un índice de plasticidad mayor a 35?”
Solicitud
MCP tool: documents_query

{
  "collection_id": "Soil Layer",
  "filters": [
    { "field_id": "Plasticity Index", "operator": "gt", "value": 35 },
    { "field_id": "Location", "operator": "within_distance",
      "value": { "lat": 29.4241, "lng": -98.4936,
                 "radiusInMeters": 16093 } }
  ],
  "fields": ["Plasticity Index"]
}
Respuesta
{
  "data": [
    {
      "id": "<document_id>",
      "name": "<soil layer name>",
      "collection_id": "<collection_id>",
      "created_at": "<timestamp>",
      "updated_at": "<timestamp>",
      "fields": {
        "<field_id>": {
          "value": <plasticity index>,
          "field_name": "Plasticity Index",
          "field_type": "number",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 100,
    "collection_id": "<collection_id>",
    "next_cursor": null
  }
}
“¿Quién está en el equipo de estimación de Vantel Heavy Civil?”
Solicitud
MCP tool: documents_query

{
  "collection_id": "People",
  "filters": [
    { "field_id": "Company", "operator": "contains",
      "value": ["<document_id of Vantel Heavy Civil>"] },
    { "field_id": "Dept", "operator": "contains",
      "value": ["<document_id of the Estimating option>"] }
  ],
  "fields": ["Email", "Phone"]
}
Respuesta
{
  "data": [
    {
      "id": "<document_id>",
      "name": "<person’s name>",
      "collection_id": "<collection_id>",
      "created_at": "<timestamp>",
      "updated_at": "<timestamp>",
      "fields": {
        "<field_id>": {
          "value": "<email>",
          "field_name": "Email",
          "field_type": "text",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        },
        "<field_id>": {
          "value": "<phone>",
          "field_name": "Phone",
          "field_type": "text",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 100,
    "collection_id": "<collection_id>",
    "next_cursor": null
  }
}
“Dame todos los precios ofertados de la partida 3076 en el distrito de San Antonio en los últimos tres años.”
Solicitud
MCP tool: documents_query, three calls

1. The jobs
{
  "collection_id": "Project",
  "filters": [
    { "field_id": "District", "operator": "contains",
      "value": ["<document_id of the San Antonio district>"] },
    { "field_id": "Bid Date", "operator": "relative_range",
      "value": { "period": "past", "timeframe": "year", "number": 3 } }
  ]
}

2. Item 3076 on those jobs
{
  "collection_id": "Project Items",
  "filters": [
    { "field_id": "Project", "operator": "contains",
      "value": ["<document_id of each job>"] },
    { "field_id": "Code", "operator": "starts_with", "value": "3076-" }
  ]
}

3. Every bid on those items
{
  "collection_id": "Bid Items",
  "filters": [
    { "field_id": "Project Item", "operator": "contains",
      "value": ["<document_id of each item>"] }
  ],
  "fields": ["Price", "Quantity"]
}
Respuesta
{
  "data": [
    {
      "id": "<document_id>",
      "name": "<bid item name>",
      "collection_id": "<collection_id>",
      "created_at": "<timestamp>",
      "updated_at": "<timestamp>",
      "fields": {
        "<field_id>": {
          "value": <unit price>,
          "field_name": "Price",
          "field_type": "number",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        },
        "<field_id>": {
          "value": <quantity>,
          "field_name": "Quantity",
          "field_type": "number",
          "field_id": "<field_id>",
          "field_value_id": "<field_value_id>"
        }
      }
    }
  ],
  "meta": {
    "page": 1,
    "limit": 100,
    "collection_id": "<collection_id>",
    "next_cursor": null
  }
}

¿Qué datos trae?

Bidlo conserva las licitaciones públicas de obra pesada desde el día en que se anuncia una obra hasta el día en que se adjudica, con las hojas de propuesta, los precios unitarios tal como se ofertaron, los contratistas, las plantas y las agencias que hay detrás. Al 2026-09-08, las tres colecciones más grandes tenían 2,000,000+ partidas, 87,000+ obras y 4,800+ agencias. Ambas vías llegan a todas las colecciones de abajo y a cualquier otra que tu equipo pueda ver, salvo las páginas, los chats y las vistas propios de la app.

CategoríaColecciónQué contiene
ProyectosProjectObras desde el anuncio hasta la adjudicación: propietario, condado, fecha de licitación, valor.
Project ItemsLa hoja de licitación: código, descripción, unidad, cantidad.
Bid ItemsPrecios unitarios tal como se ofertaron, concepto por concepto, por contratista.
Pre-Bid Q&APreguntas antes de una licitación, con las respuestas del propietario.
Change OrdersConceptos pagados en órdenes de cambio tras la adjudicación.
ScopesLos oficios que trabaja una empresa y los que pide un concepto.
FilesPlanos, especificaciones, hojas de licitación y adendas.
ContratistasContractorsCada empresa de un mercado: contratistas principales, subcontratistas, vendedores, proveedores.
FacilitiesDónde operan esas empresas: plantas, bancos de material, patios, oficinas, con coordenadas.
PermitsPermisos tramitados para el trabajo, por condado.
GeologíaSoil AreaUnidades de suelo mapeadas: clasificación, superficie, drenaje, pendiente.
Soil SurveyComponentes de cada área de suelo: profundidad del perfil, profundidad del agua, obstrucciones.
Soil LayerCapas de un perfil de suelo: rango de profundidad, textura, plasticidad.
MercadoAgencyLos propietarios que licitan obra, desde los DOT estatales hasta ciudades y distritos.
CountiesCómo se divide un mercado geográficamente.
MaterialsCategorías estándar que alinean los conceptos entre agencias y libros de especificaciones.

Y muchas más. Todo lo que tu equipo adjunte a una obra, un contratista o una instalación se lee con la misma clave.

¿Cómo se conecta un agente?

Un agente se conecta por MCP: Bidlo corre un servidor streamable HTTP en https://app.bidlo.ai/api/mcp, y un cliente necesita esa URL y un encabezado Authorization con una clave de API de Bidlo.

Claude Desktop, Claude Code y Cursor aceptan la configuración de abajo.

Configuración del cliente
{
  "mcpServers": {
    "bidlo": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.bidlo.ai/api/mcp",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}

Las herramientas dependen de la clave: una clave de solo lectura ve 12 herramientas de lectura, y Acceso completo abre las 34. Servidor MCP detalla todas las herramientas y configuraciones de clientes. Consultar datos detalla los filtros y los órdenes.

¿Hay una REST API?

Sí: https://app.bidlo.ai/api/v1 lee y escribe documentos, colecciones, campos, archivos y comentarios, y lee el historial de campos, con la misma clave y los mismos permisos que el servidor MCP. REST API incluye las rutas y los ejemplos. /openapi.json es la misma API como especificación OpenAPI 3.1.

¿Cómo consigo acceso?

Los datos de Bidlo necesitan una cuenta de Bidlo, y cualquiera puede conseguir una: agenda una llamada, Bidlo prepara tu equipo, y luego un dueño o administrador del equipo crea la clave en Settings → Features → API. Ambas vías usan esa misma clave. Acceso y claves explica los permisos, el vencimiento y la revocación de una clave.

Agenda una llamada

¿Qué puedo construir con ella?

Reportes, alertas y revisiones de precios con una clave que lee, y listas sincronizadas de obras y contratistas con una que también puede editar datos.

Con una clave que lee:

  • Un reporte del mercado del condado. Filtra obras por condado y fecha de licitación, luego suma lo licitado por propietario durante el último año.
  • Un seguimiento de licitaciones. Lee las obras anunciadas desde la última ejecución y publica las nuevas donde las lean tus estimadores.
  • Subs y proveedores cerca de una obra. Filtra instalaciones con within_distance con las coordenadas de la obra para encontrar las plantas, los bancos de material y los patios que puedan atenderla.
  • Una revisión de precios unitarios antes de licitar. Consulta las partidas de obras como la tuya y compara sus precios con la cifra de tu hoja.

Con una clave que también puede editar datos:

  • Tus propios resultados de propuestas. Después de cada licitación, sube tus números desde tu sistema de estimación a la colección propia de tu equipo, junto a las tabulaciones públicas.
  • Actualizaciones de obra. Escribe estatus, fechas y notas en tus obras desde el sistema que ya usan tus gerentes de proyecto.
  • Una lista de contratistas al día. Haz un upsert de tus subs y proveedores por nombre o número de licencia cada noche. Las coincidencias se actualizan y los nuevos se agregan; córrelo primero como prueba.