the previous a number of months, I’ve had the chance to immerse myself within the process of adapting APIs and backend programs for consumption by LLMs, particularly brokers utilizing the MCP protocol. Initially, I anticipated the expertise to be no completely different than another comparable growth tasks I’ve performed prior to now. I used to be fascinated to find, nonetheless, that these autonomous purchasers are a brand new sort of creature. Consequently, evolving APIs to yield essentially the most worth from agent interplay required greater than merely making them accessible.
This publish is a results of my experimentations and subject testing, hopefully it may be helpful to different practitioners.
The facility and curse of autonomy
We builders are used to Third-party instruments and automation processes interacting with the applying APIs. Our interfaces have subsequently advanced round finest practices that finest assist these use circumstances. Transactional, versioned, contract-driven APIs, minded to implement ahead/backward compatibility and constructed for effectivity. These are all vital issues which might be secondary in precedence and sometimes merely irrelevant when contemplating the autonomous consumer.
With brokers as purchasers, there is no such thing as a want to fret about backward/ahead compatibility as every session is stateless and distinctive. The mannequin will research use instruments every time it discovers them, arriving on the proper mixture of API calls to realize its goal. As enthusiastic as this agent could also be, nonetheless, it can additionally surrender after a couple of failed makes an attempt until given correct incentive and tips.
Extra importantly, with out such clues it might succeed within the API name however fail to fulfill its aims. Not like scripted automations or skilled builders, it solely has the API documentation and responses to go on in planning out meet its targets. The dynamic nature of its response is each a blessing and a curse as these two sources are additionally the sum of information it will possibly draw upon to be efficient.
Dialog-Pushed APIs
I had first realized that the agent would require a unique sort of design whereas troubleshooting some circumstances by which the agent was not capable of get to the specified outcomes. I supplied MCP software entry to an API that gives utilization data for any code operate primarily based on tracing information. Typically it appeared the agent was merely not utilizing it accurately. Trying extra carefully on the interplay, it appeared that the mannequin was accurately calling the software and for numerous causes obtained an empty array as a response. This conduct can be 100% right for any comparable operation in our API.
The agent, nonetheless, had bother comprehending why this was taking place. After making an attempt a couple of easy variations, it gave up and determined to maneuver on to different avenues of exploration. To me, that interplay spelled out a missed alternative. Nobody was at fault; transactionally, the conduct was right. The entire related exams would cross, however in measuring the effectiveness of utilizing this API, we discovered the ‘success price’ was ridiculously low.
The answer turned out to be a easy one, as a substitute of returning an empty response, I made a decision to supply a extra detailed set of directions and concepts:
var emptyResult = new NoDataFoundResponse()
{
Message = @"There was no information discovered primarily based on the standards despatched.
This might imply that the code isn't known as, or that it isn't manually instrumented
utilizing OTEL annotations.",
SuggestedNextSteps = @"Urged steps:
1. Seek for endpoints (http, customers, jobs and so forth.) that use this operate.
Endpoints are often routinely instrumented with OTEL spans by the
libraries utilizing them.
2. Attempt calling this software utilizing the strategy and sophistication of the endpoint
itself or use the GetTraceForEndpoint software with the endpoint route.
3. Counsel handbook instrumentation for the particular technique relying on the language used within the venture
and the present model of instrumentation used (annotations, code and so forth.)"
};
As a substitute of simply returning the outcomes to the agent, I used to be making an attempt to do one thing brokers will usually try as properly — preserve the dialog going. My perceptions of API responses, subsequently, modified. When being consumed by LLMs, past serving purposeful functions, they’re, in essence, a reverse immediate. An ended interplay is a lifeless finish, nonetheless, any information we return again to the agent offers it an opportunity to drag on one other thread in its investigative course of.
HATEOAS, the ‘select your individual journey’ APIs

