Integrations
TruthLock checks an answer before anyone relies on it. That check has to happen where the answer is made: in an agent, in a service console, in an automation, in your own code. There are three doors in, and they all open onto the same record.
Works today
Every stack serves a remote Model Context Protocol server with OAuth sign-in. Agentforce, Now Assist, Claude, ChatGPT, Claude Code and Cursor connect to one URL and get five tools: fast check, verify, get the record, reliance check, and ask. Nothing to deploy on the platform side.
https://app.truthlock.io/mcp
Packages ready
Salesforce, ServiceNow, Zapier, n8n, Make, Power Automate, Workato and MuleSoft each have a package: actions for the four calls, and a trigger that fires when a verification finishes. Each is downloadable inside the app with a step-by-step guide that fills in your organization and stack.
app.truthlock.io → Integrate → Platforms
Works today
A REST API, Python and TypeScript SDKs, a CLI, signed webhooks, and an OpenAPI 3.0 profile (and a Swagger 2.0 rendering) that any connector builder imports. Five calls cover almost every integration ever written.
POST /v1/organizations/{org}/assess
POST /v1/organizations/{org}/verify
GET …/verifications/{id}/digest
Platforms
Fast check answers in about ten seconds, inside every platform's synchronous limit. Verify starts the full run and returns at once. Get digest reads the finished record as one flat row: outcome, grade, counts, the attestation link, and the reliance decisions. Reliance check answers allow, review or deny for an operation. The trigger subscribes a webhook when a workflow is switched on and removes it when it is switched off.
Mounts the MCP server with OAuth as an agent's tool source. Or, in the Salesforce package, the same four calls as Apex agent actions.
AI Agent Fabric mounts the MCP server. Flow Designer actions come from the Spoke Generator fed the OpenAPI profile.
Add the MCP URL as a connector and sign in. The agent checks its own answer and corrects it before anyone reads it.
A DX project: four Invocable Apex actions for Flow Builder and Agentforce over a named credential, with tests; an External Service registration and three subflows for an org without custom Apex.
Deploy with the Salesforce CLI, enter the key in Setup, assign a permission set.
An update set: a Script Include for the four calls, a Scripted REST receiver that checks the webhook signature and raises a platform event, a Script Action that writes the finding on the record, and a rule that verifies knowledge articles on publish.
Import the update set, set five system properties, point the webhook at the receiver.
Four actions and an instant trigger, plus a polling trigger for accounts without inbound webhooks. Retries never bill twice.
Push with the Zapier CLI and invite users; a public listing comes after review.
A community node with the calls and a trigger node that verifies every delivery's signature over the raw body before it becomes an item.
Install n8n-nodes-truthlock from Settings → Community Nodes.
A custom app: action and search modules and an instant trigger that registers its webhook when the scenario is activated.
Import the app folder with the Make Apps SDK extension.
A custom connector for Power Automate, Power Apps and Logic Apps, generated from the Swagger rendering of the profile, with a webhook trigger.
Import the OpenAPI file in the maker portal, set the API key on the Security tab.
A connector in the SDK DSL with the four actions, a webhook trigger, and a polling trigger with a cursor.
Paste the connector source into the Connector SDK and release it.
Publish the profile to Anypoint Exchange and REST Connect generates the connector. Two Mule 4 examples cover plain HTTP and the signed webhook in DataWeave.
Upload the OpenAPI asset; add the generated connector in Studio.
Postman, Retool, Bubble, Pipedream, Tray, Boomi, SnapLogic, Azure API Management: import the profile, set a bearer token, and the nine operations appear.
/v1/integrations/openapi.json on every stack; Swagger 2.0 at …/swagger.json.
The packages are complete, tested as far as a repository can test them, and downloadable in the app. None has been listed in a platform's store yet; those listings follow the first customer on each platform. Agentforce, Now Assist, Claude and the rest connect over MCP today with nothing to install.
Triggers
A workflow that wants to hear about finished verifications subscribes a URL of its own and gets a signing secret of its own. Every event carries TruthLock-Signature, an HMAC over the exact bytes sent, so a receiver can prove who sent it. A platform that cannot take a webhook polls the digest list instead: flat rows, newest first, filtered by status and time.
Subscriptions are managed under Integrate → Webhooks in the app, and by every package when a workflow is switched on or off.
POST /v1/webhooks
{ "url": "https://hooks.example.com/…",
"organization": "field-safety",
"events": ["verification.completed", "verification.failed"] }
→ 201 { "id": "…", "secret": "whsec_…" }
event verification.completed
{ "data": { "id": "…", "outcome": "completed",
"external_id": "500Hs00000ABCDE",
"overall": { "grade": "SUPPORTED" },
"reliance": { "display": "allow", "act": "review" } } }
GET …/verifications/digests?status=done&created_after=…
What every integration gets
Every call that starts work takes an idempotency key. A platform that retries a timed-out call gets the run already started, not a second one.
Beside the lifecycle status, every result says what to do next: pending, completed, needs input, timeout, failed. A polling loop takes that branch.
Grade, counts per grade, reliance decisions, claims as rows, and the attestation link, with no free-form objects, so a Flow or a spoke maps every field.
Allow, review or deny for the operation at hand: display, quote, act. The gate before Send, in any platform.
Every finished record is signed, and its public page proves it exists and stands without publishing the claims. Put the link on the case, the ticket, the article.
Every call names an organization, and the grading runs against that organization's declared, ranked sources. The integration carries the slug; the policy lives in TruthLock.
Build your own
The integration profile is an OpenAPI 3.0 document served by every stack, derived from the API's own schema, in the dialect connector builders accept. The full API is at /openapi.json. The Python package is truthlock-io, the npm package @truthlock-io/sdk, and the truthlock command ships with the Python package.
pip install truthlock-io
truthlock assess "The refund window is 30 days." --org field-safety
npm install @truthlock-io/sdk
const tl = new TruthLock({ apiKey, organization: "field-safety" });
const check = await tl.assess({ response: draft, idempotencyKey: caseId });
if (check.verdict === "hold") { /* do not send */ }