Agents call tools
A tool edge attaches any capable node to an agent, and the agent decides when to call it.
Building workflowsDescribe a workflow or wire it on a canvas, connect your apps, APIs and MCP servers, and watch every node report its status live. Any run can be replayed afterwards.
| Node | Status | Streamed |
|---|---|---|
| Ticket In | Succeeded | |
| Customer Lookup | Succeeded | |
| Classifier | Succeeded | |
| Urgent? | Succeeded | |
| Escalation Note | Succeeded | |
| Customer Reply | Skipped | |
| Merge | Succeeded | |
| Result | Succeeded |
Connect the apps you already use, plus any HTTP API and any MCP server.
Scroll, and the demo workflow runs beside you.
A workflow is a versioned JSON graph; the canvas is only its editor. Templates such as {{ nodes.classify.output.urgency }} may reference upstream nodes only.
A tool edge attaches any capable node to an agent, and the agent decides when to call it. Here the classifier looks the customer up before it answers.
The agent returns JSON matching your schema. The If node reads urgency and routes the run; the branch it did not take is marked skipped.
Each run stores the graph it executed, so any past run reopens on a read-only canvas with every input and output intact.
Keys and tokens are encrypted at rest, never returned to the browser, and scrubbed from what a run records.
Three ideas carry the whole system.
A tool edge attaches any capable node to an agent, and the agent decides when to call it.
Building workflowsThe agent returns JSON matching your schema. The If node reads a field and routes the run.
Templates and expressionsEach run stores the graph it executed, so any past run reopens on a read-only canvas.
Execution controlsWrite what should happen in a sentence. You see the draft before anything is created.
When an urgent GitHub issue comes in, check it against open issues, summarise it, and post the summary to #support in Slack.
Connect the apps you use, any HTTP API, or any MCP server. Agents call them by name.
Tokens and keys are encrypted, never sent to the browser, and scrubbed from run records.
Create issue · Comment on issue · List issues · Get repository
Post message · List channels
Search · Create page in database · Append text to page
Create issue · Search issues
Web search · Extract page content
Publishing freezes a version, so editing never changes what production runs.
curl https://api.novalink.live/v1/workflows/WORKFLOW_ID/runs \
-H "Authorization: Bearer $NOVALINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"message": "Refund the double charge on my renewal"
}
}'{
"run_id": "f2a9c4d1-6b3e-4a52-9c77-0e1d8b5a3f42",
"status": "succeeded",
"output": { "note": "Refund issued and confirmed with the customer." },
"total_tokens": 1183,
"duration_ms": 2410
}Each one works as a step, or as a tool an agent can call.
Read the node referenceWhat Novalink does, what it runs on, and what happens to your keys.
Describe it or start from a blank canvas. Logic-only workflows run without any key; add an Anthropic credential when you reach for an agent.