Start Building
with Ariad

Rapid Salesforce development without fear. We are tough so you can be bold.

Getting Started

Ariad is Noetic's static-analysis engine for Salesforce. Connect an org with a read-only login and Ariad inspects its metadata and configuration — it never modifies anything in your org — turning the results into a health score and a finding-by-finding breakdown you can act on.

Create an Account

Sign up with your work email and log in. Once you're signed in, the top-right of every page shows My Account instead of Login — that's where your profile, org connections, membership and integrations live.

Connect an Org

Open the Ariad app and click Connect Salesforce org (or Connect to Salesforce sandbox). You'll be sent to Salesforce to authorise, then returned to the app automatically — production or sandbox can come first.

Once connected, click Run analysis. Ariad works through each domain in turn and the summary cards fill in as results arrive. The app also includes the Org Toolkit — a manual Flow XML analyser and permission-comparison tools for ad-hoc investigation.

Sandboxes

An account can sync one production org and up to five sandboxes. Each connected org appears as a tab at the top of the Ariad app with a PROD or SBX badge; switching tabs switches the whole workspace — summary, findings, history and trend — to that org.

  • All orgs must belong to the same Salesforce account. A sandbox can be connected before (or without) the production org, but every org on your Noetic account must share the same My Domain family (for example acme--dev.sandbox.my.salesforce.com belongs with acme.my.salesforce.com). Orgs from a different Salesforce account are rejected.
  • Each org's analyses are tracked separately — runs, history and trends are per-org and all restore across logins.
  • Removing an org happens in My AccountOrg connections, not in the app. Removing an org deletes its saved analysis; other connected orgs are unaffected.

Understanding your results

What Ariad checks, spanning code quality, security, governance and release readiness:

DomainWhat Ariad looks at
FlowEvery Flow's structure — DML and queries inside loops, missing fault paths, hard-coded IDs, inactive or redundant automation, and more.
ApexClasses and triggers — bulkification problems, SOQL/DML in loops, missing sharing declarations, test coverage signals, trigger patterns.
UsersUser-level access hygiene — over-permissioned users, dormant accounts, risky permission combinations.
Integrations & credentialsNamed credentials, remote site settings and endpoints — insecure endpoints, legacy auth patterns, credential hygiene.
Security postureOrg-wide security settings — session and password policies, plus your Salesforce Health Check score.
Org limits & storageData and file storage capacity plus governor limits (API requests, async Apex, emails and more) — flags anything approaching its cap so you're warned before you hit a wall.
Automation & legacy debtWorkflow Rules and Process Builders — both being retired by Salesforce — flagged for migration to Flow.
Front-end code (LWC & Aura)Static analysis of Lightning Web Component and Aura source for security (Locker/LWS violations, eval, innerHTML), portability (hardcoded IDs/URLs), and code quality (console/debugger).
API version healthAPI-version staleness across all metadata — Apex, triggers, Flows, LWC, Aura, Visualforce pages and components — so you can upgrade before Salesforce retires an old version.
DevOps & release healthApex test coverage (org-wide and per class, from the last test run) against the 75% deployment threshold, plus test classes that run code but contain no assertions.
Licensing & packagesUser, feature and package license utilisation (near-cap capacity risks and idle-seat cost savings), license expiry, and an inventory of installed managed packages.
Reports & adoptionStale reports not run in 6+ months, and dashboards whose running user is inactive (broken for other viewers).
Agentforce readinessHow prepared the org's data, automation and permissions are for agent-based AI features.

Where your data lives

Your Salesforce login tokens never leave your browser — Noetic's servers never store them. Analysis results are saved to your Noetic account, so your findings, history and trend data follow you across logins and devices. On a new device your past analyses appear immediately; you only reconnect to Salesforce when you want to run a fresh analysis.

Org health score

Each connected org gets a single health score out of 100, shown as a dial at the top of the app. It's a size-normalised weighted average of every analysis section: within a section we measure severity-weighted findings per component analysed (so a large org isn't penalised just for being large), turn that into a 0–100 sub-score, and average the sections that ran (weighted by importance — security and code quality count for more than, say, stale reports). Two sections act as ceilings: your score can't be high if the Salesforce Health Check score is low or if Apex coverage is below the deployment threshold. Fixing findings always moves the score up.

Severity levels

