Skip to main content

Documentation Index

Fetch the complete documentation index at: https://backstage.spotify.com/docs/llms.txt

Use this file to discover all available pages before exploring further.

Soundcheck exposes 42 MCP actions through the Actions Registry, enabling AI agents to read and manage checks, tracks, campaigns, exemptions, facts, and compliance analytics. Actions are grouped below by domain. Each entry lists the action name, what it does, its input parameters, and its return type.

Checks

create-check

Creates a new check definition in Soundcheck. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
idstringYesUnique check identifier (slug-style, e.g. has-readme)
namestringYesDisplay name (max 100 characters)
descriptionstringYesHuman-readable description of the check
ownerEntityRefstringYesBackstage entity ref of the owner
type'manual' | 'default'NoCheck type (default: 'default')
ruleNestedConditionSchemaNoRule to evaluate; required for default checks
applicableNestedConditionSchemaNoApplicability rule
pathResolverstringNoCustom path resolver (default: jsonpath)
includeFilterCatalogFilter | FilterNoEntity inclusion filter
excludeFilterFilterNoEntity exclusion filter (requires includeFilter)
warningbooleanNoIf true, failures emit a warning state instead of failed
passedMessagestringNoMessage shown when the check passes
failedMessagestringNoMessage shown when the check fails
notApplicableMessagestringNoMessage shown when the check is not applicable
supportChannelstringNoSupport channel (Slack, email, etc.)
scheduleScheduleNoExecution schedule
Returns:
{ "checkId": "string" }

update-check

Updates an existing check definition. Only provided fields are changed. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check to update
namestringNoDisplay name (max 100 characters)
descriptionstringNoCheck description
ownerEntityRefstringNoBackstage entity ref of the owner
type'manual' | 'default'NoCheck type
ruleNestedConditionSchema | nullNoRule to evaluate; pass null to clear
applicableNestedConditionSchema | nullNoApplicability rule; pass null to clear
pathResolverstring | nullNoCustom path resolver; pass null to clear
includeFilterCatalogFilter | Filter | nullNoEntity inclusion filter; pass null to clear
excludeFilterFilter | nullNoEntity exclusion filter; pass null to clear
warningbooleanNoIf true, failures emit a warning state
passedMessagestring | nullNoMessage on pass; pass null to clear
failedMessagestring | nullNoMessage on failure; pass null to clear
notApplicableMessagestring | nullNoMessage when not applicable; pass null to clear
supportChannelstring | nullNoSupport channel; pass null to clear
scheduleSchedule | nullNoExecution schedule; pass null to clear
Returns:
{ "checkId": "string" }

delete-check

Permanently deletes a check definition. Fails if the check is still referenced by active (non-draft) tracks. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check to delete
Returns:
{ "checkId": "string", "deleted": true }

list-checks

Returns all registered Soundcheck checks. Attributes: readOnly: true · idempotent: true Parameters: None Returns:
{
  "checks": [{ "id": "string", "name": "string", "description": "string" }]
}

get-check-definition

Returns what a check evaluates: rule type, fact collectors, pass criteria, and pass/fail messages. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check
Returns:
{
  "id": "string",
  "name": "string",
  "description": "string",
  "type": "manual | default",
  "factCollectors": ["string"],
  "rule": {},
  "filter": {},
  "passMessage": "string",
  "failMessage": "string",
  "supportChannel": "string"
}

get-check-details

Returns the full details of a check, including pass/fail counts and the tracks that reference it. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check
Returns:
{
  "id": "string",
  "name": "string",
  "description": "string",
  "ownerEntityRef": "string",
  "rule": {},
  "filter": {},
  "passedMessage": "string",
  "failedMessage": "string",
  "passingCount": 0,
  "failingCount": 0,
  "associatedTracks": [{ "id": "string", "name": "string" }]
}

execute-check

Triggers a check to run on a component and persists the result. Manual-type checks cannot be executed; use set-manual-check-result instead. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check to execute
entityRefstringYesEntity reference (e.g. component:default/my-service)
Returns:
{
  "checkId": "string",
  "entityRef": "string",
  "state": "string",
  "timestamp": "string"
}

set-manual-check-result

