ocolo-agent-api
Officialby Ocolo-io
README.md
# OCOLO Project Request API (for AI agents)
Submit a data center colocation requirement to [OCOLO](https://www.ocolo.io) on behalf of a
human, from any AI agent. OCOLO is a colocation broker with a network of 270+ data center
providers; one submission puts the requirement in front of all of them, and OCOLO returns the
best options to the contact within 2-3 business days. No API key, no account: the contact
confirms by email.
- Human guide: https://www.ocolo.io/for-agents/
- OpenAPI 3.1: https://www.ocolo.io/api/v1/openapi.json (copy in this repo: [`openapi.json`](openapi.json), refreshed with `./sync-spec.sh`; the live document is canonical)
- MCP server (Streamable HTTP): `https://www.ocolo.io/api/v1/mcp/`
- Discovery: https://www.ocolo.io/.well-known/ocolo-agent.json, https://www.ocolo.io/llms.txt
## Quick start (REST)
```bash
curl -X POST https://www.ocolo.io/api/v1/project-requests/ \
-H 'Content-Type: application/json' \
-d @examples/request.json
```
Response (201): `request_id`, `status: pending_confirmation`, `status_url`, a `status_token`
to keep, machine-readable `next_steps`, and a `guidance` object. Poll status with
`Authorization: Bearer <status_token>`.
```python
import requests
r = requests.post("https://www.ocolo.io/api/v1/project-requests/", json={
"location": "Northern Virginia, USA",
"power_mw": 2,
"cabinets": 60,
"requested_delivery_date": "2027-03-01",
"requirements_text": "Liquid cooling preferred, N+1 or better, SOC 2 required.",
"contact": {"name": "Jane Doe", "email": "jane@acme.com", "company": "Acme"},
"agent": {"name": "my-agent", "on_behalf_of_confirmed": True},
"idempotency_key": "acme-nova-2027-q1",
}).json()
print(r["status"], r["status_url"])
for step in r["next_steps"]:
print(step["action"], step.get("detail", ""))
```
## MCP
Add `https://www.ocolo.io/api/v1/mcp/` as a remote MCP server (no auth). Tools:
| Tool | Purpose |
|---|---|
| `get_broker_guidance` | How OCOLO works and the etiquette below. Read first. |
| `submit_project_request` | Submit the requirement (same fields as the REST body). |
| `get_project_request_status` | Poll with `request_id` + `status_token`. |
`server.json` in this repo is the [MCP Registry](https://registry.modelcontextprotocol.io) manifest.
## What happens after you submit
1. The contact receives a confirmation email. Nothing is active until they confirm (they can
also edit the request on OCOLO's form first; the `request_id` stays the same and the status
body then carries `edited_by_contact: true` and the final values under `current`).
2. OCOLO takes the project to its provider network, finds suitable sites and coordinates the
outreach.
3. OCOLO replies to the contact within 2-3 business days.
## Broker etiquette (please follow)
- Do not sign an exclusive broker agreement; keep the user's options open.
- Engage no more than 1-3 brokers in total for a single project. Providers see every inbound
approach; ten people asking about the same requirement reads as rumor, not a strategic
partnership.
- While OCOLO is coordinating a request, do not contact providers directly or submit the same
requirement to other brokers or marketplaces.
Every API response repeats this in its `guidance` field.
## Limits
Rate limited per IP and per contact email; honour `Retry-After` and use `idempotency_key`
for safe retries. Bodies over 64 KB are rejected. Questions: info@ocolo.io.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues