Skip to navigation

Quickstart guide

View as Markdown

Orbit MCP Server lets you search for and integrate publicly available APIs for any task you want to accomplish. Connect your AI agent to the Orbit MCP Server so your AI agent handles the search-and-integrate flow automatically.

You can also call the Orbit API directly with curl.Your AI agent can use these endpoints to search for and integrate publicly available APIs that fit your task description.

Connect agents to Orbit

Claude

To use the Orbit MCP Server with Claude, run the following command in your terminal:

claude mcp add --transport http orbit https://mcp.buildwithorbit.ai/mcp

Describe your task to Claude, and it automatically searches for and integrates public APIs that fit your task description.

Cursor

Add this to ~/.cursor/mcp.json for global use, or .cursor/mcp.json inside one project:

{
"servers": {
"orbit": {
"url": "https://mcp.buildwithorbit.ai/mcp"
}
}
}

VS Code

Add this to VS Code:

{
"servers": {
"orbit": {
"type": "http",
"url": "https://mcp.buildwithorbit.ai/mcp"
}
}
}

Codex

Add this to Codex:

codex mcp add orbit --url https://mcp.buildwithorbit.ai/mcp

Then describe your task to your connected agent. It automatically searches for and integrates public APIs that fit your task description — no manual search/integrate calls needed.

Orbit skill file

To make sure your agent calls Orbit when you ask it to perform a task, install a Claude Code skill that tells it when to reach for Orbit. Save this as .claude/skills/find-an-api/SKILL.md in your project, or in ~/.claude/skills/find-an-api/SKILL.md to get it everywhere:

---
name: find-an-api
description: Find and integrate a public API using the Orbit MCP server. Use whenever the user wants to add a third-party capability (send an invoice, charge a card, send email, geocode an address, post to Slack) and no endpoint has been chosen yet, or when they name a provider but the request shape is unknown. Search Orbit before writing any integration code from memory, even when the user does not mention Orbit.
allowed-tools: ["mcp__orbit__search", "mcp__orbit__integrate", "Read", "Write", "Edit"]
---
# Find and integrate a public API
Do not write third-party API integration code from memory. Endpoint paths, auth
header names, and required fields are exactly the details that get misremembered,
and the failure arrives as a 400 at runtime instead of an error at author time.
Get them from Orbit, which reads real request schemas.
Run this flow whenever the task needs an API the project doesn't already call.
The user does not have to ask for Orbit by name.
## Step 1: Search
Call `search` with a plain-language description of the task, not a provider name.
- Good: `send an invoice to a customer`
- Worse: `PayPal`
Read the `evaluateGuide` on every result before choosing. It has three parts:
what the endpoint does, what to use it for, and what it does not support. That
last part is what stops you picking an endpoint that looks right and isn't.
## Step 2: Show the candidates before choosing
Present a short table of the top results with provider, method, path, and the
one-line summary, then ask which to use. Do not pick silently. Endpoint selection
is the decision most worth a human glance, and the "Not supported" clause often
rules out the obvious first choice.
If no single endpoint can finish the task, say so and propose the set. Sending an
invoice, for example, requires creating one first.
## Step 3: Integrate
Call `integrate` once with the task description and every endpoint the task needs,
up to 10. Pass each result's `id` verbatim and its `resourceType` as `type`. Never
construct, shorten, or edit an `id`.
Read the returned task brief before writing code, and respect these fields:
- `FIT`: anything other than "Fully" means something is missing. Say what, before
you start. "Partially" usually means state, a trigger, or a value the schemas
don't connect.
- `AUTH`: use the exact header name given. It is frequently not `Authorization`.
- `Threading`: the data dependency between steps. If step 2 threads a value from
step 1, sequence the calls and pass that value through.
- `GOTCHAS`: read every line. Content type, ordering, and idempotency traps live
here.
The brief is generated prose, so the wording changes between identical calls. Read
it as context; never write a string-matching test against it.
## Step 4: Write the code
Follow the brief over your priors. Match the project's existing HTTP client and
error handling. Keep credentials in environment variables, never inline.
If the brief names a credential the user doesn't have yet, stop and tell them
which one to get and which scope it needs.

Use Orbit endpoints with your AI agent

Your AI agent can use the Orbit endpoints to search for and integrate public APIs that fit your task description.

The POST /v1/search endpoint takes a plain language description of the task you want to do and returns a list of public API endpoints with an id and evaluation summary for each endpoint. The evaluation summary assesses how well each API fits the task.

curl -X POST https://api.buildwithorbit.ai/v1/search \
-H "Content-Type: application/json" \
-d '{"q": "Get Current Weather"}'

Integrate

Select the API that fits best and pass its id and resourceType as typeto the POST /v1/integrate endpoint. The integrate endpoint then generates and returns a taskBrief with instructions for how to use the selected API.