Sets the pass/fail result for a manual-type check on a component, with a justification. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the manual check
entityRefstringYesEntity reference (e.g. component:default/my-service)
state'passed' | 'failed'YesResult state to set
justificationstringYesReason for this result
submittedBystringYesUser reference (e.g. user:default/jsmith)
Returns:
{
  "checkId": "string",
  "entityRef": "string",
  "state": "passed | failed",
  "justification": "string",
  "timestamp": "string"
}

get-check-failure-details

Returns exactly why a check is failing for a component: actual value, expected value, fact data, and failure reason. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check
entityRefstringYesEntity reference
Returns:
{
  "status": "string",
  "actualValue": null,
  "expectedValue": null,
  "failureReason": "string",
  "lastRunAt": "string",
  "checkRule": {},
  "factData": null
}

get-check-history

Returns the last 30 days of pass/fail history for a check on a given entity, along with a trend indicator. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
checkIdstringYesID of the check
entityRefstringYesEntity reference
Returns:
{
  "history": [{ "date": "YYYY-MM-DD", "state": "string" }],
  "trend": "improving | declining | stable"
}

search-checks

Searches for checks by keyword, returning matching checks with descriptions and associated tracks. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
querystringYesSearch term to match against check names and descriptions
Returns:
{
  "checks": [
    {
      "checkId": "string",
      "checkName": "string",
      "description": "string",
      "associatedTracks": [{ "id": "string", "name": "string" }]
    }
  ]
}

Tracks

create-track

Creates a new compliance track with specified checks and levels. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
idstringYesUnique track identifier (slug-style)
namestringYesDisplay name (max 100 characters)
descriptionstringYesTrack description (supports Markdown)
ownerEntityRefstringYesBackstage entity ref of the owner
levelsarrayYesOrdered levels, each containing check IDs
documentationURLstringNoOptional documentation link
badgeType'medal' | 'status'NoBadge type (default: 'status')
draftbooleanNoWhether the track starts as a draft (default: false)
filterCatalogFilter | FilterNoEntity inclusion filter
excludeFilterNoEntity exclusion filter (requires filter)
Returns:
{
  "trackId": "string",
  "trackName": "string",
  "checksCount": 0,
  "levelsCount": 0
}

update-track

Updates an existing track. Only provided fields are changed. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track to update
namestringNoDisplay name
descriptionstringNoTrack description
ownerEntityRefstringNoBackstage entity ref of the owner
documentationURLstring | nullNoDocumentation link; pass null to clear
badgeType'medal' | 'status' | nullNoBadge type; pass null to clear
draftbooleanNoDraft state
levelsarrayNoReplaces all existing levels
includeFilterCatalogFilter | Filter | nullNoEntity inclusion filter; pass null to clear
excludeFilterFilter | nullNoEntity exclusion filter; pass null to clear
Returns:
{
  "trackId": "string",
  "trackName": "string",
  "checksCount": 0,
  "levelsCount": 0
}

delete-track

Permanently deletes a track. Fails if still referenced by active (non-archived) campaigns. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track to delete
Returns:
{ "trackId": "string", "deleted": true }

list-tracks

Returns all registered Soundcheck tracks with their IDs, names, and level names. Attributes: readOnly: true · idempotent: true Parameters: None Returns:
{
  "tracks": [
    {
      "id": "string",
      "name": "string",
      "levels": [{ "ordinal": 0, "name": "string" }]
    }
  ]
}

get-track-details

Returns the full configuration of a track: name, description, owner, levels with check IDs, and entity filter. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track
Returns:
{
  "id": "string",
  "name": "string",
  "description": "string",
  "owner": "string",
  "filter": {},
  "levels": [{ "ordinal": 0, "name": "string", "checkIds": ["string"] }]
}

get-track-stats

Returns adoption metrics for a track: component counts and percentage at each compliance level. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track
Returns:
{
  "trackId": "string",
  "trackName": "string",
  "totalComponents": 0,
  "levelBreakdown": [{ "level": "string", "count": 0, "percentage": 0 }]
}

list-track-blockers

Returns the most common failing checks in a track, with failure counts and the percentage of components failing each check. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track
limitnumberNoMaximum number of blockers to return (default: 10)
Returns:
{
  "blockers": [
    {
      "checkId": "string",
      "checkName": "string",
      "failingCount": 0,
      "totalCount": 0,
      "failurePercentage": 0
    }
  ]
}