Excited about the philosophy of this strategy, I spotted that there was one thing vaguely acquainted about it. A very long time in the past, after I was taking my first steps crafting trendy REST APIs, I used to be launched to the idea of hypermedia APIs and HATEOAS: Hypertext As Engine of the Software State. The idea was outlined by Fielding in his seminal 2008 weblog publish REST APIs must be hypertext-driven. One sentence in that publish utterly blew my thoughts on the time:
“Software state transitions have to be pushed by consumer choice of server-provided selections which might be current within the obtained representations”
In different phrases, the server can educate the consumer what to do subsequent as a substitute of merely sending again the requested information. The canonical instance is a straightforward GET request for a particular useful resource, whereby the response offers data on actions the consumer can take subsequent on that useful resource. A self-documenting API the place the consumer was not required to know something about it forward of time besides a single entry level from which a department of selections emerges. Right here is an efficient instance from the Wikipedia page:
HTTP/1.1 200 OK
{
"account": {
"account_number": 12345,
"stability": {
"foreign money": "usd",
"worth": 100.00
},
"hyperlinks": {
"deposits": "/accounts/12345/deposits",
"withdrawals": "/accounts/12345/withdrawals",
"transfers": "/accounts/12345/transfers",
"close-requests": "/accounts/12345/close-requests"
}
}
}
On the time, I used to be fascinated by this idea, which jogged my memory of what’s generally known as ‘select your individual journey’ books or ‘gamebooks’. This style of books, an inseparable a part of my childhood, didn’t merely relay a narrative (or present an API response by this metaphor), but additionally gave the reader a key as to what are the subsequent set set of choices obtainable to it. Hypermedia REST APIs had been self-documenting and supplied customers a strategy to perceive the state of the applying and the operations obtainable for every entity or course of useful resource with out having to learn by way of in depth documentation.
Hypermedia on steroids
A technique to have a look at Hypermedia APIs is that they supply extra context to the consumer as part of the response. Context, to brokers, is every thing, and it actually doesn’t must cease with obtainable choices or operation. An API is an interplay level by which context will be relayed and supplied in a type that will encourage additional interplay. Let’s check out one other instance!
One other software I used to be engaged on, permits the mannequin to retrieve runtime points discovered within the deployment setting, once more primarily based on observability information. The precise consequence I used to be testing immediate response for, was an anomaly discovered within the efficiency of a particular endpoint. It appears that evidently at instances responses had been EXTREMELY sluggish, ~70X slower than the median. Offering that data piece to the LLM was useful, however in the end didn’t accomplish greater than easy repeats of the information supplied.
For reference, right here is the response supplied, in addition to the agent output:
{
"Identify": "Efficiency Anomaly",
"Class": "Efficiency",
"P50":
{
"Worth": 12.33,
"Unit": "ms",
"Uncooked": 12331700.0
},
"P95":
{
"Worth": 909.62,
"Unit": "ms",
"Uncooked": 909625000.0
},
"SlowerByPercentage": 7376.314701136097,
"SpanInfo":
{
....
},
#extra information
....
}

There’s nothing functionally improper with the API response or the way in which the knowledge was mediated to the consumer by the agent. The one downside is that there’s a lot of context and concepts lacking from it that might leverage the agent’s potential to take that dialog ahead. In different phrases, it is a conventional API request/response interplay, however brokers by way of reasoning are able to a lot extra. Let’s see what occurs if we modify our API to inject extra state and options to attempt to carry the dialog ahead:
{
"_recommendation":
"This asset's P95 (slowest 5%) length is disproportionally sluggish
in comparison with the median to an extreme diploma
Listed below are some steered investigative subsequent steps to get to the
root trigger or right the difficulty:
1. The difficulty contains instance traces for each the P95 and median
length, get each traces and evaluate them discover out which asset
or belongings are those which might be abnormally sluggish typically
2. Verify the efficiency graphs for this asset P95 and see if there
has been a change lately, in that case examine for pull requests
merged round that point which may be relevan tot his space
3. Verify for fruther clues within the sluggish traces, for instance perhaps
ALL spans of the identical sort are sluggish at the moment interval indicating
a scientific situation"
"Identify": "Efficiency Anomaly",
"Class": "Efficiency",
"P50":
{
...
},
#extra information
All we’ve performed is give the AI mannequin a bit extra to go on. As a substitute of merely returning the consequence, we will feed the mannequin with concepts on use the knowledge supplied to it. Absolutely sufficient, these options are instantly put to make use of. This time, the agent continues to analyze the issue by calling different instruments to examine the conduct, evaluate the traces and perceive the issue lineage:

With the brand new data in place, the agent is completely happy to proceed the exploration, study the timeline and synthesize the outcomes from the varied instruments till it comes up with new information, that was under no circumstances a part of the unique response scope:

Wait… Shouldn’t all APIs be designed like that?
Completely! I positively imagine that this strategy may benefit customers, automation builders, and everybody else — even when they use brains for reasoning moderately than LLM fashions. In essence, a conversation-driven API can increase the context past the realm of knowledge and into the realm of prospects. Opening up extra branches of exploration for brokers and customers alike and bettering the effectiveness of APIs in fixing the underlying use case.
There’s positively extra room for evolution. For instance, the hints and concepts supplied to the consumer by the API in our instance had been static, what in the event that they had been AI-generated as properly? There are various completely different A2A fashions on the market, however in some unspecified time in the future, it might simply be a backend system and a consumer brainstorming about what the information means and what may very well be performed to grasp it higher. As for the consumer? Overlook about him, discuss to his agent.

