atmon docs

REFERENCE/TOOLKITS/ATMON.MD

atmon

This project's own atmon node. Read its connections, its call ledger, its jobs, its approvals, and its spend.

PropertyValue
Slugatmon
Definition version0.1.0
Base URLhttps://api.atmon.ai
Auth schemesapi_key
Action tools9
By class8 read, 1 write
Triggers0
Provider rate limitnot declared, so outbound calls are unpaced

Measured routing accuracy

29 golden cases replayed through the router over the whole index: measured over corpus ea4f12ad2948 (65 toolkits, 2283 tools indexed and 13 declared uncallable), 9 cases written by hand and 18 cases from the paraphrase pass, plus 2 context cases whose intent names no app and is decided by the session. A case counts as top-1 when its gold tool ranked first and top-8 when it reached the slate at all.

MeasureCasesShare
top-124/2982.8%
top-828/2996.6%

The sweep is offline: the reranker is a deterministic identity fake that returns candidates in the order retrieval produced them, so top-1 measures retrieval order rather than a reranked slate. just eval-live measures the same cases through the live reranker.

Authentication

Connect an entity with ConnectionsService.InitiateConnection, naming this toolkit's slug. Credentials stay in the connections vault; callers hold connected-account ids only.

api_key

PropertyValue
Placementheader
NameAuthorization
Rendered asBearer {key}

Submit the key with ConnectionsService rather than putting it in a request; it is sealed at rest and never returned.

Tools

9 action tools. The catalog-wide slug is atmon.<tool>, which is what search_tools returns and call_tool takes.

atmon.list_connected_apps

List which apps this atmon project holds connected accounts for, with each account's status, its owner, and the scopes granted. Use to see which integrations a person has already authorized and can act through, and to spot a vendor account that expired. Narrow to one person or one app.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.ConnectionsService/ListConnectedAccounts.

Arguments:

ArgumentTypeRequiredNotes
entity_idstringnoOnly this person's accounts. Omit for every account in the project.
toolkit_slugstringnoOnly accounts for this app, e.g. "slack". Omit for every app.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
connectedAccountsarray of object
connectedAccounts[].accountVariablesobject
connectedAccounts[].authSchemestring
connectedAccounts[].createdAtstring (date-time)
connectedAccounts[].credentialKindstring
connectedAccounts[].entityIdstring
connectedAccounts[].grantedScopesarray of string
connectedAccounts[].idstring
connectedAccounts[].statusstringCONNECTION_STATUS_ACTIVE, _PENDING, _EXPIRED, or _REVOKED.
connectedAccounts[].toolkitSlugstring

Also retrieved by: "which services do we already have hooked up", "is there a live account for this vendor yet", "what integrations does this customer hold", "did anyone authorize github for us", "has this user's token gone stale", "who has signed in to which provider", "do we hold a working login for that tool".

atmon.request_connection

Start connecting an app for one person in this atmon project and hand back the sign-in link that authorizes it. It creates a pending connection only: a human finishes by granting consent or pasting a key, so nothing is authorized here. Use when an action failed because the integration was never hooked up.

Class write (writes, no confirmation needed). No scopes beyond the connection's defaults. Calls POST /automaton.v1.ConnectionsService/InitiateConnection.

Arguments:

ArgumentTypeRequiredNotes
account_variablesobjectnoThe per-customer parts of the app's address, keyed by the name the app declares, e.g. {"subdomain": "acme"}. Omit for an app whose host is the same for every customer.
auth_schemestringnoWhich declared scheme to connect under: "oauth2", "api_key", or "basic". Omit for the app's default.
entity_idstringyesThe person this connection is for, as your product names them.
redirect_uristringnoWhere the person lands once the provider redirects back.
requested_scopesarray of stringnoProvider scopes to ask for. Omit to take the app's defaults.
toolkit_slugstringyesThe app to connect, e.g. "github". Read it from get_app.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
authorizationUrlstringWhere to send the person. Empty for a scheme that takes a pasted credential instead.
connectedAccountIdstring

Also retrieved by: "get me a url to authorize slack", "how do I hook a vendor up for this customer", "start the oauth handshake for notion", "send the user somewhere to sign in to the provider", "kick off account setup for an integration", "this person needs to grant us access first", "nothing is hooked up yet, begin the sign-in".

atmon.get_app

Look up one app in this atmon project's catalog by slug: what it is, which credential schemes the vendor entry accepts, which category it sits in, and whether it is shared or private to this project. Use to check a slug before asking anybody to connect it. It reports the entry, never an account; list_connected_apps answers that.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.CatalogService/GetToolkit.

