Skip to main content
Modules are how OpenTools organises tools into domains, for example email, trading or calendar, and not just by their provider. Each module defines a bounded set of tools, schemas, and normalisation rules around a single problem, such as trading, email, or calendars. Instead of thinking in terms of providers or APIs, OpenTools encourages you to think in terms of what your application is trying to do.

What is a module?

A module is a domain-level grouping of tools. It defines which tools exist for that domain and what schemas those tools return. It also defines which providers are supported and how data is normalised across providers For example, the Trading module contains tools like:
  • Account retrieval
  • Position listing
  • Order placement
  • Portfolio history
Those tools may be backed by different providers, but the module defines the shared contract which is also known as the canonical schema.

Why modules exist

Providers solve infrastructure problems but modules transform them into application use-cases so that you can scale with ease and allow for your users to adopt these integrations. Without modules, applications quickly become tangled in extraneous logic, like re-configuring differing APIs for the same concept, different response shapes or conditional handling everywhere Modules enforce a theoretical boundary based on DRY principles:
If two providers solve the same problem, they belong in the same module.
Typical interaction with OpenTools is at the module level, not by manually wiring individual tools together. This allows OpenTools to normalise behavior once and reuse it everywhere.

Current modules

At the moment, OpenTools includes a single production-ready module, with more listed within the roadmap and their approximate timelines. Please note that this is prone to change depending on user demand and contributions. Currently, only the Trading module is actively in production, which covers market and account interactions across supported trading providers. More modules will follow as OpenTools expands. This is intentional; modules are added only when they can be fully supported as some are currently under development and actively stress-tested at time of writing.

Next steps