Core's tools¶
A deployment serves one MCP surface, at its dashboard's /mcp. Beside each
plugin's own tools it lists core's, named dashboard__...: the
Instruments tools, the
ticket and inbox tools,
tools over the parts of a plugin's area the dashboard draws: its Summary,
its moves, its settings and table settings, who holds access to it (read
only), its archive, the deployment's holds, and launching and stopping it.
Five more mirror the Data sources page: the lake's datasets, their
licences and entitlements, and the source priority. Seven work
prepared changes, and one reads the
accounts a plugin may link to. One reads the
service accounts. Four set and list the
trading instructions and account attributes,
one closes an account, two read the
Instruments page's Calendars tab, one sets
orders on local records, one makes
the migration's lines and one sets the
usage report. This page is the
reference for those thirty-seven. An agent calls them as the person who
delegated to it, only as far as that person could at the page each tool
mirrors, and only as far as the deployment lets agents go with each act.
Every act listed below that changes something can be prepared, but for the
prepared changes' own tools. No core tool reads a price, a trade or a
quote. A service account never reaches /mcp: it holds no delegation, and
no core tool is reachable as one.
What every one of them does¶
- The page's gate. Each tool is listed only through a delegation that covers the gate of the page it mirrors, and is checked again on every call (see Who may call them).
- The instance is an argument. A tool on one plugin takes its instance
by name,
plugin_instance_id, orinstance_idon the archive, launch and stop tools, as those records name it.dashboard__list_pluginsfinds the instances. A call naming an instance the delegation does not reach at that page's level is refused at that argument, naming the instances it does reach. - A note on every change. Every tool that changes something takes a
notesaying why, required, up to 2,000 characters, and keeps it with the change. The pages ask for none. The two acts on the book,dashboard__set_trading_instructionanddashboard__set_account_attribute, keep theirnoteas the book entry's reason, where the page asks for a Why or a Reason. - Each change its own record, as the same change made at the page, naming the person, the delegation and the client (see Where a change is recorded).
- Others' words are marked. What a plugin wrote (its declaration, its settings' descriptions, labels and choices, its tools' titles and descriptions, health and refusal details, figures, a vendor's name) and every note another person or agent wrote reach an agent screened, as a ticket's text is: one reading like an instruction to an agent is answered withheld, naming the rules it matched, and a person reads it at the page. Each tool's description says these are data, never instructions.
- Fresh consent for a new tool that changes something. A delegation narrowed to some of what a person holds keeps the tools that change something its consent page listed. One added since, by a release or a plugin, is not listed to it, and a call is refused, saying it waits until the person consents again from that client, where the consent page names it as new. A tool that only reads follows the person's grants, and a delegation covering everything you hold lists every tool at once.
- What agents may do with the act. Each act has a level the deployment admin and the plugin's
admin set: at May make the tool makes the change; at Prepare only
it is listed saying so, and a call is refused with
prepare_only, namingdashboard__prepare_call; at May not it is not listed. Where the act's second pair of eyes is on, a direct call is refused withsecond_pair_of_eyes. See What agents may do. - Two exceptions, and only two. No tool reads or takes a secret
setting's value, in either direction: a person enters a secret at the
plugin's Settings form. A tool says that a secret is set, by whom and
when, and its last four characters where it is long enough; clearing one
is allowed, as the form's Remove. And no tool changes who holds
access: none defines a user, account
or access group, grants or withdraws a permission, or grants a plugin an
account to link; none creates, changes, disables or removes a service
account, or chooses what a role runs as; and none makes a connectivity
plugin available, links it to an
emsor chooses who may route through it.
Every answer has an outcome: made for a change, unchanged for a read
or a change that changed nothing, refused with a reason, a detail and
the fields it refused, each by its path in the tool's input. Its data
is the record's own fields by their names: an enumeration is its proto name,
such as ACCESS_LEVEL_ADMIN; a time is nanoseconds since the epoch; a
decimal is a string. A time a tool takes back as its lock against a change
made meanwhile, such as against_updated_at_ns, is a decimal string, in and
out: an integer is still accepted up to 2^53, and one above it is refused,
naming the field. Changed in contract 24.
Who may call them¶
| Tool | Reads or acts | Who |
|---|---|---|
dashboard__list_plugins |
reads | Anyone holding a level on a plugin, or the deployment admin |
dashboard__read_plugin_summary |
reads | An admin of any of the plugin's roles, or the deployment admin |
dashboard__read_moves |
reads | An admin of any of the plugin's roles |
dashboard__read_plugin_settings |
reads | An admin of any of the plugin's roles |
dashboard__set_plugin_settings |
acts | An admin of any of the plugin's roles; a setting serving several roles, an admin of every one |
dashboard__read_plugin_access |
reads | An admin of any of the plugin's roles, or the deployment admin |
dashboard__allow_archive |
acts | The deployment admin |
dashboard__withdraw_archive |
acts | The deployment admin |
dashboard__read_holds |
reads | The deployment admin |
dashboard__set_hold |
acts | The deployment admin |
dashboard__read_plugin_catalogue |
reads | The deployment admin |
dashboard__launch_plugin |
acts | The deployment admin |
dashboard__stop_plugin |
acts | The deployment admin |
dashboard__list_datasets |
reads | The deployment admin |
dashboard__set_dataset_licence |
acts | The deployment admin |
dashboard__set_dataset_entitlement |
acts | The deployment admin |
dashboard__list_source_priorities |
reads | The deployment admin |
dashboard__set_source_priority |
acts | The deployment admin |
dashboard__read_linkable_accounts |
reads | An admin of any of the plugin's roles, or the deployment admin |
dashboard__prepare_call |
acts | Anyone whose delegation may make the act named, or holds it on a Prepare only row, where agents may make or prepare it |
dashboard__list_prepared |
reads | The delegation's own |
dashboard__read_prepared |
reads | One this delegation prepared, or one shown to the person |
dashboard__withdraw_prepared |
acts | The delegation's own, while it waits |
dashboard__make_prepared |
acts | Whoever may make the act, once an admin loosens it from May not |
dashboard__discard_prepared |
acts | Whoever it is shown to, once an admin loosens it from May not |
dashboard__share_prepared |
acts | Its person, once an admin loosens it from May not |
dashboard__list_service_accounts |
reads | Any delegation that reaches anything: every account for the deployment admin, the person's own otherwise |
dashboard__list_trading_instructions |
reads | The deployment admin, every instruction; a plugin's admin, those naming a plugin they administer |
dashboard__set_trading_instruction |
acts | The deployment admin, on any target; a plugin's admin, on their plugin or a person, service account or account within it; once an admin loosens it from May not |
dashboard__list_account_attributes |
reads | The deployment admin |
dashboard__set_account_attribute |
acts | The deployment admin, once loosened from May not |
dashboard__close_account |
acts | The deployment admin, once loosened from May not. Added in contract 24. |
dashboard__list_calendars |
reads | The deployment admin |
dashboard__read_calendar |
reads | The deployment admin |
dashboard__set_local_record_orders |
acts | The deployment admin, once loosened from May not. Added in contract 24. |
dashboard__apply_migration |
acts | The deployment admin; agents may only prepare it until loosened. Added in contract 24. |
dashboard__set_reports_usage |
acts | The deployment admin. Added in contract 24. |
"An admin of a role" is admin on that role of the plugin, at Manage,
held through the delegation (see Admin per role);
on a plugin holding no role, admin on the plugin. "The deployment admin"
means a delegation covering the deployment admin's capabilities. A person
holding only read or write on a plugin is listed
dashboard__list_plugins and none of the others.
The call's record, listed in the person's Connected clients, names the
gate it was admitted under as its level: admin on snaptrade-1:custody,
deployment admin, or, for dashboard__list_plugins, any level on a
plugin.
The plugin's area¶
dashboard__list_plugins¶
The dashboard home's plugin entries: each instance the person holds any level on through the delegation, every one for the deployment admin.
Input: nothing.
Answer: plugins, each with plugin_instance_id, title, roles,
entries (what the person holds, each a role and a level),
registered, healthy, health_detail and reported_at_ns.
dashboard__read_plugin_summary¶
The plugin's Summary, as its admin reads it under Manage, and the admin view's Overview with its connections.
Input: plugin_instance_id.
Answer: for anyone it admits, the Overview's parts: roles,
registered, healthy, health_detail, last_heartbeat_at_ns,
reported_at_ns, contract_version, refused_grants,
last_refusal_reason, its launch from the catalogue where it has one, and
sync, each external account's sync state. The launch record is the
deployment admin's: an admin of the plugin who is not a
deployment admin reads the version it runs instead. An admin of any of its roles
also reads the Summary's own parts: setting-up, the role's first-use steps as Setting up draws
them (set_up, and steps, each its step, done (true, false, or null
where the plugin's own page says), where and deployment_admins); figures, declaration,
not_carried_seen, declared_tools, tool_refusals and stored, what
storage holds of each kind of raw record; and on an edge plugin keeping raw
records, the holds over it, archived, what the archive holds of each
kind, and its archive as allowed. A deployment admin who administers none
of its roles reads the Overview's parts alone. Nothing of a raw record's
content is answered.
dashboard__read_moves¶
The Summary's Moves: an edge plugin's moves of its raw records, newest first, a page at a time.
Input: plugin_instance_id; cursor, the next_cursor of the page
before, for the next.
Answer: moves, each a move (record_kind, unit, record_count,
first_received_ns, last_received_ns, outcome, rule), the person
where one made it, at_ns, and the acting_through_delegation and
client_name they acted through; next_cursor; archived; and archive.
dashboard__read_plugin_settings¶
The plugin's Settings form and each table setting's tab, as they show this person.
Input: plugin_instance_id.
Answer:
| Field | What it holds |
|---|---|
values |
Each setting that is not secret, by name and value. A table's value is its rows, each with changed_by and changed_at. |
secrets_set |
The names of the secrets that are set. Never a value. |
changes |
Each setting's last change, a secret's included: name, changed_by, changed_at_ns, acting_through_delegation, client_name (SettingLastChange); hint, a secret's last four characters where it has 16 or more, and prepared_call_id where the change was made from a prepared change. |
updated_at_ns, updated_by |
The record's latest change. A change names updated_at_ns as against_updated_at_ns. |
declared_settings |
Each setting as the form shows it (SettingShown): what the plugin declared of it, the roles it serves, may_set, whether this person may set it, and where they may not, detail, saying why. A developer setting only on a development deployment; neither its value nor its changes are read on a production deployment. |
accounts |
The external accounts a table's column offers, each external_account_id and name. |
dashboard__set_plugin_settings¶
Save on the Settings form or a table's tab. The tool takes the form's own field names as JSON and runs the form's own checks, so an argument is refused where the form refuses its cell, by the same path.
Input:
| Argument | What it takes |
|---|---|
plugin_instance_id |
Required. |
value |
{"<name>": value}: a setting that is not secret, set to text, a whole number, or true or false. |
table |
{"<name>": [rows]}: a table's rows, whole, each row its cells by column. It replaces the table. |
clear |
{"<name>": true}: clears a setting, a table or a secret. |
against_updated_at_ns |
Required: updated_at_ns as read, 0 for settings never saved. The change is refused if the settings changed since, and 0 is refused once any setting is saved, so a change read before a person's first save never replaces it. |
note |
Required: why. |
{
"plugin_instance_id": "snaptrade-1",
"value": {"activity_window_days": 2600},
"against_updated_at_ns": 1791417600000000000,
"note": "Keep activity a little past seven years."
}
Answer: made with the settings as dashboard__read_plugin_settings
answers them, or unchanged when nothing named differs from what is set.
It never takes a secret's value: a secret named under value or table, or
any argument under secret, is refused by its path, such as
secret.api_key, saying a person enters it at the Settings form. A setting
serving several roles is refused, at its path and naming the roles, unless
the person administers every one. The deployment's own checks then apply as
at the page: a window below a hold, for one, is refused at that setting's
path.
Who holds access¶
dashboard__read_plugin_access¶
The admin view's Access tab, read only.
Input: plugin_instance_id.
Answer: the plugin's roles; the access_groups with entries on it,
and All plugins (admin), each with its entries on this plugin (role
and level) and whether it is built in;
the permissions to those groups; and the user_groups and
account_groups those permissions join. Also each of the plugin's acts, with what agents may do with it
(agents_may: may_make, prepare_only or may_not; the ceiling where it
caps; each access group's stricter level) and whether it needs a
second_pair_of_eyes; runs_as, one line for each of the plugin's roles: the role, the
service_account_id its autonomous work runs as, its name and state
(active, disabled, removed), the level chosen, and the level the
account is granted on the role now; all but role empty where it runs as
none; and connectivity: for a
plugin holding connectivity, its connectivity_link (the
connectivity_instance_id, whether it is available, the
ems_instance_id it is linked to, empty for none, and its users, each a
subject, a service_account_id or a user_group_id); for a plugin
holding ems, its connectivity_links, each in the same shape, and its
venue_account_map (ems_instance_id and mappings, each a
connectivity_instance_id, a venue_account_code and an account_id);
empty for a plugin holding neither. See
Route orders through a connectivity plugin.
No tool changes any of it: grants are made at the
page, by a deployment admin (see
Give people access), levels at the
page, by the plugin's admin; what a role runs as at the page, by the
role's admin; and a connectivity plugin's availability by a
deployment admin, and its link and who may route through it by the ems's
admin, at the page.
dashboard__read_linkable_accounts¶
The admin view's Accounts tab, read only: the accounts a deployment admin granted the instance to link its external accounts to, nothing by default, with who last changed the grant and when. A grant lets the plugin's admins link; it gives nobody anything to read or write. No tool sets it. See Accounts a plugin may link to.
Input: plugin_instance_id.
The archive and the holds¶
dashboard__allow_archive¶
Allow archive on the Summary's raw records, or a change to its bound. See The archive.
Input: instance_id; most_bytes, the most the archive may hold, 0 for
no bound; note.
Answer: made, the archive as allowed (allowed, most_bytes, who,
when, and the delegation and client), saying the instance restarts with it.
dashboard__withdraw_archive¶
Withdraw.
Input: instance_id, note.
Answer: made, saying the instance restarts without its archive and
that what the archive holds is kept; unchanged where it was allowed none.
dashboard__read_holds¶
The Holds tab of the deployment's Settings.
Input: nothing.
Answer: holds, each with its role (empty for every edge role),
days, write_once, updated_by, updated_at_ns, and the
acting_through_delegation and client_name it was set through. An admin
of a plugin reads the hold over it in dashboard__read_plugin_summary.
dashboard__set_hold¶
The hold's dialog, and its Clear.
Input: role, an edge role or empty for every one; days, 0 to 36,500,
0 clearing the hold; write_once; note.
Answer: made, the hold as set. Write-once is refused where the
deployment's archive cannot lock, as at the page.
Launching and stopping¶
These mirror meridian plugin list, launch and stop; see
Command line. Uploading a version stays the CLI's.
dashboard__read_plugin_catalogue¶
Input: nothing.
Answer: versions, each version uploaded with its name, version, roles,
interface, SDK version and declaration, its image digest, and who uploaded
it and when; and launches, each launch, live or ended: its instance,
version, roles, state, who launched and stopped it and when, and the
delegation and client each acted through (acting_through_delegation,
client_name, stopped_through_delegation, stopped_client_name), and
the note a stop was made with, stopped_note, beside the
launch's note.
dashboard__launch_plugin¶
Input: name, version, instance_id; approved_roles, exactly the
version's roles, as meridian plugin launch approves them; live, only on
a development deployment; note.
Answer: made, the launch. Roles other than the version's own are
refused, as are a version not in the catalogue and live anywhere but a
development deployment. So are core's own names as an instance (a component's, or the runtime's), and an instance ID a stopped
launch used for a different plugin.
dashboard__stop_plugin¶
Input: instance_id, note.
Answer: made, the launch as stopped. An instance with no live launch
is refused.
The Data sources page¶
The dashboard's Data sources page, on Settings beside Instruments, at the deployment admin's level: the datasets each launched data plugin's catalogue serves the lake, their licences and entitlements, and the source priority. See Licences and entitlements and, at the page, License and entitle a dataset.
A tool's answer is what the page shows the same person, read from the same
rows. None reads a price: prices are the reading roles', on their
plugins' pages. A read answers outcome: "unchanged", as core's other
reads do. Changed in contract 23: dashboard__list_datasets and
dashboard__list_source_priorities answered outcome: "read" before, so a
client written against them accepts either. A licence records
what was entered; no answer says the deployment meets a vendor's terms.
dashboard__list_datasets¶
The page's Datasets and Entitlements tabs.
Input: nothing.
Answer: datasets, each with:
| Field | What it holds |
|---|---|
dataset, instance |
The dataset's ID, the instance, a colon and its key (alpaca-1:daily), and the instance serving it. |
vendor, aggregator |
Who originated it, and who carries it where an aggregator does, as the plugin names them: others' words, screened. |
catalogue_entry |
The catalogue's entry as the plugin declared it (DatasetDeclaration): data types and fields, modes, cadence, history, its default licence, its day's zone and end, its venue. Screened as others' words. |
licence |
The licence enforced: set_by_the_deployment, false while it is the catalogue's default; kept, retention_days, derived_use, display, default_fields, personal_use; and who set it, when, the acting_through_delegation and client_name, and its note. |
entitlements |
Each instance entitled now: instance, allowed, fields (none for every field), who set it, when, the delegation and client, and its note. |
unconverted_count |
How many of its values its plugin left unconverted. |
miss_count |
How many identifiers and venues its plugin reported missing. |
closed_day_count |
Added in contract 23. How many of its daily rows are dated on a closed day of its calendar, the page's Closed days. See A daily value on a closed day. |
outside_coverage_count |
Added in contract 23. How many are dated outside its calendar's coverage, counted apart, shown beside the closed days ("(2 outside)"). |
one_person_warning |
Where its terms are one person's and more than one person holds read or write on a plugin entitled to it, the warning naming them; otherwise null. |
dashboard__set_dataset_licence¶
The Licence dialog: replaces a dataset's licence whole.
Input:
| Argument | What it takes |
|---|---|
dataset |
Required: a dataset a launched instance's catalogue declares. |
kept |
Required: whether the lake may keep its rows; false serves them, not kept. |
retention_days |
Required: days a row is kept from when it was recorded, 0 to 36,500; 0 for no limit set. |
derived_use, display |
Required: whether derived data may be made, and whether it may be shown. |
default_fields |
The fields readable by default, by their dictionary entries, at most 64; none for every field. |
personal_use |
Required: whether its terms are one person's. |
note |
Required: why. |
{
"dataset": "alpaca-1:daily",
"kept": true,
"retention_days": 0,
"derived_use": true,
"display": true,
"personal_use": true,
"note": "Alpaca's terms read 2026-10-10: one account holder's, kept for their own use."
}
Answer: made, with the dataset and its licence as recorded.
Refused: a dataset no launched instance declares, a field that is no entry
of the dataset's data types, a retention out of bounds.
dashboard__set_dataset_entitlement¶
The Entitle dialog, and Withdraw on the Entitlements tab.
Input: dataset; instance, a running plugin instance; allowed,
false to withdraw; fields, the dictionary entries it may read, at most
64, none for every field; note. All but fields are required.
Answer: made, the entitlement as recorded. Its deliveries follow at
once, and stop at once on a withdrawal, which clears its fields. Refused:
an instance that is not running, a dataset no launched instance declares,
a field that is no entry of the dataset's types.
dashboard__list_source_priorities¶
The Priority tab.
Input: nothing.
Answer: priorities, each with its data_type (meridian.v1.Price or
meridian.v1.Bar, meridian.v1.Trade or meridian.v1.Quote), its kind for a price (close, last, nav,
settlement; null for any other type), its datasets first to last, who set it,
updated_at_ns, the delegation and client, and its note. A change is
sent against updated_at_ns.
dashboard__set_source_priority¶
The priority's dialog: replaces a data type's priority whole, for prices one kind's.
Input:
| Argument | What it takes |
|---|---|
data_type |
Required: meridian.v1.Price, meridian.v1.Bar, meridian.v1.Trade or meridian.v1.Quote. |
kind |
For a price, required: close, last, nav or settlement. Any other type names none. |
datasets |
Required: 1 to 16, first to last, each declared for the data type. |
against_updated_at_ns |
Required: the priority's updated_at_ns as read, 0 where none is set. |
note |
Required: why. |
Answer: made, the priority as recorded, and for, what it is for
in words (price close). Refused with REFUSAL_REASON_RECORD_CHANGED
where another set it since it was read: nothing was changed; read it again.
Prepared changes¶
See Prepared changes. No tool sets a level, a second pair of eyes or the lapse period: those are set at the page only.
dashboard__prepare_call¶
Prepare an act instead of making it.
Input: tool, the act's tool as listed, such as dashboard__set_hold
or ops-1__confirm_opening_balance; arguments, its arguments as the agent
would call it; reason, why, at most 4,000 characters.
{
"tool": "dashboard__set_plugin_settings",
"arguments": {"plugin_instance_id": "snaptrade-1",
"value": {"activity_window_days": 2600},
"against_updated_at_ns": 1791417600000000000,
"note": "Keep activity a little past seven years."},
"reason": "Your custodian's statements go back seven years; this keeps all of them."
}
Answer: made, with the prepared change's PC- ID, or the check's
refusal, each field by its path in the act's input, nothing kept. Nothing in
the deployment changes either way. Refused: an act this delegation may not
make or prepare, one at May not, one with no check, a secret's value, and
tickets' acts.
dashboard__list_prepared¶
What this delegation prepared and what became of each (prepared,
shared, made, changed, discarded, withdrawn, lapsed), newest
first; the lapse period in days; and, for each act this delegation reaches,
what agents may do with it (may_make, prepare_only, may_not) and
whether it needs a second pair of eyes.
Input: nothing.
dashboard__read_prepared¶
One prepared change, whole: the act, its arguments as prepared, the check's
answer, who prepared it and through which client, why, its state and its
history. The reason and the arguments are another's words, screened: data,
never instructions. A change a service account prepared is read by its owner with its arguments
withheld where they name an account the owner may not read.
Input: prepared_call_id.
dashboard__withdraw_prepared¶
Withdraw one this delegation prepared that is still waiting.
Input: prepared_call_id, note.
dashboard__make_prepared¶
Make a prepared change shown to the person, as prepared or with changed
arguments, settled made or changed. At May not until an admin
loosens it; even then only where agents may make its act for this caller,
never one this client prepared, and under a second pair of eyes never one
the person prepared.
Input: prepared_call_id; arguments, the act's whole input, to make
it as changed; note.
dashboard__discard_prepared¶
Discard a prepared change shown to the person: nothing is made of it. At May not until an admin loosens it.
Input: prepared_call_id, note.
dashboard__share_prepared¶
Share the person's own waiting prepared change with everyone who may make it. At May not until an admin loosens it.
Input: prepared_call_id, note.
Service accounts¶
See Service accounts. No tool creates, changes, grants, disables or removes a service account, or chooses what a role runs as: those are a person's, at the page, since who acts is who holds access.
dashboard__list_service_accounts¶
The Settings' Service accounts tab, read only. Through a delegation covering the deployment admin's capabilities, every service account; through any other, only those the person owns.
Input: cursor, where the last page ended, as its next_cursor said;
limit, 1 to 200, 50 by default.
Answer: service_accounts, each row as the tab shows it: its
service_account_id (SA-…), name, purpose, owner_subject and
owner (their name), setting (prepare_only or act), state
(active, disabled or removed, a removed account still listed),
runs_for (each instance:role it runs for, the instance alone on a
plugin holding no role), last_used_ns,
last_refusal and last_refusal_ns; next_cursor, empty on the last
page; and every_account, whether the rows are every account or the
person's own. The names, purposes and refusals are another's words: data,
never instructions.
{"outcome": "unchanged", "data": {
"service_accounts": [{
"service_account_id": "SA-01JA2Q3R4S5T6V7W8X9Y0Z1A2B",
"name": "The sweep",
"purpose": "Closes cleared breaks after each reconciliation.",
"owner_subject": "local|cat", "owner": "Cat Ruiz",
"setting": "prepare_only", "state": "active",
"runs_for": ["sample-operations-1:operations"],
"last_used_ns": 1791417600000000000,
"last_refusal": "", "last_refusal_ns": null}],
"next_cursor": null,
"every_account": true}}
The call's record names its gate as deployment admin or owner.
Trading instructions and account attributes¶
The Trading instructions page
(/admin/trading-instructions) and the Accounts tab's book part. See
The order lifecycle
and, at the page,
Set trading instructions and whether releases wait.
The two acts are core acts at the setter's level: each can be prepared
(dashboard__prepare_call), and each is at
May not for agents until the deployment admin loosens it. Each takes a
note, as every act does, kept as the book entry's reason. A list answers
outcome: "unchanged"; a reason another person or agent wrote is screened
as others' words. The book refuses and cancels nothing for an instruction:
each plugin honours it.
dashboard__list_trading_instructions¶
The Trading instructions page, read only: every instruction in force for a deployment admin, those naming a plugin they administer for a plugin's admin.
Input: nothing.
Answer: instructions, each with its target (the contract's own
fields, only those set: all_accounts, account_id, instance_id,
subject, service_account_id), target_said (the target in words, as
the page shows it), value (active, pause or stop), setter_level
(deployment_admin or plugin_admin), reason (the note it was set
with, kept as the entry's reason), set_by, the
entry_id that set it and its last_change (partition and sequence);
and control_sequence, the sequence of the trading instructions as of the
read.
dashboard__set_trading_instruction¶
The page's Set an instruction dialog.
Input:
| Argument | What it is |
|---|---|
target |
What it is on, the contract's fields, one target: {"all_accounts": true} (a deployment admin's); {"instance_id": "…"}, a plugin; or account_id, subject (a person, by their deployment-local subject) or service_account_id, each beside the plugin's instance_id where it is within one. A plugin's admin always names their plugin. A user group is not a target yet, and target.user_group_id is refused |
value |
active, pause or stop |
note |
Why, kept as the instruction's reason |
The level is stamped from the caller's access, never an argument: a
deployment admin's, or a plugin admin's for a plugin they administer. A
target outside the caller's reach is refused not_permitted, naming
target.
Answer: outcome: "made" and instruction, as the list answers each.
{"target": {"instance_id": "desk-1"}, "value": "pause",
"note": "Pausing the desk's new orders while the venue is degraded."}
dashboard__list_account_attributes¶
The Accounts tab's book part, read only: each account's attributes in the book. No account's positions or orders.
Input: nothing.
Answer: accounts, each with its account_id, base_currency_code,
lot_relief_default (first_in_first_out, last_in_first_out,
highest_cost, lowest_cost or average_cost, empty where not set),
waits_for_compliance, error_account and allocation_account (added in
contract 24), and opening_balance_as_of, the date its opening
balance stands for, empty for none.
dashboard__set_account_attribute¶
An account's Edit, In the book: one attribute at a time, each its own entry.
Input: account_id, note (kept as the entry's reason), and exactly one of base_currency_code
(three capital letters), lot_relief_default (as above),
waits_for_compliance (false lets a release pass the gate without a
compliance verdict), or error_account (added in contract 24; an error
account, where a booking's overfills and errors are booked) or
allocation_account (a block order's account until its allocations are
booked out). See Booking.
Answer: outcome: "made", the account's attributes as they stand,
and the entry_id.
{"account_id": "ACC-01JA2Q3R4S5T6V7W8X9Y0Z1A2B", "waits_for_compliance": false,
"note": "No compliance plugin covers this account; releases are reviewed by the desk."}
dashboard__set_local_record_orders¶
Added in contract 24. The Trading instructions page's Allow orders on local
records: whether an order may name a local record, one the platform has
not answered for yet (see
Orders on local records).
A deployment admin's; a call by anyone else is refused not_permitted. It
can be prepared, and is at May not for agents until the deployment
admin loosens it.
Input: allows_local_record_orders, true or false; note, kept as
the entry's reason.
Answer: outcome: "made", with allows_local_record_orders, the
setting in force, and open_order_count, the live orders on local records
across the deployment, naming no account and no order.
{"allows_local_record_orders": false,
"note": "The platform is reachable again; new orders wait for its records."}
dashboard__close_account¶
Added in contract 24. The Accounts tab's Close: closes an account,
never deleting it, its holdings and history still readable (see
Closing an account). A
deployment admin's; a call by anyone else is refused not_permitted. It
can be prepared, and is at May not for agents until the deployment
admin loosens it.
Input: account_id; note, why, kept with each record the closure
writes; and unlink_attached, optional, true to withdraw each grant and
close in one step, as the dialog's Unlink all and close does.
An account with anything still attached (an external account's link, a
plugin instance's grant, an ems's mapping) is refused, naming
account_id and each thing attached, and nothing is closed. A link or a
mapping is undone at its plugin's page. No tool sets a grant, so while the
account still has one, unlink_attached is refused too: a person
withdraws it at the page, or with Unlink all and close.
Answer: outcome: "made", with the account: its account_id,
name, state (ACCOUNT_STATE_CLOSED) and created_at_ns.
{"account_id": "ACC-01JA2Q3R4S5T6V7W8X9Y0Z1A2B",
"note": "The 2026 rollover account is empty and its link was removed."}
The Instruments page's provisional records¶
Added in contract 24. The Instruments tools take and answer the provisional
records (see One ID per instrument):
dashboard__list_instruments_to_complete takes provisional, the
provisional records alone, complete or not, each with its
provisional_reason (PROVISIONAL_REASON_UNREACHABLE, _INCOMPLETE,
_AWAITING_STAFF, _CLASS_NEEDED or _HELD_BACK); each record answers
provisional, template_id, template_version and missing_fields; and
the answer carries migration_counts (already_held, matched, minted,
near_match, awaiting_staff, kept_local, unreachable, held_back
and remaining) and backfill_counts (per scheme, matched,
awaiting_person and remaining). A provisional record the migration
sent names its migration_section and, where the platform answered, the
answered_instrument_id its line would become.
dashboard__apply_migration¶
Added in contract 24. The Provisional tab's Exact lines and Uncertain lines dialogs: makes the upgrade's migration lines, or holds them back (see Make the lines). At the deployment admin's level. It can be prepared, and agents may only prepare it until the deployment admin loosens it.
Input:
| Argument | What it is |
|---|---|
instrument_ids |
The LCL- records whose lines are made, at most 500: each replaced by the INS- record its line answered |
held_back_ids |
The LCL- records whose lines are held back, at most 500: each keeps its LCL- ID, provisional and held back, nothing minted for it, until a later change makes it |
note |
Why, kept on each record's version |
At least one line is named. The exact lines are one change, each
uncertain line its own; two records answered by one INS- ID are a
duplicate line, made together. More than 500 exact lines are successive
changes, in order. The change is made whole or refused whole, naming by
its path each line that is not one the platform answered (with its staff,
kept local or not reached); a line already made is unchanged.
Answer: outcome: "made", with the migration's migration_counts
after.
{"instrument_ids": ["LCL-01JB8Z3K6Q", "LCL-01JB8Z3K7R"],
"held_back_ids": ["LCL-01JB8Z3K8S"],
"note": "The exact lines checked against the custodian's statement; one held back to check its share class."}
dashboard__set_reports_usage¶
The Licensed identifiers tab's Report identifier usage: whether the conductor sends the platform the deployment's usage statistics weekly, per identifier scheme, counts only. At the deployment admin's level.
Input: reports_usage, true or false; note, why, kept with the
change's record.
Answer: outcome: "made", with reports_usage, the setting in force.
The Calendars tab¶
The Instruments page's Calendars tab, at the deployment admin's level, read only: nothing sets a calendar in a deployment. See Settlement calendars.
dashboard__list_calendars¶
The calendars and date rules the deployment holds, one line each at its latest version.
Input: cursor, the next_cursor of the page before; page_size, 1
to 200; and, as the instrument store's list takes them (added in contract
23):
kind, one calendar kind, none for every kind; and query, text matched,
ignoring case, on the name and the subject's codes.
Answer: calendars, each with its calendar_id (CAL-…), name,
kind (CALENDAR_KIND_CURRENCY, CALENDAR_KIND_TRADING or
CALENDAR_KIND_SECURITIES_SETTLEMENT), version, coverage_to_date and
refreshed_at_ns, and its subject as platform IDs (added in contract 23):
instrument_id (a currency's cash instrument), venue_ids, or
settlement_system (its name and country); rules, each with its kind
(DATE_RULE_KIND_SETTLEMENT or DATE_RULE_KIND_SPOT), subject (such as
US/equity), version and refreshed_at_ns; and next_cursor, empty on
the last page.
dashboard__read_calendar¶
One calendar's days over a range, as the tab shows a year.
Input: calendar_id; from_date and to_date, YYYY-MM-DD,
inclusive, to_date on or after from_date; as_of_ns, a recorded time,
absent or 0 for the latest version.
Answer: found, false for a calendar the deployment does not hold yet,
which is then asked of the platform; its calendar_id and version; its
weekends, each with its weekdays (WEEKDAY_SATURDAY, …) and
valid_from_date; the days listed in the range, each with its date,
kind (CALENDAR_DAY_KIND_CLOSED, or CALENDAR_DAY_KIND_OPEN for a
weekend day that is a business day), name and source; its coverage
(from_date, to_date); and its sources, each with its source_id,
name, address and read_at_ns. A read answers outcome: "unchanged".
Refusals¶
reason |
When |
|---|---|
not_listed |
The tool is not listed through this delegation, such as a settings tool called by a person holding only write; recorded like any call. Also a plugin that has not reported, so its settings are not known yet, and, on dashboard__set_plugin_settings, an instance the delegation does not reach. Also a tool that changes something added after a narrowed delegation was consented to, saying it waits for fresh consent from that client. |
invalid_arguments |
An argument that does not read, or is not the tool's, by its path: a missing note, a secret's value (secret.<name>, value.<name>), a table's cell that does not read (table.<name>[<row>].<column>), an instance the delegation does not reach at that page's level, naming those it does. |
not_administered |
A setting serving a role the person does not administer, at its path, naming the roles. |
not_permitted |
A trading instruction on a target outside the caller's reach, at target, saying why; and a book's refusal sent with a permission status and no code. |
REFUSAL_REASON_RECORD_CHANGED |
The settings, or a source priority, changed since against_updated_at_ns was read, at that argument. Nothing was changed: read them again. |
prepare_only |
The act is at Prepare only for agents in this deployment, naming who set it. Prepare it with dashboard__prepare_call, and a person makes it. |
second_pair_of_eyes |
The act needs a second pair of eyes; nobody makes it directly. Prepare it, and someone other than whoever prepared it makes it. |
| the deployment's own | The same refusal the page meets, with its sentence: a window below a hold, write-once where the archive cannot lock, roles other than the version's, no live launch to stop. |
rate_limited, unavailable |
As for any tool on the surface. |
Where a change is recorded¶
A change made through one of these tools is recorded as the same change
made at the page, and names the person, the delegation and the client, with
the note: in the deployment's configuration, a record for each setting
changed, each hold, each archive allowed or withdrawn, each launch and each
stop, and each dataset's licence and entitlement; in the lake, each source
priority. A launch or stop made with meridian plugin names the CLI's
delegation and client too. A change made from a prepared change also names
it (prepared_call_id), and each step of the
prepared change is its own record in the dashboard. Each change to a
service account, and to what a role
runs as, is its own record in the dashboard, made at the page; a call a
service account made is recorded on its own page, Its calls, not in
anyone's Connected clients. A trading instruction or an account attribute set through a tool is an entry
in the book, as one set at the page is, with the person, the delegation,
the client and the note, kept as the entry's reason; and each change to a connectivity plugin's
availability, link or users, made at the page, is its own record in the
deployment's configuration.
Where a person sees it:
- Connected clients, under their name at the dashboard's top right, lists every call: when, which client, which tool, the gate it was admitted under, and how it came out. Never what was asked or answered.
- The Settings form, in a secret's field: who set it, when, and through which client, such as Set by Ada, 2026-10-09 14:02 UTC, through Claude.
Elsewhere the records say it and no page does yet: the client a setting,
hold, archive, launch or stop was changed through is answered by
dashboard__read_plugin_settings (changes), dashboard__read_holds,
dashboard__read_plugin_summary and dashboard__read_moves (archive),
and dashboard__read_plugin_catalogue. The note is kept with the change
and returned by the same read tools, beside who made it and the client, for
a setting, a hold, an archive allowed or withdrawn, a launch, a stop
(stopped_note), a licence, an entitlement and a
priority. No page shows a note yet, but for the Data sources page, where an
entitlement's or a priority's note shows on hover over who set it.
A change made in a browser names no delegation or client, which is true: a browser acts through none. A launch or stop older than these records has a record saying its delegation was not recorded.
Related¶
- Let your agent manage a plugin's settings and archive: these tools, step by step.
- Set a plugin's settings: the same settings at the page.
- Keep older records in the archive: the archive and holds at the page.
- Offer your plugin's pages to agents: a plugin's own tools on the same surface.
- License and entitle a dataset: the Data sources page and its tools.
- Service accounts: the users a plugin's
autonomous work runs as, and
dashboard__list_service_accounts. - Set trading instructions and whether releases wait: the trading instructions and account attributes, at the page and through their tools.
- Settlement calendars: the Calendars tab and its two tools.