Agent tool calls
An HTTP relay for AI agents that fetch URLs
An agent that can call arbitrary URLs is an agent that can be talked into calling your metadata service. Backfire puts a guard, a key and a log between the model and the network, so a tool call is a bounded act rather than a blind fetch.
Where it goes wrong
Tool-calling models routinely invent URLs, follow instructions found inside fetched pages, and retry aggressively. Handing that loop a raw fetch() with no allow-listing means every prompt injection is a potential interior network scan.
What Backfire handles
- Non-public ranges are refused before any connection is opened, on IPv4 and IPv6.
- Ambiguous DNS fails closed instead of guessing which address to trust.
- Redirects are returned, never followed — the model cannot hop somewhere else silently.
- Every tool call is logged with its target, status, byte counts and duration for replay and review.
The request
example
// give the model exactly one outbound tool
const res = await fetch('https://backfireapi.base44.app/functions/forward', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.BACKFIRE_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: toolCall.args.url,
method: 'GET',
timeout_ms: 8000,
}),
});
const envelope = await res.json();
if (!envelope.ok) return { error: envelope.error.code };
return { status: envelope.upstream.status, body: envelope.body };All use cases
Questions about this
Keep reading
Try it with 5,000 free trips.
No card, no subscription, and the balance never expires.

