Skip to content

Extend Pluto

Developers extend Pluto Core through four interfaces. Nothing else is a supported extension point.

InterfaceAddAdmins then
IToolA new tool type, such as a call to your order system. Optionally with IToolAuthoring, so admins fill in settings instead of writing an Input Schema.Pick the new name in a tool’s Tool Type.
IModelProviderA connection to another model provider.Name the class in an Agent Model’s Model Adapter Class.
IContextProviderContext that needs more than a Field Set.Pick the class in a context provider’s Implementation Reference.
IToolAuthorizationPolicyRules that allow, deny, or require approval call by call.Pick the class in the agent’s Tool Authorization Policy Class.

Core runs each one inside its own lifecycle. The extension returns a result. Core records it, retries it, or pauses the run. An extension never writes Core’s records itself.

  1. Read the extension contract. It lists every rule Core relies on: access checks, size limits, error types, and how to report an outcome Core cannot see.
  2. Choose the tool type’s Effects carefully. It decides whether Core may repeat a call. See Effects.
  3. Return records as record sets, not as text. Core protects sensitive fields and filters records for the person only in record sets.
  4. Use only Pluto’s global Apex and the contract’s rules. Then your extension can stay private under any license. See License.

A tool class needs an Agent Tool Type custom metadata record, deployed with it:

FieldValue
Label and nameWhat admins type in Tool Type, such as LookupOrder
Tool ClassYour class
Implementation TypeApex
EffectsStays in This Org, Reads Outside Systems, or Changes Outside Systems
DescriptionOne sentence for admins

Test against the exact Pluto Core version you will install. At least cover: sharing and field access under a standard user, timeouts, permanent and retryable errors, oversized responses, schema rejection, deduplication on the operation key, and the Unknown path for an outside effect Core cannot confirm.

Pluto is licensed under the GNU Affero General Public License, version 3 only.