How AI Agents Discover and Integrate Public APIs Postman's Orbit tool lets developers and AI agents discover and integrate public APIs by describing tasks in plain language, returning callable endpoints with capability evaluations and generating implementation briefs. The author, building a healthcare app, used Orbit's MCP server with Claude to find APIs for calendar checking, appointment writing, and patient emailing, demonstrating the tool's ability to match workflows across multiple services. How AI Agents Discover and Integrate Public APIs The hardest API to integrate is the one you cannot name. You know exactly what the software needs to do: read a calendar, create an event, and send an email when the event is confirmed. What you do not know is which API exposes those capabilities, or whether one API can handle the entire workflow. That turns discovery into a brute-force process. Every candidate becomes its own investigation: find the documentation, map the required capabilities to endpoints, inspect the authentication model, test the constraints, and determine what is missing. Most candidates fail only after you have already invested the time to understand them. Search by intent, not by name Orbit by Postman https://www.buildwithorbit.ai/welcome reverses that process. Instead of starting with an API name, you start with the task. Describe what you want to build in plain language, and Orbit searches for public API endpoints that match the required capabilities. The result is not another list of documentation pages. Orbit returns callable endpoints with an evaluation of what each one supports, what it does not support, and how well it fits the task. That distinction matters. “Calendar API” is a category. “Read events, create an event, and notify the attendee” is an executable workflow. Orbit evaluates APIs against the workflow rather than forcing the developer, or the agent, to infer capabilities from product names and documentation structure. Once you select the endpoints, Orbit’s integration step generates a taskBrief containing the implementation details an agent needs: authentication, base URLs, request parameters, response shapes, execution order, and the gotchas most likely to break the integration. A single brief can include endpoints from multiple APIs, so the calendar and email portions do not need to come from the same provider. Orbit’s usage guide https://www.buildwithorbit.ai/docs/get-started/usage-guide shows this flow across separate services. Orbit can be used through its search and integration endpoints or connected to an AI agent through the Model Context Protocol MCP . Either way, the shift is the same: the agent no longer searches the web, opens five documentation sets, and guesses which APIs fit. It describes the outcome. Orbit finds the interfaces that can produce it. The launch post https://blog.postman.com/introducing-orbit-turn-any-task-into-the-right-api-calls/ has the full tour of both tools if you want to dive deeper. The feature with no obvious API My team is building a healthcare app: patient records, medication, appointments, and scheduling. Booking already works. A patient picks a slot, we POST /api/appointments/ , Postgres gets a record, and the service publishes an appointment.booked event. appointment-slots-service picks that event up and flips the slot to booked . Nothing else happens. The clinician’s calendar never learns about the appointment, and the patient hears nothing from us after the booking screen. That causes two problems. A clinician who blocks time outside the app will get a patient booked over it, because our slots table can’t see that block. And a patient whose only record of the visit is a page they already closed has nothing reminding them to show up. So the feature was clear enough: check the clinician’s calendar before we confirm a slot, write the appointment to that calendar, and email the patient. Three capabilities, and no idea whose API provided them. That’s the question Orbit exists to answer, so I stopped guessing and handed the task to it. Connecting the MCP server First, I connected to the MCP server using Claude: claude mcp add --transport http orbit https://mcp.buildwithorbit.ai/mcp Then, I restarted my session so the schemas load, and the two tools show up as search and integrate : search Find and evaluate public API endpoints that match a plain-language goal. Describe what you need in q ; each result includes id , resourceType , name , description , method , url , and evaluateGuide . Review evaluateGuide to pick the best fit, then pass each chosen result's id and resourceType as type to integrate . No authentication required. integrate Get integration details for public endpoints from search results. Provide a task describing what you want to accomplish and up to 10 resources . Returns a task brief covering authentication, base URLs, request steps, parameters, expected responses, dependencies between steps, and other important considerations. Read the search description again, because it’s doing something clever. It tells the model to review evaluateGuide before choosing, and it names the exact field to carry into integrate . The chaining rule lives in the tool description rather than in my prompt, so the agent runs the two-step workflow without me explaining it. That’s the difference between an MCP server that wraps an API and one that encodes how the API is meant to be used. Searching for an API I couldn’t name I opened the GitHub repo locally, started Claude Code in it, and described the feature the way I’d describe it to a colleague: The appointments service publishes appointment.booked but nothing reaches the clinician's real calendar. Find me an API that can check whether a clinician is free before we confirm a slot. The same session, unedited. Two Orbit search calls, and the endpoint IDs coming back in the response. Note what the agent did to my sentence. I described a product problem, and it sent calendar vocabulary. That translation is the thing that makes or breaks a search here. What came back was the Nylas Calendar API, and two endpoints that answer subtly different versions of my question: | Endpoint | Question it answers | Scope constraint | |---|---|---| POST /v3/grants/{grant id}/calendars/free-busy | “Is this clinician busy between T1 and T2?” Raw busy blocks, with no titles, locations, or descriptions. | Grant-scoped, and every email address has to be on the same provider: all Google or all Microsoft. | POST /v3/calendars/availability | “Which N-minute slots are open across these people?” | Application-scoped, and it only returns availability for addresses already connected to your Nylas app. | I hadn’t gone looking for Nylas https://developer.nylas.com/docs/v3/getting-started/ ; the search surfaced it, which is the whole point. Both paths are scoped to a grant https://developer.nylas.com/docs/v3/getting-started/ , which is one connected mailbox and calendar that a clinic authorizes once through OAuth. A Google clinic and a Microsoft clinic are the same code path with a different grant. Integrating the API Search hands you endpoints. integrate turns them into something an agent can write code against. The call takes two things: the task, in the same plain language I used for search, and the endpoints I picked out of the results. ● orbit - integrate MCP task: "When a patient books an appointment slot in a healthcare app, read the clinician's calendar to check for conflicts, create a calendar event for the visit, and send the patient a confirmation email" resources: - id: urn:orbit:endpoint:v1:1JfnSC668Gw0xjByXOjgh0EA8G3qVd4A…:nylas:return-all-events type: endpoint - id: urn:orbit:endpoint:v1:1JfnSC668Gw0xcUnlXP6gVtFBZ6Qk8nL…:nylas:create-an-event type: endpoint - id: urn:orbit:endpoint:v1:1JfnSC668Gw0yW6A9NI5lL7NJrnkapSj…:nylas:send-a-message type: endpoint What comes back is one taskBrief under five headings: FIT , AUTH , BASE URL , STEPS , and GOTCHAS . The middle two are one line each, and both are things I’d otherwise go find in a docs site: AUTH Bearer authentication for all steps. Send the Nylas API key as Authorization: Bearer