# CorePillar Docs > Documentation for CorePillar ModelHub, the governed AI chat client, and AgentHub, the AI agent evaluation and observability platform. - [CorePillar documentation](https://docs.corepillar.ai/index.md): Guides and reference for ModelHub, CorePillar's governed AI chat client, and AgentHub, the platform for evaluating, tracing and governing AI agents. - [What is ModelHub](https://docs.corepillar.ai/modelhub/introduction.md): ModelHub is CorePillar's governed AI chat client for employees: one chat box that routes, trims and screens every message before a model sees it. - [Quickstart](https://docs.corepillar.ai/modelhub/quickstart.md): Sign in to ModelHub with an email code or SSO and send your first message in a few minutes. - [Signing in](https://docs.corepillar.ai/modelhub/signing-in.md): How employees sign in to ModelHub with an emailed one-time code or Okta single sign-on, why an email must be approved first, and where you land afterwards. - [The chat screen](https://docs.corepillar.ai/modelhub/chat/overview.md): Every part of the ModelHub chat: the composer, sending and stopping, streaming answers, Markdown and code rendering, the per-answer report card and its Details panel. - [Conversations and history](https://docs.corepillar.ai/modelhub/chat/conversations.md): How ModelHub saves, lists and reopens your conversations, why reopened chats show placeholders, and what the sidebar can and cannot do. - [Models and routing](https://docs.corepillar.ai/modelhub/chat/models-and-routing.md): How the ModelHub model picker works, what Auto routing does with each message, how models are sorted into Small, Mid and Large, and what the routing line tells you. - [Attachments](https://docs.corepillar.ai/modelhub/chat/attachments.md): Attach text documents to a ModelHub message: supported file types, size and length limits, how files are scanned and masked, and every error you can hit. - [Optimise](https://docs.corepillar.ai/modelhub/chat/optimise.md): The Optimise switch in the ModelHub composer removes greetings, sign-offs and wordy phrases from your message before it is sent, so you pay for fewer tokens without changing what you asked. - [Privacy screening](https://docs.corepillar.ai/modelhub/chat/privacy-screening.md): What ModelHub finds in your messages and attachments, how it replaces personal data with placeholders before any model sees it, and when it asks you to confirm. - [AI Usage](https://docs.corepillar.ai/modelhub/usage.md): The AI Usage page in ModelHub shows your own spend, requests, tokens, model mix, privacy events and routing savings over the last 7, 30 or 90 days. - [Settings and profile](https://docs.corepillar.ai/modelhub/settings.md): What you can change in ModelHub as an employee: your profile photo, light or dark mode, your organization and project, encrypted-history passphrase, and signing out. - [How routing works](https://docs.corepillar.ai/modelhub/how-it-works/routing.md): The complete Auto routing algorithm in ModelHub: how models are tiered by price, how each message is scored, how the tier is chosen, when a second opinion is asked for, and how each answer is graded afterwards. - [How prompt tidying works](https://docs.corepillar.ai/modelhub/how-it-works/prompt-tidying.md): The exact rules behind ModelHub's Optimise switch: what is protected, every phrase it removes or shortens, the order they run in, and how savings are counted. - [How privacy screening works](https://docs.corepillar.ai/modelhub/how-it-works/privacy.md): The detection layers behind ModelHub's privacy screening, every entity type and its severity, how placeholders are built and restored, exactly what is stored, and what has and has not been measured. - [Rolling out ModelHub](https://docs.corepillar.ai/modelhub/admin/rollout.md): Administrator guide to giving employees ModelHub: connect models in AgentHub first, approve emails, add people as Users, hand out the right URL, and check it works. - [Access control](https://docs.corepillar.ai/modelhub/admin/access-control.md): How ModelHub stays chat-only: the deployment variant and server-side redirects, the hub role hierarchy, the AgentHub gate for Users, the shared-membership caveat, and how to remove someone. - [Troubleshooting and FAQ](https://docs.corepillar.ai/modelhub/troubleshooting.md): Fixes for common ModelHub problems, from sign-in and missing models to failed messages, placeholders in old chats and locked encrypted history, plus answers to frequent questions. - [Introduction](https://docs.corepillar.ai/agenthub/introduction.md): AgentHub is CorePillar's platform for tracing, costing, and evaluating AI agents, served at pillarforge.corepillar.ai. - [Quickstart](https://docs.corepillar.ai/agenthub/quickstart.md): Go from a new account to a traced, evaluated agent run in AgentHub. - [Concepts](https://docs.corepillar.ai/agenthub/concepts.md): A glossary of the building blocks in AgentHub: organizations, projects, roles, keys, traces, and evaluators. - [Sign-in and onboarding](https://docs.corepillar.ai/agenthub/onboarding.md): How signing in works, every step and field of the onboarding wizard, switching organizations and projects, and accepting an invite. - [Overview](https://docs.corepillar.ai/agenthub/overview.md): The project home page in AgentHub: setup options, the OpenTelemetry integration guide, project stat tiles, and the most recent runs. - [Model Manager](https://docs.corepillar.ai/agenthub/model-manager.md): Store provider API keys in your organization's encrypted vault, register the models a project may use, and see the pricing AgentHub uses for every cost figure. - [AI Usage](https://docs.corepillar.ai/agenthub/ai-usage.md): The organization-wide spend, model mix and PII dashboard in AgentHub: every metric, how it is calculated, who can see it, and how it differs from ModelHub's personal Usage page. - [Cost Calculator](https://docs.corepillar.ai/agenthub/cost-calculator.md): Describe an agent, generate realistic test scenarios for it, run them against one or more real models, and get measured cost, latency and pass/fail per model. - [Step 1: Configure](https://docs.corepillar.ai/agenthub/cost-calculator/configure.md): Every field on the Cost Calculator setup screen: the agent description, tone, skills, memory and tools, the model and key panel, the scenario count, and the live cost estimate. - [Step 2: Scenarios and running](https://docs.corepillar.ai/agenthub/cost-calculator/scenarios.md): How the Cost Calculator writes test scenarios for your agent, streams them in, handles failed slots, and then plays every scenario against every selected model with real, billed calls. - [Step 3: Results](https://docs.corepillar.ai/agenthub/cost-calculator/results.md): Reading a Cost Calculator run: the recommendation and candidate cards, monthly scale, model comparison, spend history and forecast, cost and TCO breakdowns, Agent Audit, and per-scenario detail. - [Templates](https://docs.corepillar.ai/agenthub/cost-calculator/templates.md): The ten ready-made agent configurations in the Cost Calculator, including the Coding Agent Template, what each one contains, and the two ways to use them. - [Import from traces](https://docs.corepillar.ai/agenthub/cost-calculator/import-from-traces.md): Use OpenTelemetry runs your agent already sent to AgentHub, either to fill the Cost Calculator configuration or to analyze the real runs directly as a measured run. - [Simulations](https://docs.corepillar.ai/agenthub/simulations.md): The list of every Cost Calculator run in a project, with each run's progress, model, pass/fail breakdown, grader categories and links to the traces behind each scenario. - [Traces](https://docs.corepillar.ai/agenthub/traces.md): Browse every run your agent sent to AgentHub, open one to see each step it took, and hand it to Evaluation or Reports. - [How evaluation works](https://docs.corepillar.ai/agenthub/evaluation/overview.md): Evaluators, collections, offline checks versus LLM judges, and the two ways AgentHub turns them into scores and pass rates. - [Evaluators](https://docs.corepillar.ai/agenthub/evaluation/evaluators.md): The default evaluator library, the canonical custom set, how to create and edit your own evaluator, prompt-template rules, and how each offline check is scored. - [Collections](https://docs.corepillar.ai/agenthub/evaluation/collections.md): Bundle evaluators into an ordered, reusable suite, see which collections a project can use, and what the production-quality collection contains. - [Evaluation runs](https://docs.corepillar.ai/agenthub/evaluation/runs.md): Run evaluations in the Your Evaluations tab, start saved trace evaluation runs, choose a judge model, read the results page, and understand what happens when a judge fails. - [Synthetic data and scenarios](https://docs.corepillar.ai/agenthub/synthetic-data.md): Turn a document, web page or pasted text into an agent definition, a fabricated dataset and sample scenarios, without connecting a real system. Plus what the Scenarios page is today. - [Reports](https://docs.corepillar.ai/agenthub/reports.md): Agent Audit Reports for a simulation run, an evaluation run or a single trace: what each report contains, how it is built, suggested fixes, and Markdown and PDF export. - [RL Export](https://docs.corepillar.ai/agenthub/rl-export.md): The status of RL Export in AgentHub: a non-functional preview page that is not in the sidebar and does not export your data. - [Settings overview](https://docs.corepillar.ai/agenthub/settings/overview.md): How Settings opens, which tabs each role sees, and what the General tab shows. - [Roles and permissions](https://docs.corepillar.ai/agenthub/settings/roles-and-permissions.md): The four organization roles, their permission strings, the hub roles they map to, and what each role can do in ModelHub and AgentHub. - [Members and invites](https://docs.corepillar.ai/agenthub/settings/members.md): How organization membership works: who is listed, how invites are created and accepted, changing roles, and removing people. - [Platform access](https://docs.corepillar.ai/agenthub/settings/platform-access.md): Control who can sign in to CorePillar at all: pending requests, the email and domain allowlist, denials, and how decisions are resolved. - [User Management](https://docs.corepillar.ai/agenthub/settings/user-management.md): Add, invite, re-role, and remove people in an organization by editing four email boxes, one per role. - [SSO with Okta](https://docs.corepillar.ai/agenthub/settings/sso-okta.md): Connect an Okta OIDC application, map Okta groups to roles, enforce single sign-on, and understand just-in-time provisioning. - [Tracing keys](https://docs.corepillar.ai/agenthub/settings/tracing-keys.md): Create and revoke the tk_live_ and tk_test_ keys your agents use to send traces, and understand how they are stored. - [Model Catalog](https://docs.corepillar.ai/agenthub/settings/model-catalog.md): A browse-only reference page under Settings. Today it shows a short fixed list and is not linked from the Settings tabs. - [Tracing quickstart](https://docs.corepillar.ai/agenthub/developers/tracing-quickstart.md): Create a tracing key, send your first trace over HTTP, and find it in Traces. - [Trace format](https://docs.corepillar.ai/agenthub/developers/trace-format.md): The exact JSON payload accepted by the trace ingest endpoint: every trace and span field, its type, default and limit, and how trace totals are computed. - [OpenTelemetry (OTLP)](https://docs.corepillar.ai/agenthub/developers/opentelemetry.md): Send traces from an existing OpenTelemetry, OpenLLMetry or OpenInference setup to AgentHub over OTLP/HTTP, with no code changes at your call sites. - [Idempotency and retries](https://docs.corepillar.ai/agenthub/developers/idempotency-and-retries.md): How the ingest endpoint deduplicates requests, tolerates out-of-order spans, and which errors you should retry. - [Introduction](https://docs.corepillar.ai/api-reference/introduction.md): Base URLs, the response envelope, pagination, content types and which AgentHub API endpoints are meant for external use. - [Authentication](https://docs.corepillar.ai/api-reference/authentication.md): How tracing keys authenticate ingestion, how session cookies authenticate everything else, and which permission each endpoint needs. - [Errors](https://docs.corepillar.ai/api-reference/errors.md): Every error code the API returns, with its HTTP status, what it means and what to do about it. - [Ingest a trace](https://docs.corepillar.ai/api-reference/ingestion/ingest-a-trace.md): Store one trace with 1 to 500 spans. Authenticated with a project tracing key; the trace lands in the key's project. - [Export OTLP traces](https://docs.corepillar.ai/api-reference/ingestion/export-otlp-traces.md): OpenTelemetry OTLP/HTTP trace receiver. Point an exporter's base endpoint at `https://pillarforge.corepillar.ai/api` (exporters append `/v1/traces`) and send the tracing key as `Authorization: Bearer ...`. - [Export OTLP metrics (discarded)](https://docs.corepillar.ai/api-reference/ingestion/export-otlp-metrics-discarded.md): Accepts OTLP/HTTP metric exports so SDKs that export metrics alongside traces (such as `Traceloop.init()`) don't log `404` errors. **Nothing is stored.** Requires a valid tracing key. - [Export OTLP logs (discarded)](https://docs.corepillar.ai/api-reference/ingestion/export-otlp-logs-discarded.md): Accepts OTLP/HTTP log exports so SDKs that export logs alongside traces don't log `404` errors. **Nothing is stored.** Requires a valid tracing key. - [List traces](https://docs.corepillar.ai/api-reference/traces/list-traces.md): Traces in a project, newest first by `started_at`, with cursor pagination. - [Get a trace](https://docs.corepillar.ai/api-reference/traces/get-a-trace.md): One trace with all of its spans, ordered by `started_at`. - [Adopt OpenTelemetry traces for analysis](https://docs.corepillar.ai/api-reference/traces/adopt-opentelemetry-traces-for-analysis.md): Makes OpenTelemetry-imported traces available to the Cost Calculator's analysis views (agent audit, reports and evaluation), the same way a generated simulation run is. Only traces in this project that arrived over OTLP (tagged `otel`) and aren't simulations can be adopted. Up to 20 trace ids per ca… - [List a trace's evaluation runs](https://docs.corepillar.ai/api-reference/evaluations/list-a-traces-evaluation-runs.md): The 5 most recent evaluation runs for the trace, newest first, each with its per-evaluator results. - [Evaluate a trace](https://docs.corepillar.ai/api-reference/evaluations/evaluate-a-trace.md): Runs every evaluator in a collection against the trace and stores the results. Offline (deterministic) evaluators run without a model. LLM-judge evaluators call the model in `model_config_id` with your organization's stored provider key, which is required if the collection contains any. Runs synchro… - [Explain a score gap between two models](https://docs.corepillar.ai/api-reference/evaluations/explain-a-score-gap-between-two-models.md): Writes one or two sentences explaining why two models scored differently on the same evaluator, from the judge's own notes. Uses a small platform-funded model call against your organization's platform allowance; when that isn't available or fails, returns a factual description of the score differenc… - [List evaluators](https://docs.corepillar.ai/api-reference/evaluators/list-evaluators.md): Built-in default evaluators and your organization's custom evaluators. - [Create an evaluator](https://docs.corepillar.ai/api-reference/evaluators/create-an-evaluator.md): Creates a custom, organization-owned evaluator. - [Update an evaluator](https://docs.corepillar.ai/api-reference/evaluators/update-an-evaluator.md): Updates a custom evaluator. Built-in defaults can't be edited; duplicate one to get an editable copy. - [Delete an evaluator](https://docs.corepillar.ai/api-reference/evaluators/delete-an-evaluator.md): Deletes a custom evaluator. Built-in defaults can't be deleted. - [List evaluator collections](https://docs.corepillar.ai/api-reference/evaluator-collections/list-evaluator-collections.md): Collections in the organization, newest first, each with its evaluators in order. - [Create an evaluator collection](https://docs.corepillar.ai/api-reference/evaluator-collections/create-an-evaluator-collection.md): Creates a collection. Evaluators run in the order given in `evaluator_ids`. - [List your organizations](https://docs.corepillar.ai/api-reference/organizations/list-your-organizations.md): Organizations you're a member of, each with your role name. - [List members](https://docs.corepillar.ai/api-reference/members/list-members.md): Members of the organization, oldest first, with role and profile. - [Invite a member](https://docs.corepillar.ai/api-reference/members/invite-a-member.md): Adds an existing user to the organization directly, or creates an invite (valid for 7 days) for someone who hasn't signed up yet. The email must already be approved under **Settings → Platform access**. - [Change a member's role](https://docs.corepillar.ai/api-reference/members/change-a-members-role.md): Sets a member's role. The Owner role can't be given to another user. - [List projects](https://docs.corepillar.ai/api-reference/projects/list-projects.md): Projects in the organization, oldest first. - [Create a project](https://docs.corepillar.ai/api-reference/projects/create-a-project.md): Creates a project. The slug is derived from the name. - [Get the Okta SSO configuration](https://docs.corepillar.ai/api-reference/sso/get-the-okta-sso-configuration.md): The organization's Okta configuration, with the client secret withheld, and the redirect URI to register in Okta. - [Save the Okta SSO configuration](https://docs.corepillar.ai/api-reference/sso/save-the-okta-sso-configuration.md): Creates or updates the Okta configuration. The client secret is encrypted at rest and never returned. It's required the first time; on later saves, omit it to keep the stored secret. - [List tracing keys](https://docs.corepillar.ai/api-reference/tracing-keys/list-tracing-keys.md): A project's tracing keys, newest first, including revoked ones. Only the prefix and hint are returned, never the key. - [Create a tracing key](https://docs.corepillar.ai/api-reference/tracing-keys/create-a-tracing-key.md): Creates a tracing key for the project. The full key is in `raw_key` and is returned only in this response. - [Revoke a tracing key](https://docs.corepillar.ai/api-reference/tracing-keys/revoke-a-tracing-key.md): Revokes a key. Ingestion with it fails with `401` from the next request. Revoking can't be undone. - [Estimate a run's cost](https://docs.corepillar.ai/api-reference/cost-calculator/estimate-a-runs-cost.md): Estimates what generating and running a batch of scenarios would cost, without calling any model. - [Generate scenarios](https://docs.corepillar.ai/api-reference/cost-calculator/generate-scenarios.md): Creates a run and generates test scenarios for the agent. Send `run_id` and `scenario_id` instead to regenerate one scenario of an existing run in place; the response is then `{ scenario }`. - [Generate scenarios (streaming)](https://docs.corepillar.ai/api-reference/cost-calculator/generate-scenarios-streaming.md): Same as **Generate scenarios**, but streams newline-delimited JSON events as scenarios are produced: - [Get a run](https://docs.corepillar.ai/api-reference/cost-calculator/get-a-run.md): A Cost Calculator run with its measured and estimated cost and per-scenario results. - [Execute a run](https://docs.corepillar.ai/api-reference/cost-calculator/execute-a-run.md): Runs every scenario of a generated run against the configured model, using your organization's provider key, and records each as a `simulation` trace. Runs synchronously: the `202` arrives when execution is finished. `job_id` equals the run id. - [Execute a run (streaming)](https://docs.corepillar.ai/api-reference/cost-calculator/execute-a-run-streaming.md): Executes a run, optionally across several models at once, streaming newline-delimited JSON progress: - [Recommend a model to ship](https://docs.corepillar.ai/api-reference/cost-calculator/recommend-a-model-to-ship.md): Picks one of 2 to 8 candidate models by weighing accuracy, reliability, latency and cost. A deterministic pick is always computed; when your organization's platform allowance is available, a small model call may refine it and write the rationale (`source: "model"`). Otherwise `source` is `heuristic`… - [List OpenTelemetry runs](https://docs.corepillar.ai/api-reference/cost-calculator/list-opentelemetry-runs.md): Up to the 100 most recent traces in the project that arrived over OTLP (not simulations), summarized for import into the Cost Calculator. - [Extract an agent config from runs](https://docs.corepillar.ai/api-reference/cost-calculator/extract-an-agent-config-from-runs.md): Reads the selected OpenTelemetry runs and extracts the system prompts, tone, tools and observed volumes, to prefill a Cost Calculator agent. - [Extract source text](https://docs.corepillar.ai/api-reference/synthetic/extract-source-text.md): Step 1 of synthetic setup: turns pasted text, a URL or an uploaded file into readable text, and returns the cost estimate for the synthesis step. No model is called. Files are limited to 4 MB; extracted text is truncated at 60,000 characters. - [Synthesize an agent blueprint](https://docs.corepillar.ai/api-reference/synthetic/synthesize-an-agent-blueprint.md): Step 2: one model call turns the extracted source into an agent spec, a synthetic system of record and a Markdown artifact. Returns `202` instead of `200` when the model's output was cut short; the usable parts come back with a list of what's missing. - [Preview scenarios](https://docs.corepillar.ai/api-reference/synthetic/preview-scenarios.md): Step 3: drafts up to 3 sample scenarios for the synthesized agent with the same generator the Cost Calculator uses, on the platform's key. Nothing is stored. Returns `202` when some scenarios failed to generate. - [Send a chat message](https://docs.corepillar.ai/api-reference/chat/send-a-chat-message.md): One ModelHub chat turn. The message (and any attachment text) is screened for personal data and masked before any model sees it, routed to a model (or the one you picked), and streamed back as server-sent events with masked values restored for you. - [Scan a draft for personal data](https://docs.corepillar.ai/api-reference/chat/scan-a-draft-for-personal-data.md): Fast, pattern-based privacy scan of draft text, used while you type. No model is called and nothing is stored. The report gives types, severities and positions, never the matched values. Returns a bare object, not the `{ data }` envelope. - [Read an attachment](https://docs.corepillar.ai/api-reference/chat/read-an-attachment.md): Extracts the text of an attached document and scans it for personal data. The file is read in memory and not stored. Accepts `.txt`, `.md`, `.markdown`, `.csv`, `.tsv`, `.json`, `.log`, `.pdf` and `.docx` up to 10 MB; text is truncated at 50,000 characters. Returns a bare object, not the `{ data }`… - [List conversations or get one](https://docs.corepillar.ai/api-reference/chat/list-conversations-or-get-one.md): Without `id`: your 40 most recent conversations in the project. With `id`: that conversation's messages. Only your own conversations are ever returned. Transcripts are stored masked, so reopened conversations show placeholders such as `[EMAIL_01]` where the live chat showed the value. Returns `{ con… - [Find SSO organizations for an email](https://docs.corepillar.ai/api-reference/auth/find-sso-organizations-for-an-email.md): Used by the sign-in page to decide whether to offer Okta sign-in. Returns the SSO-enabled organizations the email belongs to or is invited to (name, slug, and whether SSO is enforced). Organizations without SSO are never listed. Every response takes at least 250 ms, and requests are limited to 30 pe… ## OpenAPI Specs - [openapi](/api-reference/openapi.json) ## Optional - [corepillar.ai](https://corepillar.ai) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.