Campaigns

create-campaign

Creates a new compliance campaign with a track, milestones, and entity filters. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
idstringYesUnique campaign identifier (slug-style)
namestringYesCampaign display name
descriptionstringYesCampaign description (supports Markdown)
ownerEntityRefstringYesBackstage entity ref of the campaign owner
startDatestringYesCampaign start date (ISO 8601)
endDatestringYesCampaign end date (ISO 8601)
checkIdsstring[]YesCheck IDs for the campaign (min 1)
supportChannelstringNoSlack support channel
draftbooleanNoWhether to start the associated track as a draft
milestonesarrayNoMilestones with pass rate targets
filterCatalogFilter | FilterNoEntity inclusion filter
excludeFilterNoEntity exclusion filter (requires filter)
Returns:
{ "campaignId": "string", "trackId": "string" }

update-campaign

Updates an existing campaign. Only provided fields are changed. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
campaignIdstringYesID of the campaign to update
namestringNoCampaign display name
descriptionstringNoCampaign description
ownerEntityRefstringNoBackstage entity ref of the owner
supportChannelstringNoSlack support channel
startDatestringNoCampaign start date (ISO 8601)
endDatestringNoCampaign end date (ISO 8601)
draftbooleanNoDraft state of the associated track
checkIdsstring[]NoReplaces check IDs (min 1 if provided)
milestonesarrayNoReplaces existing milestones
includeFilterCatalogFilter | Filter | nullNoEntity inclusion filter; pass null to clear
excludeFilterFilter | nullNoEntity exclusion filter; pass null to clear
Returns:
{ "campaignId": "string", "trackId": "string" }

delete-campaign

Permanently deletes a campaign. Attributes: readOnly: false · idempotent: false Parameters
NameTypeRequiredDescription
campaignIdstringYesID of the campaign to delete
Returns:
{ "campaignId": "string", "deleted": true }

list-campaigns

Returns all Soundcheck campaigns with their IDs, names, status, associated track IDs, and date ranges. Attributes: readOnly: true · idempotent: true Parameters: None Returns:
{
  "campaigns": [
    {
      "id": "string",
      "name": "string",
      "archived": false,
      "trackId": "string",
      "startDate": "string",
      "targetCompletionDate": "string"
    }
  ]
}

get-campaign-details

Returns the full configuration of a campaign: name, description, owner, status, dates, milestones, check IDs, and entity filter. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
campaignIdstringYesID of the campaign
Returns:
{
  "id": "string",
  "name": "string",
  "description": "string",
  "owner": "string",
  "supportChannel": "string",
  "archived": false,
  "trackId": "string",
  "startDate": "string",
  "targetCompletionDate": "string",
  "filter": {},
  "checkIds": ["string"],
  "milestones": [
    {
      "id": "string",
      "name": "string",
      "description": "string",
      "targetPercent": 0,
      "targetCompletionDate": "string"
    }
  ]
}

Exemptions

set-exemption

Exempts a component from a specific check with a documented justification. The exemption takes effect immediately. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference (e.g. component:default/my-service)
checkIdstringYesID of the check to exempt
justificationstringYesReason for the exemption
userRefstringYesUser reference (e.g. user:default/jsmith)
Returns:
{
  "checkId": "string",
  "entityRef": "string",
  "justification": "string",
  "timestamp": "string"
}

remove-exemption

Removes an active exemption for a component from a specific check. If no exemption exists, the action is a no-op. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference
checkIdstringYesID of the check
Returns:
{ "checkId": "string", "entityRef": "string", "removed": true }

list-exemptions

Returns all active exemptions for a component, including the check name and justification for each. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference
Returns:
{
  "exemptions": [
    {
      "checkId": "string",
      "reason": "string",
      "userRef": "string",
      "timestamp": "string"
    }
  ]
}

Entity compliance

get-component-health

Returns overall compliance score, level, track memberships, and pass/fail check counts for a component. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference (e.g. component:default/my-service)
Returns:
{
  "entityRef": "string",
  "overallScore": 0.0,
  "passingChecks": 0,
  "failingChecks": 0,
  "tracks": [
    {
      "trackId": "string",
      "trackName": "string",
      "highestCertifiedLevel": "string",
      "levels": [
        {
          "name": "string",
          "passingChecks": 0,
          "failingChecks": 0,
          "score": 0.0
        }
      ]
    }
  ]
}