curl -X POST https://api.buildwithorbit.ai/v1/integrate \
-H "Content-Type: application/json" \
-d '{
"task": "Build an app to post current weather to Slack",
"resources": [
{ "id": "urn:orbit:endpoint:v1:1OYrNvmw0qAUVtV7jNU3tC3kuCIFbpjpfGZuyexkHTlZg60P7mpN4cYzSm9XW:weatherapi-com:current-weather-json", "type": "endpoint" },
{ "id": "urn:orbit:endpoint:v1:1Jgb5F43F8b9al2a64G1srYRVxJ3SKnSepsgceU9aKzl1nnJeNHWFxEudTUMG:slack:send-message-to-slack", "type": "endpoint" }
]
}'

Examples

In Orbit, put your task description in the q field of the search endpoint.

curl -X POST https://api.buildwithorbit.ai/v1/search \
-H "Content-Type: application/json" \
-d '{"q": "Get Current Weather"}'

You’ll get a list of public API endpoints with an evaluation summary. An abbreviated sample response looks like this:

{
"data": [
{
"id": "urn:orbit:endpoint:v1:1OYrNvmw0qAUVtV7jNU3tC3kuCIFbpjpfGZuyexkHTlZg60P7mpN4cYzSm9XW:weatherapi-com:current-weather-json",
"resourceType": "endpoint",
"name": "Get Current Weather - OpenWeatherMap",
"description": "OpenWeatherMap API provides weather data. This request gets current weather for a city. Replace YOUR_API_KEY with your actual API key from openweathermap.org",
"method": "GET",
"url": "https://api.openweathermap.org/data/2.5/weather?q=London&appid=YOUR_API_KEY",
"evaluateGuide": "Retrieves current weather data for a specified city from OpenWeatherMap. An agent can obtain conditions such as temperature and other weather details using the city and API key parameters. Use for: current weather in London, city weather lookup, temperature retrieval Not supported: forecasts, historical weather, weather alerts"
}
],
"meta": {
"q": "Get Current Weather",
"total": 1
}
}

In the integrate endpoint, describe what you want to do in task. Then copy the selected result’s id and resourceType into the integrate request’s resources array as id and type.

curl -X POST https://api.buildwithorbit.ai/v1/integrate \
-H "Content-Type: application/json" \
-d '{
"task": "Build an app to post current weather to Slack",
"resources": [
{ "id": "urn:orbit:endpoint:v1:1OYrNvmw0qAUVtV7jNU3tC3kuCIFbpjpfGZuyexkHTlZg60P7mpN4cYzSm9XW:weatherapi-com:current-weather-json", "type": "endpoint" },
{ "id": "urn:orbit:endpoint:v1:1Jgb5F43F8b9al2a64G1srYRVxJ3SKnSepsgceU9aKzl1nnJeNHWFxEudTUMG:slack:send-message-to-slack", "type": "endpoint" }
]
}'

The integrate endpoint returns a taskBrief with instructions for how to use the selected API. It also includes a FIT verdict that tells you whether the provided requests fully support the intended task.

{
"data": [
{
"taskBrief": "TASK BRIEF: Two independent calls supporting a weather-to-Slack app: retrieve London weather and post a message to Slack (OpenWeatherMap and Slack Web API)\nFIT\n Fully. The supplied requests provide both capabilities: retrieving current weather and posting a Slack message. The weather request is used to supply the content for the Slack message; no supplied requests are irrelevant.\n\nAUTH\n OpenWeatherMap: API key supplied as the required `appid` query parameter; replace `YOUR_API_KEY` with the actual key.\n Slack: bot token supplied in the `token` form field/header value as `{{bot_token}}`, requiring the `chat:write` scope. The Slack collection also specifies bearer authentication using the same `{{bot_token}}` credential; the request explicitly defines the `token` field.\n\nBASE URL\n https://api.openweathermap.org step 1\n https://slack.com step 2\n\nSTEPS\n 1. GET /data/2.5/weather\n Params:\n q: required string query parameter `London`\n appid: required string query parameter `YOUR_API_KEY` (replace with your OpenWeatherMap API key)\n Returns:\n No saved response example; the request is intended to return current weather data for the specified city.\n Threading:\n None\n\n 2. POST /api/chat.postMessage\n Params (application/x-www-form-urlencoded body):\n token: required string authentication field `{{bot_token}}`\n channel: required string `<string>` or a channel/private-group/IM channel identifier\n text: string message text `test`; replace with the weather summary to post\n Optional disabled fields include `as_user`, `attachments`, `blocks`, `icon_emoji`, `icon_url`, `link_names`, `mrkdwn`, `parse`, `reply_broadcast`, `thread_ts`, `unfurl_links`, `unfurl_media`, and `username`.\n Returns:\n HTTP 200 OK with JSON fields `ok` (boolean), `channel` (string), `ts` (string), and `message` (object). The message example includes `text`, `type`, and `ts`, plus optional attachments and blocks.\n Threading:\n None\n\nGOTCHAS\n - Step 1 uses `appid` in the query string, not an authorization header.\n - Step 2 must use `application/x-www-form-urlencoded`, not JSON."
}
]
}