Atlis Health Admin

Checking access…

Atlis Health — Platform Admin

Architecture Platform architecture for sponsoring orgs
Personas AI Personas for benefits & people teams
← App

Organizations

Loading…

Users

Loading…

Personas

Loading…

Describe what you want to teach the persona

Claude Opus turns your description into knowledge modules and/or playbook phases.

Knowledge modules

Loading…

Persona playbooks

Professional identity + playbook phases drive persona behaviour at chat time.
Loading…

Active trials

Loading…

Subscriptions

Loading…

Usage — last 30 days

Loading…

Send invitations

Each invitee receives an email with a link that signs them in and attaches them to the selected organization. Email domains do not need to match. Up to 100 emails per request.

Recent invitations

Loading…

Conversations

Loading…

Login activity

Loading…

Third-party API keys

Stored in Secrets Manager. Saving rotates the secret and force-recycles atlis Lambdas — in-flight chat streams will end.
Loading…

External APIs

Personas can call a third-party HTTPS endpoint through a signed, principal-bound request.
How a persona calls an external API — read this first

What you are configuring. One row in persona_tools gives one persona one extra tool. When the model decides to call it, the engine POSTs a signed envelope to your HTTPS endpoint and feeds the reply back into the conversation as untrusted data. Three things have to be true before a single call can leave: the tool row exists and is active, the endpoint's hostname is allowlisted for that world, and an HMAC key sits at the secret_ref you name.

Consider sql instead. If the data is already in our own database, a sql-backend tool needs no endpoint, no secret and no allowlist. The external path is for data we do not hold.

What your endpoint receives

POST <your url>
Content-Type: application/json
X-Gen2-Signature: <hex HMAC-SHA256 of the RAW body, key = the secret at secret_ref>
X-Gen2-Timestamp: <unix seconds>

{
  "tool": "lookup_claim_status",
  "args": { ...only the parameters you declare below... },
  "principal": {
    "person_id": "...", "world_id": "...", "role_key": "__NONE__",
    "conversation_id": "...", "persona_name": "Atlis"
  },
  "issued_at": 1754000000
}

What your endpoint must do

  1. Verify the signature first. Recompute HMAC-SHA256(raw_body, secret) and compare in constant time — over the raw bytes, before parsing, not after re-serializing.
  2. Reject stale timestamps. ±5 minutes is typical. This is what bounds replay.
  3. Take identity from principal, never from args. This is the one that matters. principal is built from the authenticated conversation and signed; args is whatever the model produced. An endpoint that reads a user id out of args can be talked into acting as another person — which is why the form below refuses to let you declare one as a parameter.
  4. Answer with JSON, within the timeout and size cap. A non-2xx shows up in the transcript as (persona tool X endpoint returned HTTP N).
  5. Return no instructions. Your reply is fenced as untrusted before it re-enters the prompt, but write it as though the model will try to obey it.

What the engine enforces for you

  • Per-world host allowlist — exact hostname, no wildcards, no ports, no paths. An empty allowlist means nothing can leave, whatever tools exist.
  • https only, and private addresses refused (loopback, RFC1918, CGNAT, link-local including the cloud metadata IP).
  • Connection pinning to a pre-validated address, closing the DNS-rebinding window; redirects refused, so a 302 cannot escape the allowlisted host.
  • Timeout, response-size and per-conversation call caps.
  • Untrusted-data fencing of the reply before it re-enters the prompt.

Why there is no “Save” button

secret_ref names a secret the chat Lambda reads, so whoever writes it can make that Lambda read any secret its role can reach; and input_schema goes straight to the model. Both want review. So the form below validates everything the engine will check and hands you the exact SQL — you run it through the migration Lambda. Full detail: docs/external-api-tools.md.

Loading…

Build a tool

Fill this in and it produces the SQL to review and run. Nothing is written from here.
Parameters become input_schema — the arguments the model may send

QA Scenarios

Drive a persona through a scripted conversation and grade the result.
Loading…

Recent runs

Loading…

Run scenario

This drives a real conversation against this deployment, in its own throwaway test world. A text run costs roughly $2–3 all-in in provider spend and takes 8–10 minutes; a video run costs more and takes longer. Every run you start spends again.

Mode

Models for this run

Leave both on default to run the models the deployment is configured with. An override applies to this run only — the persona's model is changed just inside the run's own throwaway world, so live users are unaffected. ⚠ A grade is only comparable with another run's if both models match.

New QA scenario

Scenario

The person the persona talks to

A second model plays this character for the whole conversation. Write it as instructions to an actor: who they are, what they want, what they will and will not do. Specifics are what make the run worth grading — a vague subject produces a vague transcript.

Acts

Each act opens with a fixed message and runs until one of its goals is met or it hits its turn limit. An act with no reachable goal always runs to the limit, so choose goals the persona can actually satisfy in that act.

Provision organization

Corporation

Email domains

Personas

Atlis and Katnis are included by default. Select any additional personas to enable for this corporation.

Loading…

Branding

Insurance plans (SBCs)

PDF Summary of Benefits and Coverage documents (max 4 MB each). Personas can read these via scan_insurance_plans / load_insurance_plan to answer coverage questions. You can add/remove after the organization is created.

Wellness programs

Descriptions of employer wellness benefits (max 4 MB per PDF). Personas expose these via scan_wellness_programs / load_wellness_program.

Defaults

Contact

Create persona

1 Brief
2 Identity
3 Portrait & audio
4 Confirm

Voice

The voice this persona speaks in. Tuning values apply to ElevenLabs; leave one blank to use its default.

Optimize persona

Claude Fable 5 will read this persona's whole implementation — its identity levels and role, operating instructions, knowledge modules, playbook phases and tool set — and rewrite what needs it. A snapshot is taken first, so you can undo the whole thing.

The more specific you are, the more the review is about the job you have in mind rather than internal consistency. Who it talks to, what it should be good at, what it should stay away from, anything it keeps getting wrong. Leave it blank to have Fable judge the persona against its own stated role.

0 / 4000

That model is not available

Optimization result

Suggested questions

Tappable starter prompts shown above the chat input for this persona. Clicking one sends it as the user's message. Spanish is optional — a blank Spanish field falls back to the English text. Up to 8.

English
Spanish (optional)

Organization

Loading…

Conversation

Loading…

Role

Loading…

Knowledge module

Loading…

Authoring guide

Knowledge modules & playbook phases · scope · documents