Automations

Turn a sentence into an authenticated API call — the model works out the parameters, Triplo fires the request.

What an Automation is

An Automation is an HTTP request you have described to Triplo once — a URL, a method, headers, a body — with named parameters left blank. When it runs, the model reads what you wrote, works out the values for those parameters, and Triplo fires the request.

You write "log a lead for Maria Santos at Northwind, she wants the enterprise tier, high priority". Your CRM gets a properly formed record.

The shape of it

How an automation turns a sentence into an API call You write a normal sentence Model extracts parameters as JSON You confirm and can edit values Request sent result in the chat

An Automation performs a real action on a real system. Keep Confirm Automations switched on — it is on by default — so you always see the values before anything is sent.

Creating one Paid plan

How to reach it. Action grid → Automation → Add Automation…. The editor has two steps.

Step 1 — what it does

Function Name *
Distinctive, no spaces needed — CreatePipedriveLead. The model is told this name, so make it describe the action.
Description *
What it does and when to use it. The model reads this to decide what the parameter values should be — this field does real work, so write it carefully.
Parameters *
At least one. Each has a name and a description. The description is the instruction to the model about what to put there.

Step 2 — where it goes

URL *
The endpoint. May contain {{parameter}} placeholders, URL-encoded when substituted.
Method
POST, GET, PUT or DELETE. Defaults to POST.
Headers
A JSON object. Authorisation goes here. Must parse as valid JSON.
Payload
A JSON body, with {{parameter}} placeholders. Ignored for GET and HEAD. The wand button generates a starting payload from your parameters.

Both JSON fields are validated when you save, so a malformed header block is caught in the editor rather than at 2 a.m.

How parameters get filled

This is the part worth understanding, because it explains both the power and the failure modes.

When a prompt carries an Automation, Triplo adds a system message naming the automation, repeating your description, listing every parameter with its description, and instructing the model to reply with only a JSON object mapping parameter names to values — no prose, no code fences.

The model's whole reply for that turn is that JSON. Triplo extracts the object (tolerating a stray code fence or sentence), substitutes the values into your URL, headers and payload, and sends the request.

// You typed: Log a lead for Maria Santos at Northwind Trading, she wants the enterprise tier, high priority, found us via the webinar // The model returned: { "name": "Maria Santos", "company": "Northwind Trading", "interest": "Enterprise tier", "priority": "high", "source": "webinar" }

Substitution is escaping-aware: values placed inside a JSON payload are escaped so quotes and newlines cannot break the document, and values placed in the URL are percent-encoded.

The confirmation step

With Confirm Automations on, a dialog shows every extracted value before anything is sent, and lets you edit them. This is where you catch a misread company name. Cancelling reports back in the chat and sends nothing.

Turning confirmation off makes automations fire silently. Only do that for automations whose effects are trivially reversible.

Why extraction sometimes goes wrong

  • Vague parameter descriptions. "The date" invites any format. "The due date in ISO 8601 format, e.g. 2026-03-14" gets you one.
  • Missing information. If your sentence never mentions a priority, the model guesses. Say what should happen when a value is absent.
  • A chatty model. Smaller models sometimes add an explanation despite being told not to. Triplo strips code fences and surrounding prose, but a model that refuses to emit JSON at all will produce an empty parameter set. Use a more capable model for automations.

Running one

Automations are not invoked by name from the prompt bar. They attach to a SmartPrompt as a Magnet. That is the only way to trigger one.

1
Create the automation

As above. Make sure its toggle is on — an inactive automation never runs.

2
Create or edit a SmartPrompt

Something that describes the input, such as "Log this as a new sales lead."

3
Attach it as a Magnet

In the prompt editor, set the Automation magnet to your automation. Save.

4
Use the prompt

/lead, then your sentence, then Enter. Confirm the values. The result is reported in the chat with its HTTP status.

Give that SmartPrompt a hotkey and the whole thing runs from anywhere: select a paragraph from an email, press the key, confirm, done.

Worked examples

Post to a Slack channel

Name
PostToTeamChannel
Description
Posts a short update to the team's Slack channel. Use for status updates, announcements and handovers.
Parameters
message — the text to post, written in full sentences, under 300 characters, no markdown headings.
URL
https://hooks.slack.com/services/T000/B000/XXXX
Payload { "text": "{{message}}" }

Create a task in a tracker

Name
CreateTask
Description
Creates a task in the engineering backlog from a description of work that needs doing.
Parameters
title — imperative, under 80 characters.
body — context and acceptance criteria, Markdown allowed.
priority — exactly one of: low, medium, high, urgent. Use medium if unclear.
Headers { "Authorization": "Bearer YOUR_TOKEN" } Payload { "title": "{{title}}", "body": "{{body}}", "priority": "{{priority}}" }

Note how priority constrains the model to a fixed set and says what to do when the input is ambiguous. That single line prevents most bad values.

The fallback is not a setting — it is the parameter description you wrote, and the model followed it.

A lookup with GET

For a read, put the parameter in the URL and leave the payload empty:

URL https://api.example.com/customers/search?q={{query}} Method GET

The value is URL-encoded on substitution, so spaces and punctuation are safe.

Limits & gotchas

  • The response is replaced. When an automation is attached, the model's reply is the parameter JSON, not an answer. You see "Captured parameters for …" instead. An automation-carrying SmartPrompt cannot also produce prose for you.
  • One automation per prompt. Chain them by running a second prompt.
  • Responses are truncated to 4,000 characters in the chat. The request still completed in full.
  • Requests are sent from the app, not a browser, so CORS never applies. Your endpoint does not need to allow browser origins.
  • Credentials live in the headers field, stored in a Markdown file in your Documents folder. Anyone with access to your disk can read them. Use scoped tokens with the narrowest permissions that work.
  • Shared automations are read-only. An automation shared from another device — including its headers — cannot be edited until you clone it.
  • Failures are reported, not retried. A non-2xx status shows in the chat with the status code. Run it again after fixing the cause.
  • Test against something harmless first. A request bin or a scratch channel will save you an embarrassing message in a real one.