Arguments:

ArgumentTypeRequiredNotes
slugstringyesThe app's slug, e.g. "notion".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
toolkitobject
toolkit.authSchemesarray of string
toolkit.categorystring
toolkit.descriptionstring
toolkit.namestring
toolkit.ownerProjectIdstringEmpty for an app in the shared catalog, set for one this project registered.
toolkit.slugstring
toolkit.versionstring

Also retrieved by: "what is this integration and how does it authenticate", "does a slug like hubspot exist in the registry", "which credential styles does that vendor support", "tell me what the linear entry says", "is that a shared app or one we registered ourselves".

atmon.list_tool_calls

List this atmon project's ledger rows for one person, newest first: what each action did, its status, its error code, and how long it took. Use to see the recent activity for a customer, why a provider refused an attempt, or whether something is parked waiting on a human. Narrow by tool or by cause.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.ExecutionService/ListToolCalls.

Arguments:

ArgumentTypeRequiredNotes
entity_idstringnoWhose calls to read. Required unless principal_chain_prefix is given.
page_sizeintegernoRows per page.
page_tokenstringnoThe nextPageToken of the previous page.
principal_chain_prefixarray of stringnoOnly calls whose cause opens with these hops, in order, e.g. ["job:job_123"] for one job's calls. It crosses people, so entity_id may be omitted when this is given.
tool_slugstringnoOnly calls to this tool, e.g. "slack.post_message".

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
nextPageTokenstring
toolCallsarray of object
toolCalls[].approvalIdstring
toolCalls[].entityIdstring
toolCalls[].errorCodestring
toolCalls[].errorDetailstring
toolCalls[].finishedAtstring (date-time)
toolCalls[].idstring
toolCalls[].jobIdstring
toolCalls[].startedAtstring (date-time)
toolCalls[].statusstringTOOL_CALL_STATUS_SUCCEEDED, _FAILED, _DENIED, _PENDING_APPROVAL, or _RUNNING.
toolCalls[].stepIdstring
toolCalls[].toolSlugstring

Also retrieved by: "what has the assistant actually done lately", "show me recent activity for this customer", "why was the last action refused", "history of everything we ran for this user", "which of our requests are stuck on somebody", "audit trail of attempts over the past day".

atmon.get_tool_call

Read one atmon ledger row in full by its id: the arguments sent, the shaped result returned, the error code and detail, the approval it parked on, and the job step behind it. Use to pull up the whole record of one attempt, why that single execution failed, or what payload it answered with.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.ExecutionService/GetToolCall.

Arguments:

ArgumentTypeRequiredNotes
idstringyesThe ledger row's id, as list_tool_calls reports it.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
toolCallobject
toolCall.approvalIdstring
toolCall.argumentsJsonstring
toolCall.connectedAccountIdstring
toolCall.entityIdstring
toolCall.errorCodestring
toolCall.errorDetailstring
toolCall.finishedAtstring (date-time)
toolCall.idstring
toolCall.jobIdstring
toolCall.principalChainarray of string
toolCall.relayIdstring
toolCall.resourceUrnstring
toolCall.resultJsonstring
toolCall.resultTruncatedbooleanTrue when a shaping cap cut data the tool's output schema declared.
toolCall.startedAtstring (date-time)
toolCall.statusstring
toolCall.stepIdstring
toolCall.toolSlugstring

Also retrieved by: "open that ledger row and show its arguments", "what exactly came back from that request", "pull up the record for id tc_123", "why did that one attempt error out", "the whole detail of a single execution by identifier".

atmon.list_jobs

List the bulk jobs this atmon project submitted, newest first, with each run's status, timing, and failure text. Use to see which batches are still going, which stopped for a human decision, and which finished overnight. Narrow by status, by submission mode, or by the skill that submitted it.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.JobsService/ListJobs.

Arguments:

ArgumentTypeRequiredNotes
modestringnoOnly this submission mode: "run", "simulate", or "shadow".
page_sizeintegernoJobs per page.
page_tokenstringnoThe nextPageToken of the previous page.
skill_slugstringnoOnly the jobs one promoted skill submitted.
statusstring, one of JOB_STATUS_PENDING_PLAN_APPROVAL, JOB_STATUS_RUNNING, JOB_STATUS_PARKED, JOB_STATUS_SUCCEEDED, JOB_STATUS_FAILED, JOB_STATUS_CANCELEDnoOnly jobs in this state. Omit for every state.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
jobsarray of object
jobs[].createdAtstring (date-time)
jobs[].finishedAtstring (date-time)
jobs[].idstring
jobs[].lastErrorstring
jobs[].modestring
jobs[].planApprovalIdstring
jobs[].programHashstring
jobs[].skillSlugstring
jobs[].statusstring
jobs[].updatedAtstring (date-time)
nextPageTokenstring

