Capabilities
Reach the systems that hold the work.
A health agent is only useful if it can act. Health Loops connects to your endpoints through an allowlisted fetch, gives the model typed tools it cannot invent arguments for, and ships the health reference tools and messaging bindings a health journey needs.
Your systems stay put.
Loops reads from and writes back to the systems you already run. There is no migration and no second record.
Tools are typed.
Every custom tool declares a schema. The model arguments are checked before the tool runs.
Health tools are built in.
Red flags, emergency lines, reference ranges, medicine labels, food data and nearby care are platform calls, not prompts.
One store, one app.
The Shopify app gives a loop products, orders, customers, subscriptions and discounts, and can start a run from a store event.
How it works
The mechanism, in order.
- Pick the route. A built-in health tool, a platform binding, a custom tool, or a direct fetch to one of your allowed hosts.
- Give the model a tool. defineTool names it, describes when to call it and checks its arguments against a TypeBox schema.
- Allow the host. fetch reaches only the hosts listed on the loop. Anything else throws before the request leaves.
- Do it inside a step. The call and its result are saved with the step, so a replay does not book the appointment twice.
- Write back. The result goes to your system, the user record and the run timeline.
import { defineTool, Type } from "@loops/sdk";
export const bookAppointment = defineTool({
name: "book_appointment",
description: "Book a follow-up appointment at the practice",
parameters: Type.Object({
patientId: Type.String(),
date: Type.String({ description: "The day they asked for, as YYYY-MM-DD" }),
}),
execute: async (input) => {
const response = await fetch("https://api.practice.example.com/v1/appointments", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify(input),
});
if (!response.ok) throw new Error(`Booking failed: ${response.status}`);
return response.json();
},
});The specifics
What you get, and where it stops.
Built-in health tools. Emergency and crisis lines, symptom red flags, BMI and vital-sign maths, heart and metabolic risk, medicine labels and South African prices, plain-language health topics, packaged-food lookups and nearby care.
Bindings. ctx.USER for the organisation-wide user store, ctx.FACIAL_SCAN for a phone-camera scan and PDF, ctx.SMS, ctx.WHATSAPP and ctx.EMAIL for messages, and ctx.SHOPIFY for the connected store.
Your endpoints. fetch with any method, inside a step, to an allowlisted host such as api.example.com or *.example.com. Credentials live in encrypted secrets, read as env.NAME.
Shopify. Read and change products, inventory, orders, customers, subscriptions and single-use discounts, within the scopes the merchant approved. Subscription contracts created by another app are not visible.
Where it stops. The model cannot call fetch directly; it can only call the tools you pass it. Loops does not yet consume or serve MCP tools, and there is no marketplace of third-party tools.
Sources
The pages behind these claims.
FAQ
Questions
Can an agent call our own API?
Yes. Add the host to the loop, write a typed tool that calls it with fetch, and the model can use that tool during a turn. The call runs inside a durable step when a workflow makes it.
Do you have native EHR integrations?
The connectors directory lists what is available, including an FHIR API connector and practice systems such as Cliniko and SimplePractice. Connectors are built to the system you use, typically in days, and are not a plugin marketplace.
Can a loop write to Shopify?
Yes, within the scopes the merchant approves: orders and notes, customer tags, inventory reads, subscription pause, resume, skip and cancel, and single-use discount codes.
Do you support MCP?
Not yet. The extensibility route today is the TypeScript SDK, the HTTP trigger API and typed custom tools.
Who holds the API keys?
Your organisation. Secrets are encrypted at rest, shown once, visible only to owners and admins, and read by loop code as environment variables.
Ollie’s agents give wellness guidance. They don’t diagnose or prescribe, and they hand off to a human expert when it matters.
See the mechanism on your own journey.
