tRPC Adapter for Inferable

The Inferable tRPC Adapter allows you to expose your existing tRPC router endpoints as Inferable functions. This enables AI agents to interact with your tRPC API while preserving all your existing middleware and type safety.
Installation
npm
npm install @inferable/trpc-adapter
yarn
yarn add @inferable/trpc-adapter
pnpm
pnpm add @inferable/trpc-adapter
Quick Start
Create your tRPC router with the Inferable plugin:
import { inferablePlugin } from "@inferable/trpc-adapter";
const t = initTRPC.create();
const withInferable = inferablePlugin();
const appRouter = t.router({
userById: t.procedure
.unstable_concat(withInferable)
.input(z.object({ id: z.string() }))
.meta({ description: "Fetch a user by their ID" })
.query(({ input }) => {
return users.find((user) => user.id === input.id);
}),
});
Create an Inferable service from your router:
import { createInferableService } from "@inferable/trpc-adapter";
import { Inferable } from "inferable";
const client = new Inferable({
apiSecret: process.env.INFERABLE_API_SECRET,
});
const service = createInferableService({
router: appRouter,
createCaller: t.createCallerFactory(appRouter),
name: "userService",
client,
});
await service.start();
- Your tRPC procedures are now available as Inferable functions!
const result = await client.run({
initialPrompt: "Get the user with id 1",
resultSchema: z.object({
id: z.string(),
name: z.string(),
email: z.string(),
}),
});
Technical Details
The plugin does two things:
- It adds a
meta
field to the procedures with { inferable: { enabled: true } }
. This is used to identify the procedures that should be exposed as Inferable functions.
- It adds a
ctx
field to the tRPC procedure so you can validate the context that's passed by Inferable in your down stream procedures or middleware.
Documentation
Inferable documentation contains all the information you need to get started with Inferable.
Support
For support or questions, please create an issue in the repository.
Contributing
Contributions to the Inferable tRPC Connector are welcome. Please ensure that your code adheres to the existing style and includes appropriate tests.