Reusable
Independent consumers call the same domain implementation through their preferred interface.
An Action Engine is a versioned software component that publishes reusable, AI-supported domain actions through stable contracts. Models, prompts, data, retrieval, tools, and deterministic algorithms remain replaceable implementation details.
The category is framework-neutral. An Action Engine does not need Invokta, TypeScript, MCP, or any particular deployment model. Invokta is one framework for implementing the boundary.
A tool that creates a reviewed specification, retrieves relevant project context, recommends the next safe workflow step, classifies a support ticket, or assesses whether a code change is ready already contains a domain action.
The MCP endpoint, command, HTTP route, or direct API is a delivery path. The durable value is the requested outcome and the rules that produce it. Naming the Action Engine boundary makes that outcome independently reusable, testable, owned, and versioned.
AI can make the first transport integration quick to create, but the team still owns authentication, schema compatibility, cancellation, error mapping, protocol upgrades, tests, and observability. A second interface often exposes assumptions shaped around the first transport.
One Action Engine keeps the domain contract and behavior behind every consumer.
For example, support.classify-ticket can validate the same request, apply the
same access rule, and return the same result for an agent, graph node,
application, CLI command, or MCP tool.
Reusable
Independent consumers call the same domain implementation through their preferred interface.
Testable
Exercise the action and its failures without starting a complete agent or workflow.
Replaceable inside
Change a model, prompt, provider, retrieval strategy, or deterministic rule behind the stable contract.
Owned
Give the action an explicit version and one place to review access, limits, public failures, and compatibility.
An implementation qualifies when it:
review.assess-task-readiness;An infrastructure operation such as llm.complete does not provide a domain
outcome by itself. A one-off model call usually does not need an engine until
reuse, independent ownership, or contract stability becomes useful.
| Component | What it owns | How it relates to an Action Engine |
|---|---|---|
| Prompt or skill | Instructions, context, knowledge, and usage guidance | Helps implement or select an action |
| Rule | A constraint, permission, transformation, or deterministic decision | Governs action selection, access, or domain behavior |
| Loop or graph | The next step, repetition, branches, dependencies, and stopping | Coordinates contracted actions |
| Agent or harness | Goals, tool selection, messages, memory, and execution environment | Consumes or hosts access to actions |
| Action Engine | The reusable domain outcome and its runtime contract | Owns validation, access, execution, and public failures |
| Invokta | Framework contracts, runtime, and adapters | Provides one implementation of the Action Engine boundary |
A product can combine these components, but each responsibility can evolve without duplicating the domain action.
Suppose support.classify-ticket accepts a ticket ID and returns a category,
confidence, and rationale. Its implementation can move to another model, add
retrieval, or use deterministic rules. Consumers continue to send and receive
the same validated objects.
Invokta supplies the shared runtime mechanics and adapters while engine authors retain their domain rules, prompts, models, data integrations, evaluations, and quality decisions. See complete example engines or continue with the capability contract.