Which Stardog tool is for whom, which login each one needs, and how Voicebox turns a plain-English question into SPARQL.
Here's a puzzle. You paste the federated query from Chapter 9 into Studio, press Run, and there's Carolyn Inworth at the top with $502,529.42. You copy the same query into a five-line Python script, point it at the same database, and log in with the same email and password. The answer: 401 Unauthorized. What changed?
Section 13.2 answers that, and the answer explains how Stardog Cloud is put together. Then we tour the toolbox, including its star, Voicebox, which does for business users what Chapter 14's agent will do for you. Nothing gets built here. The one hands-on step is read-only: ask Voicebox a question and read the SPARQL it writes, which works only because your ontology and virtual graphs (Chapters 6 to 9) are in place.
| Term | What it is | Why it exists | Tiny example |
|---|---|---|---|
| Stardog Cloud portal | The website where people sign in | Manages endpoints, launches apps | cloud.stardog.com, email login |
| Endpoint | The Stardog server itself | Stores graphs, answers queries | <your-endpoint>.stardog.cloud:5820 |
| Native user | A user account on the endpoint | Programs need credentials the server knows | stardog_admin, role cloud |
| Voicebox | Stardog's natural-language question box | Questions without writing SPARQL | "Top spenders in Wisconsin?" → SPARQL → answer |
| Grounded answer | An answer whose facts all came from a query | So an LLM can't make numbers up | The answer shows its SPARQL |
| Stored query | A named SPARQL query saved on the server | Reuse, sharing, teaching Voicebox | system:QueryQ10546 in the kit |
| Knowledge kit | A packaged semantic layer described by kit.yaml | Installs model, rules, data and queries at once | The c360 training kit |
| MCP (Model Context Protocol) | A standard plug between AI apps and tools | Any AI host can call any tool server | Claude Desktop calling voicebox_ask |
Stardog Cloud has two things with two addresses. The portal, cloud.stardog.com, is where you sign in with your email: a control panel that lists your endpoints, launches the web apps, and manages API keys. The endpoint, https://<your-endpoint>.stardog.cloud:5820, is the actual Stardog 12.1.4 server in us-west-2. It has its own HTTP API (POST /kit-c360/query runs SPARQL) and its own users, unrelated to portal accounts.
That's the answer to the puzzle. In Studio, the portal connects to the endpoint on your behalf. A Python script has no portal in the middle, so it must bring credentials the endpoint knows, which your email isn't. Hence this project's native Stardog user, stardog_admin, with the role cloud, plus hr since Chapter 12: with named-graph security on, cloud alone reads no graphs, and hr grants each graph by name. Every program in this book, including the Chapter 14 agent, signs in as stardog_admin (or as one of the narrower users from Chapter 12).
Studio is the engineer's IDE, the tool you've lived in since Chapter 2. What DBeaver is for SQL, Studio's Workspace is for SPARQL. It holds the query editor with its reasoning toggle (Chapter 10), Databases for loading data and setting properties (Chapter 6), the Models view, the Data area for data sources and virtual graphs (Chapters 7 to 9), and Security (Chapter 12).
Designer is for modelers. You draw classes as boxes and relationships as arrows, attach a table or CSV to each class, and publish; Designer writes the ontology into a named graph and creates the mappings. Its fingerprints are in the kit: in c360_extended_rules.ttl, each rule:content has a <tag:stardog:designer:rule:content> copy and a compressed designer:rule:data blob from Designer's rule editor. So why write everything by hand? Because when something breaks (a missing sql.schemas, the reserved word date, a float drifting by two cents), you need to know what Designer generates underneath: the same triples, just faster.
Explorer is for browsing: search for a customer, land on her page, click her address or an order, and keep walking. It's Chapter 2's "follow the arrows" as a web page; the kit's kit.yaml gives it a starting point, initialSearch: "`urn:stardog:demos:c360:customer:230`". Its search depends on the full-text index (search.enabled), and virtual-graph data isn't stored in Stardog, so it may not be indexed. If Explorer can't find "Carolyn Inworth" but your Chapter 9 query can, that's probably why; check the docs for your version before promising Explorer on a purely virtual setup.
A business user types "Who are the top spenders in Wisconsin?" and Voicebox writes SPARQL, runs it, answers in a sentence, and shows the query. Underneath is a large language model (LLM), but what makes it work is your semantic layer. Press Play to watch.
Not from its training data. It reads four things you built:
rdfs:label for names, rdfs:comment for descriptions, rdfs:subClassOf for the hierarchy, and so:domainIncludes/so:rangeIncludes for which properties connect which classes. The guide recommends the schema.org pair over rdfs:domain/rdfs:range, the practical reason the c360 kit uses them (Chapter 6). "Spenders" matches no class, but it lands near the labels "price", "quantity" and "purchased by".search.enabled.system:voiceboxQuestion are shown to the LLM as worked examples. This is few-shot prompting: teaching by showing a few solved problems.Here is one of the kit's 317 stored queries, trimmed; each pairs English with SPARQL:
system:QueryQ10546 a system:StoredQuery , system:SharedQuery ;
system:queryDatabase "kit-c360" ;
system:voiceboxQuestion "Which rewards account customers bought at least $10K in a single order?" ;
system:queryString """SELECT DISTINCT ?customer0 WHERE {
?order0 a ecomm:Order .
?order0 ecomm:purchasePrice ?dat_0 .
?order0 ecomm:purchasedBy ?customer0 .
?customer0 ecomm:hasRewards ?rewardsAccount0 .
FILTER ("10000.00"^^xsd:decimal <= ?dat_0)
}""".This one example teaches that the arrow runs from order to customer (?order0 ecomm:purchasedBy ?customer0), that money is compared as xsd:decimal, and that the query returns IRIs rather than names. The docs recommend exactly that (Voicebox looks up the labels before showing results), and suggest starting with five to ten examples that together cover the whole model.
Three notes for our database. First, Voicebox has to be on: the database option voicebox.enabled (the kit's kit.yaml sets it to true) can only be enabled if the server's license allows Voicebox. Second, a Voicebox app lets you choose its data graph, schema and reasoning setting. Our facts live only in virtual graphs, so if Voicebox finds nothing where your Chapter 9 query finds Carolyn, check that setting first. Third, the kit's examples were written for its CSV data, and a couple use properties our mappings don't produce (ecomm:race). The best examples are ones you write, such as your Chapter 9 query saved as "Who are the top spenders?".
A stored query is SPARQL saved on the server under a name, with metadata. The kit ships its 317 as Turtle, since Stardog keeps stored queries as triples in its system catalog. The types: system:StoredQuery (saved), system:SharedQuery (visible to others; Voicebox learns only from shared ones), and system:ReasoningQuery (run with reasoning on). In Studio you save one from the editor. Chapter 14's five competency questions, with their verified queries, are ideal candidates: a regression suite, Voicebox examples, and reference answers for the agent.
A knowledge kit is a semantic layer in a box. Its manifest, kit.yaml, reads like this book's summary:
| kit.yaml section | What the c360 kit says | Where you did it |
|---|---|---|
options | search.enabled, graph.aliases, voicebox.enabled all true | The database the kit created |
namespaces | ecomm: "tag:stardog:api:ecomm:" | Chapter 3 |
data (models) | schema.ttl → the model graph; extended model and rules → urn:stardog:c360_extended_rules:1.0:model | Chapters 5, 6, 10 |
data (CSVs) | Eight CSVs with .sms mappings, copied into urn:stardog:training-c360:1.0:data | Replaced by virtual graphs (Chapters 7 to 9) |
schemas | c360_schema, c360_extended_rules | reasoning.schemas (Chapters 6, 10) |
queries | kit-queries.ttl | Stored queries, above |
The fourth row is the interesting one. The kit materializes its data (Chapter 7's ETL-style option). You kept its model, rules and IRI patterns and swapped that one section for live virtual graphs. Because your mappings mint the same IRIs (urn:stardog:demos:c360:customer:{cid} and friends), the kit's rules and stored queries still fit: the Chapter 9 IRI trick pays off a second time.
MCP (Model Context Protocol) is an open standard for connecting AI applications to tools. An MCP server advertises tools, each with a name, a description and a JSON schema for its arguments. An MCP host (Claude Desktop, Claude Code, Cursor, or your own agent) discovers them and lets its model call them. MCP is to AI tools roughly what JDBC is to databases: one standard plug.
Stardog publishes an open-source server on GitHub, stardog-union/stardog-cloud-mcp. Its README lists exactly three tools, all built on the Voicebox APIs:
| Tool | What it does |
|---|---|
voicebox_settings | Returns your Voicebox application's settings: database, model and configuration. |
voicebox_ask | Asks a natural-language question and returns Voicebox's full answer, with its reasoning chain, the SPARQL it ran, and provenance. |
voicebox_generate_query | Turns a question into SPARQL without running it, so your code can check the query first. |
To run it you need a Voicebox API token: in the portal's profile menu, choose Manage API Keys, create an application and generate a secret. That's a third kind of credential, neither your portal login nor stardog_admin. Not on the Free tier. The Voicebox developer guide says "Manage API Keys" only appears "if your organization has been given Voicebox API access", and on a Free account the profile menu has no such entry (checked: it lists Update Profile, Update Cookie Consent, Logout, My Workspace and Delete Account; a Stardog Community thread reports the same). No key means no MCP server, so on the Free tier read this part along. Nothing later depends on it: the Chapter 14 agent talks to Stardog directly with a username and password (stardog_admin, hr_user or marketing_user). Locally, the server runs on Python 3.12 or 3.13 with uv, started by the host (uv run stardog-cloud-mcp --token … --client_id …). The remote mode is beta: a Docker container serving HTTP on port 7001, with the token in an x-sdc-api-key header.
| Tool | For | Signs in with | Best at |
|---|---|---|---|
| Studio | Engineers | Portal login | SPARQL, loading, virtual graphs, security |
| Designer | Modelers | Portal login | Drawing ontologies and mappings |
| Explorer | Analysts | Portal login | Browsing entities and links |
| Voicebox | Business users | Portal login | Plain-English questions, with the query shown |
| HTTP API / pystardog | Programs, the Chapter 14 agent | Native user | Running exact SPARQL |
| MCP server | AI hosts and agents | Voicebox API token | Voicebox as a tool |
Studio goes through the portal, which connects to the endpoint for you. The script talks to the endpoint directly, and the endpoint doesn't know portal accounts. Programs need a native Stardog user: stardog_admin or a narrower Chapter 12 user.
The ontology's labels, comments and domain/range hints; the full-text search index (for values like "Wisconsin"); shared stored queries with system:voiceboxQuestion examples; and the Stardog engine, which runs the query through the virtual graphs.
Every fact in the answer came from a query against your graph, and the query is shown. The query can still be wrong (a missing * quantity, the wrong graph), so you keep reference answers.
Your mappings mint the same IRIs and use the same ontology terms, so rules and queries match virtual triples exactly as they would copied ones.
No. All three of its tools go through Voicebox. For exact queries use the HTTP API or pystardog, which is Path A in Chapter 14.
cloud.stardog.com, email login) and endpoint (<your-endpoint>.stardog.cloud:5820, native users) are different doors. Programs use stardog_admin or another native user.kit.yaml. You kept the c360 kit's model, rules and IRIs and swapped its CSV data for virtual graphs.voicebox_settings, voicebox_ask and voicebox_generate_query, with a gated Voicebox API token. This is the blog's Path B.