---
title: "OPAL — The Agent Harness for Agents, LLMs, Skills, Tools & Data Spaces"
description: "OPAL is a harness that loosely couples Agents, LLMs, Skills, Tools, and Data Spaces (databases, knowledge bases, filesystems, and APIs). It exposes Virtuoso SQL Stored Procedures and OpenAPI-compliant Webservices as MCP-accessible Tools, loosely coupled to the Data Spaces beneath them — governed by Virtuoso and connected by UDA."
url: urn:osdi:this
dateModified: 2026-10-30T15:45:34Z
language: en
---
AI Agent, Skill & Tool Platform

The product name leads, then the value proposition (the page's headline), then the description.

# OPAL

Where Agents, Skills, and Tools get built — *loosely coupled all the way down.*

OPAL is where you build the agent harness — Agents, Skills, and Tools — and the context, comprising memory, that informs every Skill it runs. A Tool exposes a Virtuoso SQL Stored Procedure or an OpenAPI-compliant Webservice as an MCP-accessible interface, loosely coupled to a Skill above it and to a Data Space below — a database, knowledge base, filesystem, or API. Change what's underneath, and the Agent built on top doesn't need to know.

[Talk to an Architect](urn:osdi:siteprofessional-services.html#contact) [See the Governance Layer →](urn:osdi:sitevirtuoso.html)

Agents · Skills · Tools · Context & Memory · Data Spaces · MCP · A2A

**Loosely coupled, top to bottom.** Agents, Skills, and Tools are all created and deployed in OPAL. An Agent calls a Skill; a Skill calls a Tool; a Tool — an MCP-accessible interface OPAL exposes over a Virtuoso SQL Stored Procedure or an OpenAPI-compliant Webservice — reaches a Data Space beneath it: a database, knowledge base, filesystem, or API. Each link can be discovered and replaced independently, so a change at one layer doesn't ripple through the rest.

Every agent framework wants its own tool definitions, hard-wired to whichever database happened to be behind them at build time. The result, eighteen months into most enterprise AI programs, is a pile of one-off integrations that break the moment a schema changes or a system gets replaced — because the Agent, the Tool, and the Data Space were never separate things to begin with. OPAL exists to keep them separate: Agents, Skills, and Tools you build once in OPAL — Tools that expose Virtuoso SQL Stored Procedures and OpenAPI-compliant Webservices as MCP-accessible interfaces — sitting above Data Spaces that can change underneath without anyone rewriting a prompt.

What OPAL does

## Three layers, each loosely coupled to the one beneath it

Nothing about your systems changes. OPAL is where Agents, Skills, and Tools get created and deployed, and where Tools stay loosely coupled to the Data Spaces they depend on.

- **Agents, Skills, and Tools, created and deployed in OPAL.** This is where the work of building an agent actually happens — including the Tools it calls — not a prompt pasted into a chat window.
- **Skills run on context, not guesswork.** Every Skill call carries context — including memory of prior calls and their outcomes — so an agent doesn't start blind on each invocation.
- **Skills are loosely coupled to Tools.** A Skill calls a Tool by contract, not by hard-wired implementation — the Tool behind it can change without the Skill being rewritten.
- **Tools expose Virtuoso Stored Procedures and OpenAPI Webservices as MCP-accessible interfaces.** OPAL wraps a Virtuoso SQL Stored Procedure or an OpenAPI-compliant Webservice as a Tool, loosely coupled to the Data Space underneath — the source of truth stays in the system that already owns it.
- **MCP-native and A2A-ready.** Every Skill is exposed as a Model Context Protocol tool and publishes an Agent Card, discoverable by any MCP client or A2A-aware agent without custom client code.
- **Identity separate from the human it acts for.** Each call down the chain carries its own ABAC-scoped agent identity, so an agent can be granted exactly the access a task requires — no more, no less.
- **Versioned like code.** Agents, Skills, and Tools are artifacts you can diff, review, and roll back — not a prompt someone edited in a chat window last Tuesday.

How it's structured

## Three tiers, each one replaceable on its own

Top — Agents & Skills

Created and deployed in OPAL

You author the Agent and its Skills once — inputs, outputs, and the identity scope each Skill requires — then publish via MCP and A2A so any framework can call them.

Middle — Tools

Also created in OPAL, loosely coupled to Skills

OPAL exposes a Virtuoso SQL Stored Procedure or an OpenAPI-compliant Webservice as an MCP-accessible Tool — swap what's behind it without touching the Skill above.

Bottom — Data Spaces

Governed by Virtuoso, reached via UDA

Databases, knowledge bases, filesystems, and APIs sit under Virtuoso's ABAC access control, evaluated against the agent's own identity on every call.

### Why believe us — the facts

**OPAL is not a new company's first product.** It runs on Virtuoso, the engine OpenLink has developed since 1998, and on the ABAC identity model already protecting production data spaces — the agent layer is new, the governance underneath it is not.

**Same connectivity, no new trust boundary.** Skills that read or write relational data go through UDA's ODBC/JDBC drivers — the same drivers your BI tools already use, under the same security review.

**Deployment shape:** a typical OPAL rollout exposes [N] skills across [M] backend systems within the first engagement phase, scoped to [K] ABAC identity roles. *(Figures to be supplied from engagement records — this page states nothing it cannot prove.)*

Offers & Pricing. Present only for pages whose graph carries a oplsite:pricingNote: data-osdi-if resolves a scalar, which the multi-row "offers" source is not, so the note is the guard (YouID shares this layout and has no offers).

Authored sections (full-monty): the body of content/<page>.html, for what the page's RDF does not model (install, FAQ, use cases ...). An empty content stub adds nothing.

"Part of VOICE" band for the Virtuoso and OPAL pages (user-approved 2026-10-28): a cross-link, not a second description of VOICE, which lives on its own page. Links are authored slash-less; relink_content.py resolves them.

Part of VOICE

## Virtuoso, OPAL, and LOAM, working as one

VOICE (Virtuoso Open Interoperable Context Engine) pairs federated data access and semantic context with an agent harness and persistent memory (LOAM, Linked Open Agent Memory), so any agent and any LLM can work across the Data Spaces you already have.

[Explore VOICE →](urn:osdi:sitevoice/)

Ready when your data is

## Bring one workflow your team keeps rebuilding in prompts.

We'll show you what it looks like as a governed OPAL skill instead — and whether a Forward Deployed Engineering engagement gets it into production.

[Book a Scoping Call](urn:osdi:siteprofessional-services.html#contact) [Contact Us](urn:osdi:sitecontact.html)