list-failing-checks

Returns all failing checks for a component, optionally filtered by track. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference
trackIdstringNoFilter results to a specific track
Returns:
{
  "checks": [
    {
      "checkId": "string",
      "checkName": "string",
      "trackId": "string",
      "trackName": "string",
      "lastRunAt": "string",
      "failureReason": "string"
    }
  ]
}

Facts

list-entity-facts

Returns metadata about facts collected for a given entity. Use get-fact-data to retrieve the actual value of a specific fact. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference (e.g. component:default/my-service)
factRefsstring[]NoFilter to specific fact references
Returns:
{
  "facts": [
    {
      "factRef": "string",
      "collectorId": "string",
      "factId": "string",
      "timestamp": "string",
      "error": "string"
    }
  ],
  "message": "string"
}

get-fact-data

Returns the raw fact value for a specific fact from a specific collector for a given entity. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
entityRefstringYesEntity reference
collectorIdstringYesID of the fact collector (e.g. catalog, github)
factIdstringYesName of the fact within the collector
Returns:
{
  "factRef": "string",
  "collectorId": "string",
  "factId": "string",
  "value": null,
  "timestamp": "string"
}

Org intelligence

get-org-compliance-summary

Returns a high-level overview of tech health posture across all tracks: overall score, component counts, trends, and track summaries. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
scopestringNoFilter by scope (e.g. "default")
tracksarrayNoLimit results to specific tracks
entityKindsstring[]NoFilter by entity kinds (e.g. ["Component"])
entityLifecyclesstring[]NoFilter by entity lifecycles (e.g. ["production"])
numberOfDaysnumberNoNumber of days for trend data (default: 30)
Returns:
{
  "overallPassRate": 0.0,
  "totalTracksActive": 0,
  "totalGroups": 0,
  "levelBreakdown": [
    {
      "levelOrdinal": 0,
      "levelName": "string",
      "snapshotPassRate": 0.0,
      "trend": "improving | declining | stable"
    }
  ],
  "trackSummaries": [
    {
      "trackId": "string",
      "trackName": "string",
      "overallSnapshotPassRate": 0.0
    }
  ]
}

get-team-compliance-summary

Returns aggregated compliance scores and track breakdown for a specific team. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
groupEntityRefstringYesGroup entity ref of the team (e.g. group:default/my-team)
tracksarrayNoLimit results to specific tracks
numberOfDaysnumberNoNumber of days for trend data
Returns:
{
  "groupEntityRef": "string",
  "groupTitle": "string",
  "snapshotPassRate": 0.0,
  "trend": "improving | declining | stable",
  "trackBreakdown": [
    {
      "trackId": "string",
      "trackName": "string",
      "levels": [
        { "levelOrdinal": 0, "levelName": "string", "snapshotPassRate": 0.0 }
      ]
    }
  ]
}

get-top-failing-checks

Returns the checks with the highest failure rates across the org, with optional filtering. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
limitnumberNoMaximum number of results (default: 10)
tracksarrayNoLimit results to checks in specific tracks
scopestringNoFilter by scope
entityKindsstring[]NoFilter by entity kinds
entityLifecyclesstring[]NoFilter by entity lifecycles
checkOwnersstring[]NoFilter by check owner entity refs
numberOfDaysnumberNoNumber of days for trend data
Returns:
{
  "checks": [
    {
      "checkId": "string",
      "checkName": "string",
      "snapshotPassRate": 0.0,
      "failureRate": 0.0,
      "trend": "improving | declining | stable"
    }
  ]
}

Returns time-series compliance trend data for a track, showing per-level pass rates over the requested number of days. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track
numberOfDaysnumberNoNumber of days of trend data (default: 30)
scopestringNoFilter by scope
Returns:
{
  "trackId": "string",
  "trackName": "string",
  "overallTrend": "improving | declining | stable",
  "levelTrends": [
    {
      "levelOrdinal": 0,
      "levelName": "string",
      "snapshotPassRate": 0.0,
      "trend": "improving | declining | stable",
      "trendPassRates": [0.0]
    }
  ]
}

compare-teams