Also retrieved by: "what bulk runs are going right now", "did the batch we submitted finish", "show me everything queued or stopped", "which of our runs failed overnight", "is the work we kicked off last night done".

atmon.get_job

Read one atmon job by id: its status, the receipt with row counts and cost, what it stopped on and which person was asked to decide, and the outcome of every step. Use to follow a submitted bulk run to the end, or to learn how far along it got and what a stalled one waits for.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.JobsService/GetJob.

Arguments:

ArgumentTypeRequiredNotes
idstringyesThe job's id, as list_jobs or a submission reports it.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
jobobject
job.createdAtstring (date-time)
job.finishedAtstring (date-time)
job.idstring
job.lastErrorstring
job.modestring
job.parkobject
job.park.approvalIdstring
job.park.atstring (date-time)
job.park.reasonstring
job.park.stepIdstring
job.planApprovalIdstring
job.programHashstring
job.receiptobject
job.receipt.completeboolean
job.receipt.droppedobject
job.receipt.rowsIninteger
job.receipt.rowsOutinteger
job.receipt.simulatedboolean
job.skillSlugstring
job.statusstring
job.stepReceiptsarray of object
job.stepReceipts[].finishedAtstring (date-time)
job.stepReceipts[].outputHandlestring
job.stepReceipts[].stepIdstring

Also retrieved by: "how far along is that batch run", "what does the receipt for this run say", "why is that bulk run stuck", "read back the outcome of every step", "who was asked to decide on this run".

atmon.list_pending_approvals

List the atmon approvals waiting on a person in this project: which action stopped, for whom, with which arguments, and when the wait runs out. Use to see what is blocked until somebody signs off, and to tell that person what needs deciding. It reads the review queue and settles nothing, which stays a console decision.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.PolicyService/ListPendingApprovals.

Arguments:

ArgumentTypeRequiredNotes
page_sizeintegernoApprovals per page.
page_tokenstringnoThe nextPageToken of the previous page.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
approvalsarray of object
approvals[].argumentsJsonstring
approvals[].createdAtstring (date-time)
approvals[].entityIdstring
approvals[].expiresAtstring (date-time)
approvals[].idstring
approvals[].notestring
approvals[].statestring
approvals[].toolSlugstring
nextPageTokenstring

Also retrieved by: "what is sitting in the review queue", "which actions are blocked on a person", "who has to sign off before this goes through", "show me everything held for a decision", "what needs a human before it can move", "is anything waiting on my sign-off right now".

atmon.get_spend

Read what this atmon project has spent against what its budgets allow: model money in micro-dollars, action counts, and provider calls, bucketed by day, by app, or by person. Use before committing expensive work, or to answer how much a customer cost and which ceiling is close.

Class read (reads only). No scopes beyond the connection's defaults. Calls POST /automaton.v1.GovernanceService/GetSpend.

Arguments:

ArgumentTypeRequiredNotes
fromstring (date-time)noInclusive start, RFC 3339. Omit for unbounded.
group_bystring, one of day, toolkit, entitynoHow to bucket the totals. Defaults to day.
tostring (date-time)noExclusive end, RFC 3339. Omit for unbounded.

Result fields (the payload is trimmed to these before it reaches the model):

FieldTypeNotes
bucketsarray of object
buckets[].actionsstring
buckets[].keystring
buckets[].modelMicroUsdstring
buckets[].providerCallsstring
budgetsarray of object
budgets[].consumedActionsstring
budgets[].consumedModelMicroUsdstring
budgets[].consumedProviderCallsstring
budgets[].entityIdstring
budgets[].maxActionsstring
budgets[].maxModelMicroUsdstring
budgets[].maxProviderCallsstring
budgets[].resetsAtstring (date-time)
budgets[].scopestring
budgets[].toolkitSlugstring
budgets[].windowstring
groupBystring

Also retrieved by: "how much have we burned this month", "what are we paying for model usage", "are we close to any of our ceilings", "break the cost down by app", "how expensive has this customer been".