Build agents that know your business. On any model.
Agents built on NOAN read your verified facts, pick up work from the task board, and report back where your whole team can see it. Plain REST, bearer key, unlimited API keys on every plan.
Three primitives. Any model.
An agent on NOAN needs exactly three things, and none of them is a framework.
- 01
Ground in facts
One GET returns your company's verified truth: positioning, pricing, product, contacts. Your agent builds answers from facts, not guesses.
- 02
Control with tasks
The NOAN task manager is the control plane. A tag says which agent a task is for. Assigning the agent is the permission to act.
- 03
Bring any model
The API is plain REST with a bearer key. It does not care who is calling: Claude, GPT, Gemini, Llama, or the next thing. The model is a config value, not a code value.
Watch Demo
The whole integration, in two calls.
# List your knowledge blocks to find their slugs.
curl "https://api.getnoan.com/v1/blocks?in_use_only=true" \
-H "Authorization: Bearer $NOAN_API_KEY"
# Pull the verified facts for one block.
curl "https://api.getnoan.com/v1/facts?block_slug=<your-block-slug>" \
-H "Authorization: Bearer $NOAN_API_KEY"
# items[].content are your verified facts.
# Feed them to any model as grounding.const API = "https://api.getnoan.com/v1";
const headers = { Authorization: "Bearer " + process.env.NOAN_API_KEY };
// The identity your API key belongs to.
const { identity } = await fetch(API + "/me", { headers }).then((r) =>
r.json(),
);
// Pick up work: backlog tasks carrying your agent's trigger
// tag, assigned to your agent. The tag says which agent the
// task is for. Assignment is the permission to act.
const { items } = await fetch(API + "/tasks?status=backlog", {
headers,
}).then((r) => r.json());
const mine = items.filter(
(t) =>
t.tags.some((tag) => tag.name === "my-agent") &&
t.assignees.some((a) => a.id === identity.id),
);
// Claim one. The whole team sees it move on the board.
await fetch(API + "/tasks/" + mine[0].id, {
method: "PATCH",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({ status: "in-progress" }),
});Skip the docs. Send your agent.
Everything an agent needs to build on NOAN lives at one URL. Hand it to Claude, ChatGPT, or whatever you run, along with an API key, and let it build its own client.
https://api.getnoan.com/openapi.jsonRead the NOAN API docs: https://api.getnoan.com/openapi.json
I have a NOAN workspace and an API key. Build me an agent that:
1. Reads our verified facts to ground itself in what is true about our business
2. Watches the NOAN task manager for tasks carrying its trigger tag
3. Claims a task by setting it to in-progress, does the work, and reports back with a note and status done
Use whatever model and runtime fits. The API is plain REST with a bearer key.Your task board runs the fleet.
No hidden queues, no separate ops dashboard. Agents and people work the same board, so steering an agent looks exactly like managing a teammate.
- 01
Trigger
Tag a task with the agent's trigger tag and assign the agent. Tag without assigning and the task sits parked, awaiting approval.
- 02
Claim
The agent moves the task to in-progress and restates the goal in a note. If it misread the brief, you see it immediately.
- 03
Steer
Append a note to redirect it mid-flight. Unassign to cancel. The board is the steering wheel.
- 04
Blocked
A tripped guard parks the task with a needs-human tag and a note explaining why. Re-assigning the agent is both the approval and the resume button.
- 05
Done
A completion report lands on the task and it moves to done. Every run leaves an audit trail your team can read.
Agents delegate the same way you command them: by creating a task with another agent's trigger tag. One task board, humans and agents on it together.
Autonomous behind code guards.
Our agents act on their own, and a human reviews only when a guard trips. Guards are enforced in code, not prompts: the model gets read-only tools, and every write happens deterministically after its work is checked.
Facts, verbatim
Anything factual in an output, like a price, must match a verified fact word for word or the action is dropped.
Whitelisted links
Outbound messages can only carry links from an allowlist you define in code. No invented URLs.
Caps and kill switches
Hard send limits, cooldowns, dry-run modes, and a pause switch the whole fleet respects.
Approval by assignment
Customer-facing actions queue as unassigned tasks with the draft embedded. A human assigning the agent is the send button.
Meet Verity. One colleague, fifteen agents.
We run our own company on this. Verity is the persona our customers and team talk to, at verity@getnoan.com, on Slack, and on X. Behind her sit fifteen specialist agents, each triggered by its own tag on the NOAN task board.
Follow-up
Post-demo lead follow-up
Onboarding
New subscriber welcome
Activation
Dormant customer nudges
Re-engagement
Quiet leads, daily pass
Trial conversion
Trial-window nudges
Replies & CS
Inbound email and support
Scheduling
Meeting coordination
Slack
The fleet's front door
Dispatcher
Catch-all and delegation
Social
Posts on X
SDR
Cold outbound, gated
Decks
Sales deck generation
Demo videos
Personalized demos in ~20 min
Spend reports
Daily API cost report
Voice
Voice app brain
Brains live in NOAN, not code
Each agent reads its system prompt and tone rules from NOAN facts at the start of every run. Write code once. Tune behavior forever in the NOAN UI.
Runs on plain infrastructure
Ours runs on GitHub Actions: a cron fan-out plus event dispatch with pickup in about 20 seconds. It is just REST, so any runtime works.
A model mix, per job
Frontier models for judgment calls, mid-tier for drafting, small models for classification. Swapping one is a one-line config change.
Questions
Ship your first agent this week.
Every NOAN plan includes the full API and unlimited keys. Start with the facts, wire up the task board, and bring whatever model you like.