Critical Issues that risk data integrity, security or production stability — address these first.
Warning Patterns likely to cause problems as the org scales or changes.
Recommendation Best-practice improvements that raise maintainability and quality.

Findings and suggested fixes

Every finding names the specific component (a Flow, an Apex class or trigger, a user, an endpoint or a security setting), describes the issue, and includes a suggested fix. The detail pages group findings by component so related issues can be fixed together.

Health Check and trends

The Security posture domain includes your org's Salesforce Health Check score (out of 100). The trend chart on the app page tracks your counts across analysis runs, and the risks mitigated view records findings that have been resolved between runs.

Custom rules

Custom Rules let you enforce your own governance standards on top of Ariad's built-in analysis. Open the Ariad app and click Configure on the Custom Rules card to choose your rules — they run as part of every analysis, and anything that breaks them appears as a defect on the Custom Rules page (and in your exports). Rules include required field/flow descriptions, Data Sensitivity Level, Compliance Categorization, and naming conventions (using * for any text and # for a number — e.g. RT - * - * matches "RT - Account - Sync addresses") across Flows, Apex classes/triggers, custom fields/objects, LWCs, page layouts and Lightning pages.

Exporting your results

Export all orgs to Excel (top of the Ariad app) produces one workbook covering every connected org: a cover sheet with per-org critical / warning / recommendation counts across all domains and each org's Health Check score, followed by per-org detail sheets for every domain. Sheets are filterable — useful for sharing with teams or attaching to change-management records.

Integrations

Bring Ariad's findings into the tools you already use — point an AI coding agent at your results, or call the endpoint directly.

MCP Server

Noetic exposes your analysis results over the Model Context Protocol (MCP) — an open standard that lets AI agents like Claude Code, Claude Desktop and Cursor call tools against your data. Point an agent at Noetic's MCP endpoint and it can read your findings, explain them, prioritise them, and draft code improvements — for example, rewriting an Apex method to fix a SOQL-in-loop finding.

MCP access is read-only and snapshot-based: the agent sees your stored analysis results, never your Salesforce org, and nothing it does can change either.

1. Generate an API key

  1. Go to My AccountIntegrations.
  2. Enter a label (e.g. "Claude Code") and click Generate key.
  3. Copy the key immediately — it's shown once and never again. You can hold up to three keys and revoke any of them at any time.

2. Connect your agent

Claude Code — run this in a terminal, replacing YOUR_KEY:

claude mcp add --transport http noetic-ariad https://noetic-studio.com/mcp \
  --header "Authorization: Bearer YOUR_KEY"

Claude Desktop, Cursor and other clients — add this to the client's MCP configuration:

{
  "mcpServers": {
    "noetic-ariad": {
      "type": "http",
      "url": "https://noetic-studio.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

3. Available tools

ToolWhat it returns
list_orgsYour connected orgs with their keys, type (production/sandbox) and last-analysed dates.
get_org_summaryCritical / warning / recommendation counts per domain plus the Health Check score for one org.
get_flow_issuesFlow findings with severity, category and suggested fixes.
get_apex_issuesApex class and trigger findings with suggested fixes.
get_user_issuesPer-user access violations.
get_integration_issuesCredential and endpoint findings.
get_security_issuesSecurity-posture findings with recommended actions.
compare_orgsSide-by-side finding counts for two orgs — e.g. sandbox vs production drift.

The findings tools accept an optional orgKey (defaults to your active org), a severity filter (critical / warning / recommendation) and limit / offset pagination.

4. Things to ask

  • "List my orgs and summarise the critical issues in production."
  • "Show me the Apex findings and draft the code changes that would fix the top three."
  • "Compare my dev sandbox against production — what's drifted?"
  • "Which flows have DML inside loops, and how should each be restructured?"
  • "Write a remediation plan for our security posture findings, ordered by risk."

API

Noetic's programmatic surface today is the MCP endpoint above — every capability it exposes (org list, summaries, findings) is available through it. There's no separate general-purpose REST API yet.

If you'd rather call it directly instead of through an MCP client, the endpoint speaks plain JSON-RPC 2.0 over HTTP, so a raw request works the same way an MCP client's would:

curl https://noetic-studio.com/mcp \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"list_orgs","arguments":{}},"id":1}'

Use method: "tools/list" to enumerate the available tools, and tools/call with a tool name and its arguments to run one — the same tools listed above.