Build automations with Claude Code, Cursor and other AI agents
Callables is built for working with the AI agent you already use. Your automations are ordinary Python in your own repo, so Claude Code, Cursor, Codex or any other agent can write them. Callables adds two things agents need: instructions on how to write a good function, and commands that check and run it with output the agent can read.
Set up your project
In your project's virtualenv:
pip install callables
call init
call init adds an example automation, plus instructions for agents in two places:
- An
AGENTS.mdsection, which Cursor, Codex and most other agents read. - A Claude Code skill in
.claude/skills/callables/.
The instructions cover how type hints become form fields, how return types decide what people see, secrets, files, schedules and the rules that make a deploy fail. Your own files and the rest of AGENTS.md are left alone. Run call init again after upgrading the SDK to refresh them.
Ask for what you want
Describe the automation in plain terms, the way a teammate would ask for it:
Add a Callables function that finds Stripe customers by email and shows their subscriptions as a table. Use the STRIPE_KEY secret. Then add an action on each row to cancel the subscription.
The agent writes the function with typed inputs, a docstring for the description, a return type that shows as a table, and the secret declared instead of hard-coded.
The agent checks its own work
Two commands give the agent a tight loop without deploying anything:
call check --jsonlists every problem a deploy would hit, with a fix for each: an unsupported input type, a missing return annotation, a module that fails to import.call local <name> -i key=value --jsonruns the function on your machine, with the same input validation as the platform, and prints one JSON object with the result or the error.
Because the output is JSON, the agent can read it, fix what's wrong and run again until the function works. You review the change like any other code.
Push to deploy
When it works locally, commit and push. Every push to your branch deploys, so the new function shows up in the web app for your team a minute or two later. If you're connecting the repo for the first time, open New project in the web app and pick it.
Tips
- Keep secrets out of the conversation. Tell the agent the secret's name, and set its value in the web app.
- Ask for messages written for people. The instructions already tell agents to write errors for the person running the function, but it helps to say who that is: "the support team will run this".
- Review the form, not just the code. Parameter names become labels and the docstring becomes the description. Read them as the person who'll use them.
Turn your scripts into tools your team can run
Add @deploy to a Python function and push. Your team gets a form, schedules and run history.