Skip to content

6.11.1 Introduction

Agent Platform describes the assistants of Moonitoring and how they are allowed to act. One agent runtime serves every assistant: MooChat for Organizations and the assistant of the Console for staff are two agent definitions with their own tools and model profiles. Tools are published by the products, like capabilities; a tool is offered to the model only when the sender of the latest message may use it, and a tool that writes waits for the user's confirmation. Model profiles are managed in the Console, and every change is a PlatformAuditEvent.

6.11.1.1 Model notes

One runtime, many agents

One agent runtime, many agents. MooChat for Organizations and the assistant in the Console for staff are two AgentDefinitions run by the same code, with different tools and model profiles. The runtime holds no model key and reads no database: it asks the AI gateway for completions and the products' MCP servers for facts.

Permissions come from the caller

  • Permissions come from the caller, never from the agent. A tool is offered to the model only when the sender of the latest message holds every one of the tool's required capabilities (none required: any sender of the agent) and, for an Organization, active entitlements for the agent's feature and for every feature the tool requires.
  • A plan is a set of entitlements, so a tool reserved to a plan names the feature only that plan grants. Every message is authorized as its own sender, so a shared conversation never widens anyone's rights.
  • A tool that writes is never run on the model's word alone: the user confirms it, and the confirmation is the message that authorizes the call.

Model profiles

Model profiles are managed in the Console: staff with moochat.agent_models.manage create and edit them and choose which one an agent uses by default; every change is a PlatformAuditEvent. The profile's data classes make the residency rule structural: a profile that is not EU-only can never receive the output of a personal-data tool.

6.11.1.2 Diagram

Entities of this domain, their subtypes and the references between them. References to other domains are listed on each entity page.

classDiagram class AgentDefinition class AgentModelProfile class AgentTool class AgentToolBinding class AgentConversation class AgentMessage class AgentToolCall class AgentConnector class AgentConnectorInstance AgentDefinition --> AgentModelProfile : default_model_profile AgentTool --> AgentConnector : connector AgentToolBinding --> AgentDefinition : agent AgentToolBinding --> AgentTool : tool AgentConversation --> AgentDefinition : agent AgentMessage --> AgentConversation : conversation AgentMessage --> AgentModelProfile : model_profile AgentToolCall --> AgentMessage : message AgentToolCall --> AgentTool : tool AgentConnectorInstance --> AgentConnector : connector

6.11.1.3 Entities

  • AgentDefinition: A configured assistant: its purpose, who may use it (Organizations or staff), the entitlement feature it needs, the tools bound to it and the model profile it uses by default.
  • AgentModelProfile: A model and its settings as the AI gateway calls it: provider, model id, region, the data classes it may receive, its tier and parameters.
  • AgentTool: One callable the model can see, published by a product together with its capabilities.
  • AgentToolBinding: Which tools an agent may use.
  • AgentConversation: A thread between a user and an agent.
  • AgentMessage (immutable): One message of a conversation: from the user, the assistant or a tool.
  • AgentToolCall (immutable): One invocation of a tool during a turn and its outcome: run, denied for lack of a capability or entitlement, refused by the user, or failed.
  • AgentConnector (future work): A kind of external system a tool may need per-Organization credentials for: a vendor cloud, a calendar, e-mail.
  • AgentConnectorInstance (future work): One Organization's connection to a connector: who consented, where the credential lives (the secret manager, never the database) and whether it was revoked.