Returns a side-by-side compliance comparison for two or more teams, ranked by pass rate. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
groupEntityRefsstring[]YesGroup entity refs to compare (min 2, max 10)
tracksarrayNoLimit comparison to specific tracks
numberOfDaysnumberNoNumber of days for trend data
Returns:
{
  "comparison": [
    {
      "groupEntityRef": "string",
      "groupTitle": "string",
      "snapshotPassRate": 0.0,
      "trend": "improving | declining | stable",
      "rank": 1
    }
  ],
  "bestPerforming": "string",
  "worstPerforming": "string",
  "spread": 0.0
}

get-rolled-up-tech-insights

Returns a track-scoped compliance overview with top and bottom performing groups, mirroring the Tech Insights Explorer page. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track to explore
limitnumberNoNumber of top/bottom groups to return (default: 5)
numberOfDaysnumberNoNumber of days for trend data
entityKindsstring[]NoFilter by entity kinds
entityLifecyclesstring[]NoFilter by entity lifecycles
Returns:
{
  "trackId": "string",
  "trackName": "string",
  "overallSnapshotPassRate": 0.0,
  "levelBreakdown": [
    { "levelOrdinal": 0, "levelName": "string", "snapshotPassRate": 0.0 }
  ],
  "topPerformingGroups": [
    {
      "groupEntityRef": "string",
      "groupTitle": "string",
      "snapshotPassRate": 0.0
    }
  ],
  "bottomPerformingGroups": [
    {
      "groupEntityRef": "string",
      "groupTitle": "string",
      "snapshotPassRate": 0.0
    }
  ],
  "totalGroupCount": 0
}

find-struggling-components

Returns the components with the lowest compliance pass rates, sorted by severity. Useful for champions identifying which teams need support. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
limitnumberNoMaximum number of components (default: 20)
failureRateThresholdnumberNoOnly return components at or below this pass rate (default: 0.5)
tracksarrayNoLimit results to components applicable to specific tracks
entityKindsstring[]NoFilter by entity kinds
entityTypesstring[]NoFilter by entity types
entityLifecyclesstring[]NoFilter by entity lifecycles
entityOwnersstring[]NoFilter by owner group entity refs
numberOfDaysnumberNoNumber of days for trend data
Returns:
{
  "components": [
    {
      "entityRef": "string",
      "entityTitle": "string",
      "ownerRef": "string",
      "snapshotPassRate": 0.0,
      "trend": "improving | declining | stable"
    }
  ],
  "totalBelowThreshold": 0
}

get-compliance-by-level

Returns adoption metrics for a specific level within a track: component counts, percentages, and top failing components. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
trackIdstringYesID of the track
levelstringYesName of the level within the track (e.g. "Bronze")
Returns:
{
  "trackId": "string",
  "level": "string",
  "count": 0,
  "totalComponents": 0,
  "percentage": 0,
  "failingComponents": ["string"]
}

Integrations

get-integration-status

Diagnoses the configuration of a Soundcheck fact collector integration: returns status, available facts, collection schedule, and any configuration errors. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
integrationIdstringYesID or name of the integration (fact collector)
Returns:
{
  "integrationId": "string",
  "name": "string",
  "status": "healthy | misconfigured",
  "factNames": ["string"],
  "scheduledCollections": 0,
  "latestCompletedTime": "string",
  "latestFailedTime": "string",
  "errors": ["string"]
}

get-integration-config-schema

Returns the JSON Schema describing the configuration format for a Soundcheck integration. Use this before configure-integration to understand the required fields. Attributes: readOnly: true · idempotent: true Parameters
NameTypeRequiredDescription
integrationIdstringYesID or name of the integration (fact collector)
Returns:
{
  "integrationId": "string",
  "name": "string",
  "isConfigurable": true,
  "isEditable": true,
  "configSchema": null,
  "currentConfig": null
}

configure-integration

Configures a Soundcheck fact collector integration with the provided settings. Use get-integration-config-schema first to understand the required configuration format. Attributes: readOnly: false · idempotent: true Parameters
NameTypeRequiredDescription
integrationIdstringYesID or name of the integration
configRecord<string, unknown>YesConfiguration object for the integration
shouldSyncbooleanNoWhether to trigger a sync after updating the config (default: true)
Returns:
{ "integrationId": "string", "name": "string", "success": true }