Map, test and load-test IVRs and AI voice agents over real phone calls with TotalPath.
Connect Remote server
claude mcp add --transport http totalpath https://mcp.nopaque.co.uk --header "x-api-key: <X_API_KEY>"
{
"mcpServers": {
"totalpath": {
"url": "https://mcp.nopaque.co.uk",
"headers": {
"x-api-key": "<X_API_KEY>"
}
}
}
}
{
"servers": {
"totalpath": {
"type": "http",
"url": "https://mcp.nopaque.co.uk",
"headers": {
"x-api-key": "<X_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://mcp.nopaque.co.uk
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 80 found in our last check
createMappingCreate an IVR mapping job for a phone number: its name, number, config and tags. This saves the job and nothing else: it places no call and starts no run, and the job comes back with status="idle" and no currentRun. A run is what calls the number, navigates the menu by DTMF and/…
getMappingGet the current state and run metadata for a specific IVR mapping job. USE WHEN: - User asks about a specific mapping job by ID - User wants to know if a mapping run has finished - User wants run-level metadata (stats, in-flight calls, start/completion times) - You need a job's…
listMappingsList IVR mapping jobs in your workspace. Supports filtering and cursor pagination. FILTERS (all optional): - status: Filter by the latest run's status. Values: idle | running | completed | failed | limited. Each job's `status` is its latest run's status (`idle` if it has never r…
cancelMappingCancel an in-progress IVR mapping job. Returns the updated job resource. No effect if the job is already idle/cancelled. Use this when you need to stop a long-running mapping early (e.g., the agent realised the wrong number was supplied).
getMappingTreeGet the discovered IVR tree structure for a mapping job — every node visited, the DTMF/voice paths between them, audio recordings, and (if enrichment ran) IVR menu transcripts and probe classifications. USE WHEN: - User asks for the discovered tree / map / structure of an IVR -…
runMissionTestLaunch a mission test run from an existing saved mission-test-config. A mission test calls a number, executes a scripted persona+goal+acceptance flow, and the LLM self-reports pass/fail against the acceptance criterion at end-of-call. Returns the run resource immediately; poll g…
getMissionTestRunUse when you have a mission-test run id and want the full AI-judged result: verdict (pass/fail/inconclusive/error), passReasoning, passEvidence, transcript, and compliance fields. Compliance runs are mission runs and are returned here too. Standard and param runs return 404 — us…
listMissionTestConfigsList saved mission-test configs in your workspace with rich filters. Each saved config is a reusable mission-test definition (name, phone, sector, persona/mission, acceptance criterion, profile, optional tags). Filter by: `name` (substring), `phoneNumber` (E.164 exact), `sector`…
draftMissionTestConfigCheck a NEW mission-test config without saving it. Takes the same fields as creating one (name, phoneNumber in E.164, sector, mission, acceptance, profileId, optional description, tags, maxDurationSecs, voiceId, backgroundNoise (caller background noise: cafe, street, home or win…
draftMissionTestConfigChangeCheck a CHANGE to a saved mission-test config without saving it. Takes the config `id` and only the fields to change (same as the update body; `null` clears description, tags, maxDurationSecs, backgroundNoise, advancedParams or language). Returns the full config as it would be a…
draftMissionTestConfigBatchCheck up to 25 NEW mission-test configs at once without saving them. Takes `drafts`: an array of objects, each with the same fields as draftMissionTestConfig. Returns `results`, one per draft in the same order, each exactly what draftMissionTestConfig returns for it: the config…
createImportStart importing a CSV or .xlsx file (at most 5 MB, 10 sheets, 2,000 rows per sheet, 5,000 rows in all). Takes `fileName`, `contentType` (text/csv or application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) and `sizeBytes` (the exact size). Returns the import (status aw…
listProfilesList the caller personas (profiles) in your workspace, newest first. Every mission-test config needs one: its `profileId` is a profile `id` from this list. Each profile has an `id`, a `name`, an optional `description`, and `items`: the named voice recordings and data values the…
getImportGet a sheet import by `id`. The first call after the file is uploaded reads it: the status becomes `ready`, with each sheet's `name`, `headers`, `rowCount` and up to five `firstRows`, or `unreadable` with a plain-words `problem`. Every cell is a string and dates are YYYY-MM-DD.…
getImportRowsRead a page of one sheet's rows from a ready import. Takes `id`, optional `sheet` (the sheet name; default the first), `from` (0-based row index; default 0) and `count` (1 to 50; default 25). Returns `total` rows in the sheet and `rows`, each with its `index` and `cells` keyed b…
commitImportCreate up to 1,000 mission-test configs from a ready import, in the background. Takes `id`, `tag` (import- then 6 lowercase letters or digits; added to every test so the set can be found and undone) and `tests` (each the same fields as draftMissionTestConfig; check them with dra…
undoImportDelete the mission-test configs a committed import created, in the background. Takes `id`. A config changed since the import, or already deleted, is kept and listed in `undo.keptIds`. Returns at once with status undoing; poll getImport until undone. Use only when the user has as…
getMissionTestConfigGet a single saved mission-test config by ID. Returns the full row: name, description, phoneNumber, sector, mission, acceptance, profileId, tags, createdAt, updatedAt. Use when: you have a config ID (typically from listMissionTestConfigs or from a run.configId field) and want to…
listTestConfigsList the saved standard (scripted) test configs in your workspace: the step-by-step tests that dial a number, send keypresses or speech, and compare what is heard against an expected transcript. Returns every config with its name, description, phoneNumber, language, type and ste…
getTestConfigGet a single saved standard (scripted) test config by ID: name, description, phoneNumber, language, type and its steps (each step has a name, the action taken, the expected transcript and the pass threshold). Use when: you have a config ID (from listTestConfigs, or the configId…
getRunResultsGet any test run (standard/param/mission/compliance) by id, including per-step results: outcome, transcript, similarity scores, words. Use when you need per-step breakdowns OR when you do not know if the run is mission or standard. For mission-specific shape (verdict, evidence,…
listTestRunsList test runs (mission/compliance/standard/param) with rich filters: runType, outcome (PASS/FAIL/ERROR/INCONCLUSIVE), phoneNumber, configId, catalogueTestId, configName / configPhoneNumber (standard and param runs only: case-insensitive substring of the test name or run id, sub…
aggregateTestRunsAggregate test-run counts; groupBy outcome | runType | configId | catalogueTestId | phoneNumber; optional timeBucket day/week/month with UTC ISO8601 bucket keys ("2026-05-12" day, "2026-W19" week, "2026-05" month). Use cases: "% pass/fail this week", "which compliance test fails…
listLoadTestsList the saved load tests in your workspace (configs, not runs). Each load test fans out N concurrent test runs against a target number and produces aggregate statistics. For one load test in full use getLoadTest; for runs and their statistics use listLoadTestRuns and getLoadTes…
listComplianceCatalogueList the available compliance tests in the regulatory catalogue (e.g., GDPR consent capture, EU AI Act disclosure, PCI-DSS DTMF masking). Each entry has an ID + sector + description. Use the IDs as input to runComplianceTest.
runComplianceTestRun a compliance test against a phone number. The test calls the number, executes a regulatory probe script (e.g., requests data deletion, asks about AI disclosure), and returns pass/fail per probe. Returns the run resource; poll getRunResults for completion.
getWorkspaceUsageGet the current usage and entitlement snapshot for your workspace: subscription tier, when the billing period ends (currentPeriodEnd), free-minute pool balances (testing/loadTesting/mapping/s2s/s2stest/compliance), purchased-pack balances, current-period consumption, and remaini…
getWorkspaceUsageThisPeriodUsage in the current billing period, per bucket: seconds of standard testing, load testing, mapping, AI voice experience, mission testing and compliance testing; AI tokens (all, and the Quinn, digital testing and voice analysis parts); survey SMS segments; calls. periodStart and…
getWorkspacePlanThe workspace's plan and tier, when the billing period starts and renews, purchased credit left (total in cents, currency, and `display` as the amount to quote, or null), a custom deal's summary (state, dates, and quota granted, used and remaining each with `display`; or null),…
listWorkspaceInvoicesThe latest invoices, newest first, at most 12: period, status, total in cents with `display` as the amount to quote, currency, and whether it is the current draft. The current draft invoice has isDraft true; it is the only answer to "what will we be billed", and it is a draft th…
getUsageBySourceWhat used a calendar month's allowance (period=YYYY-MM, default this month; not the billing period): billed seconds and tokens per standard test, mission test, mapping job, load test and Quinn, largest first, at most 20, each with its id and name where they can be found (null ot…
listGuidesList the step-by-step guides to the nopaque web app, and the reference pages (pricing, FAQ). Each entry has a slug, a kind (guide or reference), a group, a title and a one-line summary. Use when: someone asks how to do, set up or configure something in the web app, or what somet…
getGuideGet the full text of one guide or reference page by its slug from listGuides. For a guide, sections holds the steps in order: each names the page, menu, button or field to use in the web app, with extra detail about what it does. Use when: listGuides shows an entry that covers w…
listAuditEventsRead the workspace's activity log, newest first: who changed what and when, and how (in the web app, with an API key, or by nopaque staff). Covers API keys, members and roles, billing, tests and their schedules, load tests, batches, sweeps, mapping jobs, imports, phone numbers a…
listDigitalTestConfigsList the saved digital (chat) test configs in your workspace, newest first: each has an id, name, description, kind (freeform, compliance or standard), sector, mission, acceptance, the bot it talks to (targetRef, and connectorId or an inline target), and its steps or probes. Tak…
getDigitalTestConfigGet one saved digital (chat) test config by `id`: its name, kind, sector, mission, acceptance, pass and fail conditions, the bot it talks to (targetRef, connectorId or an inline target), its steps or probes, sample count and turn and time limits. Use when: you have a config id (…
listDigitalTestRunsList digital (chat) test runs in your workspace, newest first: each has an id, targetRef (the bot), kind, sector, status (pending, running, completed, failed, cancelled), outcome, how many samples were requested and judged, passed, failed and transportErrors (chats that never go…
getDigitalTestRunGet one digital (chat) test run by `id`, with its samples: each sample is one chat with the bot and carries its outcome, the transcript (who said what, and the bot's intent where the channel reports one), the judge's reasoning and evidence, per-step results for a standard test,…
listDigitalConnectorsList the saved connectors in your workspace: each names one bot a digital test can talk to, with an id, name, description, type (connect-chat, http-json, web-widget, lex-v2 or direct-line), targetRef (the stable name reports group runs by) and the connection settings for that ty…
getDigitalConnectorGet one saved connector by `id`: name, type, targetRef and its connection settings, as in listDigitalConnectors. Use when: a digital test config names a connectorId and you want to say which bot it reaches. Read-only. Needs digital:read. Returns 404 if the connector is not in yo…
listDigitalComplianceAuditsList the bots in your workspace that have digital (chat) compliance runs: one row per targetRef with lastRunAt, runCount and the compliance catalogue test ids that have run against it. Takes no parameters. Use when: the user asks which chat bots have been audited for compliance.…
getDigitalComplianceAuditGet the compliance report for one chat bot: takes `targetRef` (required, from listDigitalComplianceAudits) and optional `sector`. Returns the same report as the voice compliance report (getComplianceReportByPhone), built from the latest run of each catalogue test against that bo…
listComplianceReportsList the phone numbers in your workspace that have voice compliance runs: one row per number with a summary (tests ran, passed, failed, counting the latest run of each catalogue test) and lastRunAt. Takes no parameters. Use when: the user asks which numbers have been audited for…
getComplianceReportByPhoneGet the voice compliance report for one phone number: takes `phoneNumber` (required, E.164, e.g. +442012345678, from listComplianceReports) and optional `sector`. Built from the latest run of each compliance catalogue test against that number, with a summary (ran, passed, failed…
listAudioList the audio library in your workspace: recordings, uploads and generated speech, each with an id, category, filename, content type, size, duration, when it was created and the id of what it belongs to (associatedId, e.g. a run). Takes optional filters: `category` or `categori…
getAudioGet one audio file's metadata by `id`: category, filename, content type, size, duration, format, what it belongs to and when it was created. Metadata only, never the audio or a link to it. Use when: a profile or test names an audio id and you want to say what it is. Read-only. N…
listSweepsList the sweeps in your workspace. A sweep runs one standard test once per caller persona: each has an id, name, description, testConfigId (the test) and profileIds (the personas). Takes no parameters. Use when: the user asks what sweeps exist or names one. Name the test with ge…
getSweepGet one sweep by `id`: name, description, testConfigId and profileIds. Use when: you have a sweep id (from listSweeps or a sweep run's sweepId). Read-only. Needs testing:read. Returns 404 if the sweep is not in your workspace.
listSweepRunsList the runs of one sweep, by the sweep's `id`: each run has an id, status, a summary (total, pending, running, passed, failed, error), the test run ids it started, when it started and finished, and whether it was started by hand or by a schedule. Use when: the user asks how a…
listSweepRunsForWorkspaceList the sweep runs in your workspace across every sweep, newest first, with the same fields as listSweepRuns plus sweepId. Takes no parameters. Use when: the user asks for recent sweep results without naming a sweep. Name a sweep with getSweep. Read-only. Needs testing:read.
getSweepRunGet one sweep run by `id`, with its status and summary worked out from its test runs, and `testRuns`: one row per persona with the test run id, testConfigId, profileId, status, outcome and times. Use when: the user asks which personas passed or failed in a sweep. For why one per…
listNumbersList the phone numbers your workspace rents: each has a numberId, the number (e164), country, what kind of number it is (mobile, local and so on), what it can carry (voice, sms), what it was bought for (type) and is used for now (uses: outbound or load caller ID, callback, surve…
listAlertRulesList the alert rules in your workspace: each says what it watches (a schedule, a saved test or a batch, named by targetLabel), what it alerts on (failed runs, M of the last N), whether it is enabled or muted, its state now (OK or IN_ALARM) and since when, and the email destinati…
getAlertRuleGet one alert rule by `id` (from listAlertRules), with its last 50 state changes (when it went into alarm or recovered, and why) and, for a schedule or test rule, the outcomes of up to 10 recent runs it watched. Use when: the user asks when an alert fired, or why it is in alarm.…
listNotificationDestinationsList the email addresses your workspace's alert rules can send to: each has an id, address, label and status (pending until the address owner clicks the link in the verification email, then verified). An alert is only sent to a verified address. Takes no parameters. Use when: th…
listSurveyTestConfigsList the saved survey respondents in your workspace. A survey test checks the customer survey a platform sends after a call or chat: nopaque plays the customer and answers it. Each config has an id, name, description, sector (what the survey is about), profileId (the caller pers…
getSurveyTestConfigGet one saved survey respondent by `id` (from listSurveyTestConfigs or a survey result's configId), in full: the fields listSurveyTestConfigs returns plus `mission` (who the respondent is and how they feel) and `acceptance` (what counts as a pass). Use when: you want to explain…
listSurveyRunsList the survey tests that are holding a number now, plus `numbers`: how many survey numbers the workspace owns and how many are busy and free. Each run has a runId, configId, agentE164 (the nopaque number the survey should be sent to), endUserE164 (the number the survey should…
listSurveyResultsList the results of survey tests in your workspace, newest first, kept after each test ends however it ended. Each has a runId, configId, configName and profileName (as they were when the test started), scenario, the two numbers, channel, state (live or ended), outcome once it e…
getSurveyResultGet one survey test result by `id` (the runId from listSurveyResults or listSurveyRuns), with the fields listSurveyResults returns plus `turns`: the conversation, oldest first, each turn with when it was sent, who sent it (survey: the platform under test; respondent: nopaque ans…
listSchedulesList the schedules in your workspace, soonest next run first. Each has an id, name, description, what it starts (targetType test, map or batch, and targetId: a test config id, mapping job id or batch id), when (scheduleType once with runAt, recurring with intervalMinutes, or cro…
getScheduleGet one schedule by `id` (from listSchedules, or the scheduleId on a batch run or sweep run): the same fields as listSchedules. Use when: a run says it was started by a schedule and you want to say which and when it runs. Read-only. Needs scheduling:read. Returns 404 if the sche…
getLoadTestGet one saved load test by `id` (a load-test config id from listLoadTests, not a run id): `config` with its name, description, testConfigId (the standard test each call runs), profile (the load shape: concurrency points or arrival points, durationMinutes and maxConcurrency), cal…
getLoadTestStatusGet one load-test RUN by `id` (a run id from listLoadTestRuns or getLoadTest's latestRun, not the load test's own id): status (pending, running, completed, aborted or failed), progressPercent, currentSecond of totalSeconds, and `stats`: calls started, completed, failed (the test…
listLoadTestRunsList load-test runs in your workspace, newest first, each with its id, loadTestConfigId, name, status, progressPercent, stats (as in getLoadTestStatus), times and abortReason; a multi-config load test starts one run per lane, sharing a groupId. Takes optional `configId` (a load…
getLoadTestFailurePatternsGroup the calls of one load-test RUN that did not pass into named failure patterns, by the run's `id` (from listLoadTestRuns). Returns totalCalls, failedCalls, unclassified (failed calls no rule matched), late starts, and `patterns`, most calls first: each with a label, owner (p…
listReportsList the detailed reports built in your workspace, newest first. A report packages one or more load-test runs as downloadable files. Each has a reportId, name, kind, loadTestRunIds, packs (data, excel, pdf), includeAudio, status (pending, running, ready or failed), progress whil…
getReportGet one detailed report by `reportId` (from listReports): the same fields, under `report`. status moves pending, running, then ready or failed; while running, progress says what the build is doing. Use when: the user asks whether a report has finished or why it failed. The files…
listMappingRunsList every run of one mapping job, newest first, by the job's `id` (from listMappings): each run has an id, runNumber (1 is the first), status (running, completed, failed or limited, with limitReason), stats, inFlightCount, probeMode and start and finish times; plus totalRuns. U…
listMappingStepsList the steps of a mapping job's latest run, by the job's `id`. Each step is one call that followed a DTMF path into the IVR: id, parentStepId, depth (0 is the root), path and pathString (e.g. "3:2", or "root"), status (pending, running, completed, failed, retrying or skipped),…
listMappingPathRulesList the path rules on one mapping job, by the job's `id`: the overrides a person set on particular branches. Each rule has a path ("root" or DTMF digits such as "3:2"), state (exclude: never explore this branch; remap: map it again on the next run), config (scripted input for t…
listBatchesList the batches in your workspace, newest first. A batch runs several saved tests against the same number together. Each has an id, name, description and `members`: each a type (param for a standard test, mission for a mission test) and its configId, in run order (testConfigIds…
getBatchGet one batch by `id` (from listBatches, a batch run's batchId, or a schedule's targetId when targetType is batch): name, description and its members. Read-only. Needs testing:read. Returns 404 if the batch is not in your workspace.
listBatchRunsList the batch runs in your workspace across every batch, newest first: each has an id, batchId, status (pending, running, completed, failed or partial), a summary (total, pending, running, passed, failed, error), the test run ids it started, times, and triggeredBy (manual, sche…
getBatchRunGet one batch run by `id` (from listBatchRuns), with per-test detail: `testRuns`, one row per test run it started (id, type param or mission, configId, status, outcome, times), and `configs`, one entry per batch member with its latest attempt and every attempt across re-runs. A…
listMissionTestsList mission test runs in your workspace, newest first, with their content: each has an id, status, outcome (PASS, FAIL, ERROR, INCONCLUSIVE or pending), phoneNumber, configId (the saved config it was launched from, if any), sector, mission, acceptance, profile, voiceId, languag…
getMissionTestGet one mission test run by `id`, with the fields listMissionTests returns. Param and standard runs return 404 here. Use when: you have a mission run id from listMissionTests. For the judged result with compliance fields prefer getMissionTestRun, which reads the same run; use ge…
listDatasetsList the datasets in your workspace, newest first. A dataset is a named set of variables (account numbers, dates of birth, PINs) that a caller persona speaks or keys in during a test. Each has an id, name, description and `items`: each with an id, key, value, type (text, number…
getDatasetGet one dataset by `id` (from listDatasets, or a persona item's datasetId): name, description and its items, as in listDatasets. Secret values are always masked here: this server never returns them in clear. Use when: a persona names a dataset and you want to say what it holds.…
listCarrierIntegrationsList your workspace's own SIP trunks (bring-your-own-carrier, invite-only), each with the routes reached through it. A trunk has an integrationId, name, host, port, transport, mediaEncryption, fromNumber, status (draft: not yet tested; verified: a test call reached it; active; d…
Headers
| Name | Description |
|---|---|
x-api-keyOptional, secret | TotalPath workspace API key. Without one, call registerWorkspace to create a workspace and receive a key. |
Details
| Endpoint | https://mcp.nopaque.co.uk (Streamable HTTP) |
| First published | 12 Nov 2026 |
| Last updated | 12 Nov 2026 |
| Registry name | uk.co.nopaque/totalpath |
More ai and media servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
