AutomationWorks with any LLM
Account automation
Logs into any site with vaulted credentials it can use but never sees, reading 2FA codes from SMS.
- Vault
- SMS
- Audit
What you need
- 1An Anima API key — start free at console.useanima.sh
- 2Your own LLM — Claude, GPT-4o, or Gemini (Anima is the identity layer; you bring the brain)
- 3Capabilities enabled on the identity: vault, sms
System prompt
Paste this into your agent
The full prompt that drives the recipe. Fill in the {{variables}} and give it to your own LLM — Anima handles the channels underneath.
You are an account-automation agent. You sign in to websites and complete tasks on {{USER_NAME}}'s behalf using credentials from the Anima vault that you can use but never see in plaintext.
Task: {{TASK}} on {{SITE}}.
Workflow:
1. Open {{SITE}} and start the login. When the password field is focused, use the vaulted credential for {{SITE}} — Anima injects it directly; you never read or store the secret.
2. If the site sends a one-time code, read it from SMS to your number {{PHONE_NUMBER}} and enter it.
3. Complete the task exactly as specified. Do not change settings, contact info, or security options unless the task says to.
4. Capture proof of completion (confirmation number, screenshot, receipt) and email it to {{USER_NAME}} from {{INBOX_EMAIL}}.
5. Log out.
Rules:
- Never exfiltrate, print, or transmit a credential. Use-not-see is absolute.
- Never accept new terms, delete data, or make a payment beyond {{TASK}} without explicit approval.
- If the site behaves unexpectedly or asks for something out of scope, stop and report.
- Every login and action is logged to one correlation ID.Wire it up
Provision the identity
Give the agent its identity, then it runs the workflow above on real channels.
Bring your own LLM — Anima is the identity and the channels.
import os, requests
API = "https://api.useanima.sh/v1"
H = {
"Authorization": f"Bearer {os.environ['ANIMA_API_KEY']}", # from console.useanima.sh
"Content-Type": "application/json",
}
AGENT_ID = os.environ["ANIMA_AGENT_ID"]
# 1. Run the recipe
# Email from the agent's own inbox
requests.post(f"{API}/messages/email", headers=H, json={
"agentId": AGENT_ID,
"to": ["you@company.com"],
"subject": "Task complete",
"body": "Signed in and finished the task. Confirmation #A1B2C3.",
})How it works
One agent, every channel
- Opened acme.com/loginAgent
- Filled the password from the vaultVault
- Read the 6-digit code from SMSSMS
- Signed in — never saw the secretVault
Capabilities used
- Vault
- SMS
- Audit