K Khan
OMVPPaaS CMS Administrator Certification
Sep 13, 2025
visibility 2375
star star star star star
(0 votes)

Opal Core Concepts

Before you dive into the code, it's crucial to understand the foundational ideas that make Opal tick. Core concepts are consistent across all its SDKs. 

The Tool Manifest

Imagine you're introducing your tool to the Opal platform for the first time. You need a well-structured document that explains exactly what it is, what it needs, and how to use it. That document is the Tool Manifest. It’s the single source of truth that ensures Opal understands your tool perfectly.

This JSON blueprint contains all the essential details:
Name & Description: The human-readable "elevator pitch" for your tool.
Parameters: A detailed list of every input your tool expects, including their names, data types (string, number, boolean, etc.), and whether they are required or optional.
How to Invoke: The technical instructions: the specific HTTP endpoint (URL) and method (GET/POST) Opal should call to run your tool.
Authentication Requirements: Instructions on what, if any, credentials are needed.


The Discovery Endpoint

This is a specific URL your tool service must expose, typically at /discovery. When you register your tool with Opal, this is the first place it will "knock on the door." Its sole job is to respond to Opal's call by returning that all-important Tool Manifest we just discussed. This is how Opal dynamically discovers every tool your service offers, without you having to manually configure each one in a UI.

This endpoint is the critical handshake between your service and the Opal platform. If it's down, returns an error, or provides a malformed manifest, the conversation stops before it even begins. The SDKs automate its creation, so you can focus on your tool's logic.

Tool Execution

This is the main event—the process where Opal calls your tool to do its actual job. A user or process in Opal triggers your tool. Opal packages up all the provided parameters into a neat HTTP request (a POST with a JSON body). This request is sent to your tool's designated execution endpoint. Your tool processes the request, performs its task (query a database, call an API, run a calculation, etc.), and then returns a structured response (as JSON) back to Opal. This is the "work" phase. Understanding the expected request format and designing a clear response is key to implementing your tool's core functionality effectively.

Authentication

The essential security layer that ensures only authorized requests from Opal can trigger your tools and access their capabilities.

Bearer Tokens: A simple yet powerful method where Opal passes a secret token in the Authorization header. Your tool's first job is to validate this token before doing anything else.
OAuth Flows: For tools that interact with third-party services (like Google or Salesforce), your tool can leverage OAuth through Opal to securely access user data.

The Opal SDKs provide built-in helpers to simplify implementing these critical security measures.

 

Do you want to learn more?

https://world.optimizely.com/blogs/allthingsopti/dates/2025/8/a-day-in-the-life-of-an-optimizely-developer---the-optimizely-opal-tools-sdk-how-to-extend-opal-with-your-own-superpowers/

 

Sep 13, 2025

Comments

error Please login to comment.
Latest blogs
Surviving a Dirty Feed. Part 3: Error Handling and Event Batching

Committing a 250,000-row Optimizely catalog import row by row, returning a per-row failure report, and coalescing catalog events into one per batch.

Stanisław Szołkowski | Oct 16, 2026 |

Building UI Extensions for Optimizely SaaS CMS

Introduction Developers have been extending the functionality of Optimizely PaaS CMS for years using addons built in C# and deployed as NuGet...

Mark Stott | Oct 15, 2026

Cheapskate AI Translator: Because Translation Should Not Require a Second Mortgage

There is a particular kind of software project that begins with a detailed architecture document, a product roadmap, and a carefully assembled...

Linh Doan Cuu | Oct 15, 2026

Computed Fields in CMS 13 Content Contracts with Optimizely Graph

Content Contracts in Optimizely CMS 13 allow different content types to share a common structure when querying Optimizely Graph. But what if the...

Mardy | Oct 14, 2026