MCP Overview

The Hubbl MCP server (https://mcp.hubbl.com/mcp) exposes Hubbl tools and context to AI coding agents and assistants. It uses Streamable HTTP. Connect with OAuth sign-in (recommended) or an API token; see Connect your client below.

Authentication

Hubbl MCP supports two ways to authenticate. Use whichever your client supports.

  • OAuth sign-in (recommended). The default for clients that support it. Your client opens a browser window and you sign in to Hubbl. There is no token to generate, store, or paste.
  • API token. For clients that cannot use OAuth. You generate a base64-encoded token from a Hubbl API Key and Secret and send it as a Basic authorization header.

Creating a Token

Create an API Key

This is only needed for the API token option, and it requires an account admin. In the Hubbl app, open Settings (the Account Settings page), scroll to the API Keys section, and click Create API Key to get your API Key and API Secret.

Generate your token

Run the command for your operating system, substituting your actual API Key and Secret.

Mac and Linux

echo -n "yourApiKey:yourApiSecret" | base64

Windows (PowerShell)

[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("yourApiKey:yourApiSecret"))

The output is your <token>. Your full Authorization header value will be Basic <token>.

Keep your token private. Do not commit it to source control.

Connect your Client

Agentforce Vibes authenticates with an API token. Follow Creating a Token to generate your <token>, then:

  1. In VS Code, open the Agentforce Vibes panel.
  2. Click the MCP Servers icon (top right of the panel) to open the MCP Servers interface.
  3. Navigate to the Remote Servers tab.
  4. Click Edit Configuration to open the a4d_mcp_settings.json file.
  5. Add the configuration below under mcpServers, replacing <token> with your base64 value.
{
  "mcpServers": {
    "hubbl-mcp": {
      "url": "https://mcp.hubbl.com/mcp",
      "type": "streamableHttp",
      "disabled": false,
      "headers": {
        "Authorization": "Basic <token>"
      }
    }
  }
}

Save the file, then open the Configure tab in the MCP Servers window. You should see hubbl-mcp listed with a green status indicator.

Every client connects to the same server. OAuth sign-in is the default where supported; see Authentication above.

Hubbl - MCP Documentation

Resources

To view these resources, send a POST request with a body containing a JSON payload similar to the following example. Don't forget to include the mcp_session_id from your initialization request in this request headers.

{
  "jsonrpc": "2.0",
  "method": "resources/read",
  "params": {
    "uri": "hubbl://issue-categories"
  },
  "id": 2345
}

Field Delete Constraints

URI: hubbl://allow-or-prevent-delete

List of all valid 'allowOrPreventDelete' string values for Salesforce lookup-relationship fields (mirrors SF's deleteConstraint). Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 Restrict
2 SetNull
3 Cascade

Field Business Statuses

URI: hubbl://business-status

List of all valid 'businessStatus' string values for Salesforce fields. Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 Active
2 DeprecateCandidate
3 Deprecated
4 Hidden

Canvas Access Methods

URI: hubbl://canvas-access-method

List of all valid 'canvasAccessMethod' string values for Salesforce connected apps.

Value Name
1 Get
2 Post

Class Families

URI: hubbl://class-family

List of all valid 'classFamily' string values for Apex class-type classifications.

Class Types

URI: hubbl://class-type

List of all valid 'classType' string values for Apex class-type classifications.

Field Compliance Groups

URI: hubbl://compliance-group

List of all valid 'complianceGroup' string values for Salesforce field Data Classification. Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 PII
2 HIPAA
3 GLBA
4 PCI
5 COPPA
6 GDPR

Field Encryption Schemes

URI: hubbl://encrypted-scheme

List of all valid 'encryptedScheme' string values for Salesforce Shield-encrypted fields. Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 ProbabilisticEncryption
2 CaseSensitiveDeterministicEncryption
3 CaseInsensitiveDeterministicEncryption

Field Types

URI: hubbl://field-type

List of all valid Salesforce field 'type' string values. Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 AutoNumber
2 Text
3 MasterDetail
4 ExternalLookup
5 Lookup
6 Html
7 LongTextArea
8 TextArea
9 Address
10 Checkbox
11 Currency
12 Date
13 DateTime
14 Email
15 Location
16 Number
17 Percent
18 Phone
19 Picklist
20 MultiselectPicklist
21 EncryptedString
22 Time
23 Url
24 Id

Flow Builder Types

URI: hubbl://flow-builder-type

List of all valid Salesforce flow 'builderType' string values. Use these values when constructing RQL filters for the list_org_flows tool.

Value Name
1 LightningFlowBuilder
2 ProcessBuilder
3 Survey

Flow Process Types

URI: hubbl://flow-process-type

List of all valid Salesforce flow 'processType' string values. Use these values when constructing RQL filters for the list_org_flows tool.

Value Name
1 ActionableEventManagementFlow
2 ActionCadenceAutolaunchedFlow
3 ActionCadenceFlow
4 ActionCadenceStepFlow
5 ActivityObjectMatchingFlow
6 Appointments
7 ApprovalWorkflow
8 AutoLaunchedFlow
9 CartAsyncFlow
10 CheckoutFlow
11 ContactRequestFlow
12 CustomerLifecycle
13 CustomEvent
14 DataCaptureFlow
15 DcvrFrameworkDataCaptureFlow
16 EvaluationFlow
17 FieldServiceMobile
18 FieldServiceWeb
19 Flow
20 FSCLending
21 IdentityUserRegistrationFlow
22 IndicatorResultFlow
23 IndividualObjectLinkingFlow
24 InvocableProcess
25 Journey
26 ManagedContentAuthoringWorkflow
27 Orchestrator
28 PromptFlow
29 RecommendationStrategy
30 RoutingFlow
31 ServiceCatalogItemFlow
32 Survey
33 SurveyEnrich
34 TransactionSecurityFlow
35 UserProvisioningFlow
36 Workflow

Flow Record Trigger Types

URI: hubbl://flow-record-trigger-type

List of all valid Salesforce flow 'recordTriggerType' string values. Use these values when constructing RQL filters for the list_org_flows tool.

Value Name
1 Create
2 CreateAndUpdate
3 Delete
4 Update

Flow Statuses

URI: hubbl://flow-status

List of all valid Salesforce flow 'status' string values. Use these values when constructing RQL filters for the list_org_flows tool.

Value Name
1 Active
2 Draft
3 InvalidDraft
4 Obsolete

Flow Trigger Types

URI: hubbl://flow-trigger-type

List of all valid Salesforce flow 'triggerType' string values. Use these values when constructing RQL filters for the list_org_flows tool.

Value Name
1 Activation
2 AdminAutomationEvent
3 AutomationEvent
4 Capability
5 DataCloudDataChange
6 DataGraphDataChange
7 ExternalSystemChange
8 FormSubmissionEvent
9 IndivRelatedRecord
10 onAllChanges
11 onCreateOnly
12 PlatformEvent
13 RecordAfterSave
14 RecordBeforeDelete
15 RecordBeforeSave
16 Scheduled
17 Segment

Issue Categories

URI: hubbl://issue-categories

List of all valid 'category' string values. Agents MUST review these values to ensure correct spelling and casing when constructing RQL filters for the list_org_issues tool.

Value Name
1 Custom Code
2 Data Model
3 Declarative Automation
4 Limits
5 Packages
6 Reports
7 User Management and Security

Efforts

URI: hubbl://issue-efforts

List of all valid 'effort' string values. Agents MUST review these values to ensure correct spelling and casing when constructing RQL filters for the list_org_issues tool.

Value Name
1 Low
2 Medium
3 High

Metadata Types

URI: hubbl://issue-metadata-types

List of all valid 'metadataType' string values. Agents MUST review these values to ensure correct spelling and casing when constructing RQL filters for the list_org_issues tool.

Value Name
2 aura
3 classes
4 components
5 connectedApps
6 fields
7 flows
8 globalValueSets
9 installedPackages
10 licenseUsage
11 lwc
12 objects
13 pages
14 permissionSets
15 profiles
16 reports
17 securityHealthCheckRisks
18 system
19 triggers
20 workflows

Priorities

URI: hubbl://issue-priorities

List of all valid 'priority' string values. Agents MUST review these values to ensure correct spelling and casing when constructing RQL filters for the list_org_issues tool.

Value Name
1 Low
2 Medium
3 High

Well-Architected Categories

URI: hubbl://issue-well-architected-categories

List of all valid 'wellArchitectedCategoryLevelX' (1-4) string values. Agents MUST review these values to ensure correct spelling and casing when constructing RQL filters for the list_org_issues tool. Source information: https://architect.salesforce.com/docs/architect/well-architected/guide

Value Name URL
1 Adaptable Link
2 App Lifecycle Management Link
3 Authentication Link
4 Authorization Link
5 Automated Link
6 Composable Link
7 Data Model Optimization Link
8 Data Security Link
9 Data Volume Management Link
10 Design Standards Link
11 Documentation Link
12 Easy Link
13 Efficiency Link
14 Functional Units Link
15 Intentional Link
16 KPIs Link
17 Maintainability Link
18 Organizational Security Link
19 Readability Link
20 Reliable Link
21 Resilient Link
22 Scalability Link
23 Secure Link
24 Separation of Concerns Link
25 Session Management Link
26 Session Security Link
27 Sharing and Visibility Link
28 Simple Link
29 Technical Debt Link
30 Testing Strategy Link
31 Threat Detection and Response Link
32 Trusted Link
33 Use of Encryption Link

Well-Architected Hierarchy

URI: hubbl://issue-well-architected-hierarchy

Hierarchy definitions of valid paths (levels 1 through 4) for well-architected categories. Agents MUST review this hierarchy to ensure they query valid category combinations for the list_org_issues tool.

Path Details Path Array (Levels 1-4)
Adaptable -> Composable -> Separation of Concerns -> Functional Units [1, 6, 24, 14]
Adaptable -> Resilient -> App Lifecycle Management -> Testing Strategy [1, 21, 2, 30]
Easy -> Automated -> Efficiency -> KPIs [12, 5, 13, 16]
Easy -> Intentional -> Maintainability -> Technical Debt [12, 15, 17, 29]
Easy -> Intentional -> Readability -> Design Standards [12, 15, 19, 10]
Easy -> Intentional -> Readability -> Documentation [12, 15, 19, 11]
Easy -> Simple -> Maintainability -> Technical Debt [12, 28, 17, 29]
Easy -> Simple -> Readability -> Documentation [12, 28, 19, 11]
Trusted -> Reliable -> Scalability -> Data Model Optimization [32, 20, 22, 7]
Trusted -> Reliable -> Scalability -> Data Volume Management [32, 20, 22, 9]
Trusted -> Secure -> Data Security -> Sharing and Visibility [32, 23, 8, 27]
Trusted -> Secure -> Data Security -> Use of Encryption [32, 23, 8, 33]
Trusted -> Secure -> Organizational Security -> Authentication [32, 23, 18, 3]
Trusted -> Secure -> Organizational Security -> Authorization [32, 23, 18, 4]
Trusted -> Secure -> Session Security -> Session Management [32, 23, 26, 25]
Trusted -> Secure -> Session Security -> Threat Detection and Response [32, 23, 26, 31]

License Usage Statuses

URI: hubbl://license-usage-status

List of all valid licenseUsage 'status' string values. Use these values when constructing RQL filters for the list_org_license_usages tool.

Value Name
1 Active
2 Disabled

License Usage Types

URI: hubbl://license-usage-type

List of all valid licenseUsage 'type' string values. Use these values when constructing RQL filters for the list_org_license_usages tool.

Value Name
1 User Licenses
2 Permission Set Licenses
3 Feature Licenses

Mobile Device Types

URI: hubbl://mobile-device-type

List of all valid 'mobileDeviceType' string values for Salesforce connected apps.

Value Name
1 phone
2 tablet
3 mini

Mobile Platforms

URI: hubbl://mobile-platform

List of all valid 'mobilePlatform' string values for Salesforce connected apps.

Value Name
1 ios
2 android

Custom Setting Types

URI: hubbl://object-custom-setting-type

List of all valid 'customSettingType' string values on Salesforce objects. Use these values when constructing RQL filters for the list_org_objects tool.

Value Name
1 Hierarchy
2 List

Object Types

URI: hubbl://object-type

List of all valid Salesforce object 'type' string values. Use these values when constructing RQL filters for the list_org_objects tool.

Value Name
1 Big Object
2 Custom Metadata
3 Custom Object
4 Custom Setting
5 External Object
6 Platform Event
7 Standard Object
8 Unknown Type

Package Types

URI: hubbl://package-type

List of all valid 'packageType' string values. Use these values when constructing RQL filters for the list_org_installed_packages tool.

Value Name
1 Managed
2 Unlocked
3 Unmanaged

Field Security Classifications

URI: hubbl://security-classification

List of all valid 'securityClassification' string values for Salesforce field Data Classification. Use these values when constructing RQL filters for the list_org_fields tool.

Value Name
1 Public
2 Internal
3 Confidential
4 Restricted
5 MissionCritical

Workflow Trigger Types

URI: hubbl://workflow-trigger-type

List of all valid Salesforce workflow 'triggerType' string values. Use these values when constructing RQL filters for the list_org_workflows tool.

Value Name
1 onCreateOnly
2 onCreateOrTriggeringUpdate
3 onAllChanges

Tools

To execute these tools over the Model Context Protocol HTTP transport, the body of your request must contain a JSON payload like the following example. By replacing the name and arguments values with the desired tool's details.

{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "get_org_info",
    "arguments": {
      "orgId": "your-org-id"
    }
  },
  "id": 2346
}

Get Account Quota

Name: get_account_quota

Return the calling account's rate-limit state: daily and monthly request limits, how many requests remain in each window, and when each resets. Quota is account-level and is resolved from your credentials, so it takes no arguments and covers every org under the account. Use as a pre-flight check before fan-out workflows so you can pace requests; the check itself is free.

Input Schema

No arguments required

Response Schema

{
data

The calling account's rate-limit state. Quota is account-level — every user and every org under the account draws on the same windows.

Required
{
rateLimit
{
daily

Rate-limit state for a single window.

{
limit
Integer

Hard request ceiling for the window.

remaining
Integer

Requests remaining in the window.

resetAt
String (date-time)

When the window resets.

}
monthly

Rate-limit state for a single window.

{
limit
Integer

Hard request ceiling for the window.

remaining
Integer

Requests remaining in the window.

resetAt
String (date-time)

When the window resets.

}
}
}
}

Get Org Cloud Usage

Name: get_org_cloud_usage

Get an org's cloud-usage summary: per-cloud record counts, record %, and object-utilization %, plus overall active users, object/record counts, last-used date. Use list_org_object_usages for per-object metrics.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
}

Response Schema

{
data

Cloud-usage summary for an org's latest scan — a per-cloud adoption breakdown plus an overall usage summary. Computed, read-only.

Required
{
clouds
Array[

Adoption breakdown for a single cloud classification.

{
cloud
String

Cloud classification — one of Sales Cloud, Service Cloud, Commerce Cloud, Platform, Packages, Custom Objects, Unclassified.

recordCount
Integer

Total records held by this cloud's objects.

recordPercentage
Number

This cloud's share of the org's total records, 0–100.

objectUtilizationPercentage
Number

Percentage of this cloud's objects that hold at least one record, 0–100 (object utilization across all of the cloud's objects).

}
]
summary

Overall usage summary across the org's adoption-relevant objects.

{
activeUsers
Integer

Distinct users active across the org's objects.

lastUsedDate
String (date-time)

Most recent last-used date across the org's objects.

objectCount
Integer

Number of adoption-relevant objects in the org.

recordCount
Integer

Total records across the org's adoption-relevant objects.

}
}
}

Get Org Code Count

Name: get_org_code_count

Get a single code-count record by id, with the full per-line-type breakdown. Use list_org_code_counts to discover an id; that tool is the way to search or filter by file.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Code-count record ID (matches the id returned by list_org_code_counts)

Required
}

Response Schema

{
data

A full representation of per-item code line-count metrics scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) these counts belong to.

source
Integer

Number of source (executable) lines.

comment
Integer

Number of comment lines.

todo
Integer

Number of TODO-comment lines.

block
Integer

Number of block-comment lines.

blockEmpty
Integer

Number of empty lines within block comments.

empty
Integer

Number of empty (blank) lines.

mixed
Integer

Number of lines containing both code and a comment.

single
Integer

Number of single-line comment lines.

total
Integer

Total number of lines.

name
String

Name of the code item (file).

}
}

Get Org Connected App

Name: get_org_connected_app

Get a single connected app by id. Returns the full record (Canvas/mobile/OAuth/options config not in list_org_connected_apps). Use list_org_connected_apps to find an id; to fetch several, filter that list with in(id,1,2,3) rather than calling this once per id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Connected app ID (matches the id returned by list_org_connected_apps)

Required
}

Response Schema

{
data

A full representation of a connected app including mobile and canvas configuration.

{
id
Integer

Internal Hubbl primary key ID.

isInstalled
Boolean

Indicates if the app is currently installed in the org.

salesforceId
String

The 18-character Salesforce ID of the app record.

salesforceApplicationId
String

The Salesforce application identifier.

label
String

The display name (UI Label) of the connected app.

name
String

The developer name (API Name) of the connected app.

namespacePrefix
String

The namespace prefix associated with the connected app.

description
String

A brief description of the app's purpose.

createdDate
String (date-time)

The timestamp the app was created in Salesforce.

lastModifiedDate
String (date-time)

The timestamp the app was last modified in Salesforce.

userCount
Integer

Number of users who have authorized this app.

usageCount
Integer

Total number of times this app has been used.

firstUsedDate
String (date-time)

The timestamp of the first recorded use.

lastUsedDate
String (date-time)

The timestamp of the most recent use.

canvasAccessMethod
String

The method used to access the canvas app (e.g., Get, Post).

canvasEnabled
Boolean

Indicates if canvas functionality is enabled.

canvasOptions
String

Configuration options for the canvas app.

canvasReferenceId
String

External reference ID for canvas integration.

canvasSelectedLocations
String

Locations where the canvas app is exposed (e.g., Layout, Mobile).

canvasUrl
String

The secure URL for the canvas app.

iconUrl
String

URL for the app icon.

infoUrl
String

URL for additional information about the app.

isRegisteredDeviceOnly
Boolean

Indicates if access is restricted to registered devices.

isUsingAdminAuthorization
Boolean

Indicates if the app uses admin-preauthorized OAuth scopes.

logoUrl
String

URL for the app logo.

mobileAppBinaryId
String

Identifier for the mobile app binary.

mobileAppInstallUrl
String

URL to install the mobile app.

mobileAppInstalledDate
String (date-time)

Date the mobile app was installed.

mobileAppInstalledVersion
String

The specific version of the mobile app currently installed.

mobileAppVer
String

The version string of the mobile app.

mobileDeviceType
String

The targeted device type for the mobile app.

mobileMinOsVer
String

The minimum OS version required for the mobile app.

mobilePlatform
String

The mobile platform (iOS, Android).

mobileSessionTimeout
String

Session timeout configuration for the mobile app.

mobileStartUrl
String

The starting URL for the mobile app experience.

namedUserUvidTimeout
String

Timeout for named user UVIDs.

optionsFullContentPushNotifications
Boolean

Indicates if full content push notifications are enabled.

optionsHasSessionLevelPolicy
Boolean

Indicates if session-level policies are applied.

optionsRefreshTokenValidityMetric
Boolean

Metric for refresh token validity.

pinLength
String

Required PIN length for mobile access.

refreshTokenValidityPeriod
Integer

The period for which a refresh token remains valid.

setupUrl
String

URL to the app's setup page in Salesforce.

startUrl
String

The starting URL for the web app experience.

uvidTimeout
String

Timeout for UVIDs.

isLocal
Boolean

Indicates if the app was created locally in the org.

isBlocked
Boolean

Indicates if the app has been blocked by an administrator.

clientId
String

The consumer key (Client ID) for the connected app.

}
}

Get Org ESLint Finding

Name: get_org_es_lint

Get a single ESLint (LWC/Aura JS) finding by id, with rule doc URL, engine, and column. Use list_org_es_lints to discover an id; that tool is the way to search or filter findings.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

ESLint finding ID (matches the id returned by list_org_es_lints)

Required
}

Response Schema

{
data

A full representation of an ESLint finding reported against LWC / Aura JavaScript source in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) the finding was reported against.

metadataId
Integer

Internal Hubbl ID of the metadata record the finding is associated with.

metadataName
String

Name of the associated metadata record.

scanName
String

Name of the scan the finding belongs to.

itemName
String

Name of the code item (file) the finding was reported against.

type
String

The source type the finding applies to (e.g. lwc, aura).

rule
String

The ESLint rule that produced the finding (e.g. no-undef).

category
String

The rule category (e.g. problem, suggestion).

engine
String

The lint engine that produced the finding (e.g. eslint-lwc).

severity
Integer

Numeric severity of the finding (higher is more severe).

description
String

Human-readable description of the finding.

line
Integer

Line number in the source file where the finding was reported.

column
Integer

Column number in the source file where the finding was reported.

problem
Integer

Internal problem code associated with the finding.

url
String

URL to the rule documentation.

name
String

Name of the code item the finding was reported against.

label
String

Label of the code item the finding was reported against.

}
}

Get Org Field

Name: get_org_field

Get a single Salesforce field by id. Returns the full record (picklist, formula, encryption, compliance, security classification), with type, complianceGroup, securityClassification, businessStatus, encryptedScheme, and allowOrPreventDelete as display strings. Use list_org_fields to discover ids; to fetch several, filter that list with in(id,1,2,3) — one request instead of one per id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Field ID (matches the id returned by list_org_fields)

Required
}

Response Schema

{
data

A full representation of a Salesforce field record within an organization.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID linking this field to its parent item record.

label
String

The user-facing display label of the field.

apiName
String

The Salesforce API name of the field.

type
String

The Salesforce field type (e.g., Checkbox, Text, Picklist).

length
Integer

The maximum length of the field value.

picklistValues
String

Comma-separated list of picklist API values.

picklistLabels
String

Comma-separated list of picklist display labels.

picklistActive
String

Comma-separated list indicating which picklist values are active.

globalPicklistName
String

The name of the global picklist this field references, if any.

singleOrMulti
String

Indicates whether the picklist is single-select or multi-select.

isMasterDetail
Boolean

Indicates whether this is a master-detail relationship field.

isLookup
Boolean

Indicates whether this is a lookup relationship field.

allowOrPreventDelete
String

Defines the delete behavior for related records (e.g., SetNull, Restrict, Cascade).

referenceTo
String

The API name of the object this field references.

objectApiName
String

The API name of the Salesforce object this field belongs to.

isCustomField
Boolean

Indicates whether this is a custom field as opposed to a standard field.

recordCount
Integer

The number of records that have a non-null value for this field.

isAggregatable
Boolean

Indicates whether this field can be used in aggregate functions.

isUsable
Boolean

Indicates whether this field is available for use in queries.

namespace
String

The namespace prefix of the package that installed this field, if any.

description
String

A description of the field's purpose.

sobjectId
Integer

Internal Hubbl ID of the parent SObject record.

objectRecordCount
Integer

The total number of records in the parent object.

percentPopulated
Number (double)

The percentage of records that have a non-null value for this field.

isEncrypted
Boolean

Indicates whether this field is encrypted using Salesforce Shield.

usageQueryFailed
Boolean

Indicates whether the usage data query for this field failed.

setupUrl
String

The direct URL to this field's configuration page in Salesforce Setup.

isFormula
Boolean

Indicates whether this field is a formula field.

isRollupSummary
Boolean

Indicates whether this field is a roll-up summary field.

complianceGroup
String

The compliance classification group assigned to this field (e.g., PII, HIPAA).

securityClassification
String

The security classification assigned to this field (e.g., Public, Confidential).

businessStatus
String

The business status of this field (e.g., Active, Deprecated).

encryptedScheme
String

The encryption scheme used if this field is encrypted with Shield Platform Encryption.

}
}

Get Org Flow

Name: get_org_flow

Get a single Salesforce Flow by id. Returns the full record (description, interviewLabel), with status, triggerType, recordTriggerType, processType, and builderType as display strings. Use list_org_flows to discover ids. For legacy workflow rules, use get_org_workflow.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Flow ID (matches the id returned by list_org_flows)

Required
}

Response Schema

{
data

A full representation of a Salesforce flow record within an organization.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

label
String

Display label of the flow.

description
String

Description text of the flow.

interviewLabel
String

Interview label (largely mirrors the flow label).

status
String

Flow status (e.g. Active, Draft, Obsolete).

isActive
Boolean

Whether the flow is currently active.

objectName
String

API name of the object the flow runs against.

triggerType
String

The flow trigger type (e.g. onCreateOnly, onAllChanges).

recordTriggerType
String

Record-trigger timing (e.g. Create, Update).

processType
String

The flow process type (e.g. Flow, AutoLaunchedFlow, Workflow).

builderType
String

The builder that produced the flow (e.g. LightningFlowBuilder).

apiName
String

Developer/API name of the flow.

namespace
String

Namespace prefix for managed-package flows.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

}
}

Get Org Info

Name: get_org_info

Get an org's health summary by orgId: name, userName, hubblScore, complexityScore, lastScanDate, totalIssueCount, highSeverityIssueCount. Use list_orgs to resolve an orgId and for its edition, instanceUrl, and isSandbox.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
}

Response Schema

{
data
Required
{
id
String

The unique Salesforce identifier for the organization

name
String

The name of the organization

userName
String

The username associated with the organization connection

hubblScore
Integer

The Hubbl score for the organization

complexityScore
Integer

The complexity score for the organization

lastScanDate
String (date-time)

The date and time of the last scan

totalIssueCount
Integer

The total number of issues found in the organization

highSeverityIssueCount
Integer

The number of high severity issues found in the organization

}
}

Get Org Installed Package

Name: get_org_installed_package

Get a single installed package by id. Returns the full record including version segments, package version metadata, and container options. To find an id, use the list_org_installed_packages tool; to fetch several, filter that list with in(id,1,2,3) rather than calling this once per id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Installed package ID (matches the id returned by list_org_installed_packages)

Required
}

Response Schema

{
data

A full representation of an installed package.

{
label
String

The display label of the package.

id
Integer

Internal Hubbl primary key ID.

name
String

The developer name of the package.

description
String

A brief description of the package's purpose.

publisherName
String

The name of the organization that published the package.

namespacePrefix
String

The namespace prefix that identifies this package.

majorVersion
Integer

The major version number.

minorVersion
Integer

The minor version number.

patchVersion
Integer

The patch version number.

buildNumber
Integer

The specific build number of the installed version.

releaseState
String

The release state (e.g., Released, Beta).

isDeprecated
Boolean

Indicates whether the package version is deprecated.

isManaged
Boolean

Indicates whether the package is a managed package.

isPasswordProtected
Boolean

Indicates whether the package is protected by a password.

isSecurityReviewed
Boolean

Indicates whether the package has passed Salesforce security review.

salesforceId
String

The 18-character Salesforce ID of the installed package.

salesforceVersionId
String

The Salesforce ID for this specific package version (starts with 04t).

isOrgDependent
Boolean

Indicates whether the package is dependent on the organization's metadata.

isValid
Boolean

Indicates whether the package installation is valid.

packageVersionDescription
String

Description of the specific package version.

packageVersionName
String

Name of the specific package version.

package2ContainerOptions
String

Container options for the package.

isBeta
Boolean

Indicates whether this is a beta version of the package.

packageType
String

The type of the package (e.g., Managed, Unmanaged).

packageId
Integer

The Hubbl ID of the parent package.

packageVersionId
Integer

The Hubbl ID of the package version.

installDate
String (date-time)

The date and time when the package was installed in the org.

isOutdated
Boolean

Indicates whether a newer version of the package is available.

latestVersion
String

The version number of the latest available version of the package.

}
}

Get Org Metadata Item

Name: get_org_item

Get a single metadata item by id, with the full absolute path, directory, and parent join names. Use list_org_items to discover an id; that tool is the way to search or filter files.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Metadata item ID (matches the id returned by list_org_items)

Required
}

Response Schema

{
data

A full representation of a metadata item (code file or directory) scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

parentId
Integer

Internal Hubbl ID of the parent item (directory), if any.

ultimateParentId
Integer

Internal Hubbl ID of the top-level ancestor item, if any.

metadataId
Integer

Internal Hubbl ID of the metadata record this item belongs to.

parentName
String

Name of the parent item (directory), if any.

metadataName
String

Name of the associated metadata record.

scanName
String

Name of the scan this item belongs to.

name
String

Name of the item (file or directory).

nameWithoutExtension
String

The item name with its file extension removed.

extension
String

The file extension of the item, if any.

extensionWithXML
String

The file extension including the -meta.xml suffix, if any.

isDirectory
Boolean

Whether this item is a directory rather than a file.

typeDirectory
String

The metadata type directory the item belongs to (e.g. lwc, aura, classes).

relatedObject
String

The Salesforce object this item relates to, if any.

directory
String

The absolute directory path containing the item.

path
String

The absolute path of the item.

relativePath
String

Path of the item relative to the scanned source root.

}
}

Get Org License Usage

Name: get_org_license_usage

Get one license-usage entry by apiName (type, status, total/used/remaining counts, expiration), with type and status as display strings. Use list_org_license_usages to find an apiName or to search across entries.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
apiName
string

Stable license-usage apiName (from list_org_license_usages). e.g. SosUserPsl

Required
}

Response Schema

A single license usage entry for an org.

{
data

A license usage entry — provisioned / used / remaining license counts for one license type in an org.

{
id
Integer

Internal Hubbl primary key ID (per-scan; not stable across scans).

apiName
String

Stable Salesforce identifier for the license type (e.g. INSIGHTS_INTEGRATION_USER), constant across scans.

name
String

Display label of the license type.

type
String

License category (e.g. User Licenses, Permission Set Licenses, Feature Licenses).

status
String

License status (e.g. Active, Disabled).

totalLicenses
Integer

Total provisioned license count.

usedLicenses
Integer

Number of licenses currently in use.

remainingLicenses
Integer

Number of licenses remaining (total minus used).

expirationDate
String

License expiration date (ISO YYYY-MM-DD), if any.

}
}

Get Org Limit

Name: get_org_limit

Get a single org limit by name (e.g. DailyApiRequests): max, remaining, percentUsed. Use list_org_limits to discover names or rank limits by usage.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
name
string

The org limit's stable name (from list_org_limits). e.g. DailyApiRequests

Required
}

Response Schema

A single org limit for an org.

{
data

A single Salesforce/Hubbl org limit with its cap, remaining headroom, and derived percent used.

{
name
String

The limit's stable natural key (e.g. DailyApiRequests). The by-name path param on getOrgLimit.

max
Integer

The cap for the limit.

remaining
Integer

Headroom left for the limit.

percentUsed
Number (double)

Derived server-side as (max - remaining) / max, a number in [0,1]. Null when max is 0 or unknown.

}
}

Get Org Login Activity Overview

Name: get_org_login_activity_overview

Get an org's login adoption rollup (total licensed / logged-in / adoption % over 30/90/365 days), optionally scoped by license. Use list_org_login_activity for per-user detail.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
license
string

Salesforce license names to scope the rollup to (e.g. ["Salesforce", "Salesforce Platform"]). Omit for the org-wide rollup. Valid values are the org's Salesforce license names.

}

Response Schema

{
data

Login-activity adoption rollup for an org's latest scan. When a license filter is supplied, totalLicensedUsers and every window count reflect only the selected licenses.

Required
{
totalLicensedUsers
Integer

Total licensed users (sum of used User Licenses) for the org's latest scan.

last30Days

Login adoption for a single trailing time window.

{
loggedInUsers
Integer

Licensed users who logged in at least once during the window.

didNotLogIn
Integer

Licensed users who did not log in during the window — max(totalLicensedUsers − loggedInUsers, 0).

loginAdoption
Integer

Percentage of licensed users who logged in, 0–100 — round(loggedInUsers / totalLicensedUsers × 100), capped at 100.

}
last90Days

Login adoption for a single trailing time window.

{
loggedInUsers
Integer

Licensed users who logged in at least once during the window.

didNotLogIn
Integer

Licensed users who did not log in during the window — max(totalLicensedUsers − loggedInUsers, 0).

loginAdoption
Integer

Percentage of licensed users who logged in, 0–100 — round(loggedInUsers / totalLicensedUsers × 100), capped at 100.

}
last365Days

Login adoption for a single trailing time window.

{
loggedInUsers
Integer

Licensed users who logged in at least once during the window.

didNotLogIn
Integer

Licensed users who did not log in during the window — max(totalLicensedUsers − loggedInUsers, 0).

loginAdoption
Integer

Percentage of licensed users who logged in, 0–100 — round(loggedInUsers / totalLicensedUsers × 100), capped at 100.

}
}
}

Get Org Object

Name: get_org_object

Get a single Object by id. Returns the full record (sharing models, usage-query state, setup URL), with type and customSettingType as display strings. Use list_org_objects to discover ids; to fetch several, filter that list with in(id,1,2,3) — one request instead of one per id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Object ID (matches the id returned by list_org_objects)

Required
}

Response Schema

{
data

A full representation of a Salesforce object record within an organization.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

apiName
String

API name of the object.

apiNameLower
String

Lowercased API name of the object (used for case-insensitive lookups).

label
String

Display label of the object.

type
String

Salesforce object type (e.g. Standard Object, Custom Object).

customSettingType
String

Custom setting type, if the object is a custom setting.

isReportable
Boolean

Whether the object is reportable.

isQueryable
Boolean

Whether the object is queryable via SOQL.

description
String

Description text of the object.

namespace
String

Namespace prefix for managed package objects.

recordCount
Integer

Total number of records in the object at scan time.

setupUrl
String

Direct URL to the object's configuration page in Salesforce Setup.

lastUsedDate
String (date-time)

Most recent time any record in the object was created or updated.

recordsCreatedOrUpdatedLast90Days
Integer

Count of records created or updated in the last 90 days.

recordsCreatedOrUpdatedLast365Days
Integer

Count of records created or updated in the last 365 days.

internalSharingModel
String

Internal sharing model (e.g. Private, Read, ReadWrite).

externalSharingModel
String

External sharing model (e.g. Private, Read, ReadWrite).

usageQueryFailed
Boolean

Indicates whether the usage data query for this object failed.

last90DaysUsageQueryFailed
Boolean

Indicates whether the 90-day usage query for this object failed.

last365DaysUsageQueryFailed
Boolean

Indicates whether the 365-day usage query for this object failed.

lastUsedDateQueryFailed
Boolean

Indicates whether the last-used-date query for this object failed.

}
}

Get Org Permission Set

Name: get_org_permission_set

Get a single permission set by id, with all risky-permission flags, description, user count, and license. Use list_org_permission_sets to find an id; that tool is for search, this one is a single lookup.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Permission set ID (matches the id returned by list_org_permission_sets)

Required
}

Response Schema

Response containing a single permission set record.

{
data

A full permission set record returned by the by-id endpoint — the list subset plus the long description free text.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

name
String

Permission set name.

label
String

Display label of the permission set. Mirrors name (permission sets have no separate label).

apiName
String

API name of the permission set.

count
Integer

Number of users assigned this permission set.

userLicense
String

User license associated with the permission set (e.g. Salesforce).

isCustom
Boolean

Whether this is a custom permission set.

namespace
String

Namespace prefix for managed-package permission sets.

modifyAllData
Boolean

Grants Modify All Data.

viewAllData
Boolean

Grants View All Data.

resetPasswords
Boolean

Grants Reset User Passwords and Unlock Users.

dataExport
Boolean

Grants Weekly Data Export.

exportReport
Boolean

Grants Export Reports.

manageSharing
Boolean

Grants Manage Sharing.

manageRoles
Boolean

Grants Manage Roles.

manageUsers
Boolean

Grants Manage Users.

managePasswordPolicies
Boolean

Grants Manage Password Policies.

manageLoginAccessPolicies
Boolean

Grants Manage Login Access Policies.

manageProfilesPermissionsets
Boolean

Grants Manage Profiles and Permission Sets.

editReadonlyFields
Boolean

Grants Edit Read Only Fields.

modifyAllPermission
Boolean

Grants Modify All permission.

apiEnabled
Boolean

Grants API Enabled.

authorApex
Boolean

Grants Author Apex.

canApproveUninstalledApps
Boolean

Grants approval of uninstalled connected apps.

description
String

Long free-text description of the permission set.

}
}

Get Org PMD Violation

Name: get_org_pmd_violation

Get a single PMD (Apex static-analysis) violation by id, with rule doc URL, engine, and column. Use list_org_pmd_violations to discover an id; that tool is the way to search or filter violations.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

PMD violation ID (matches the id returned by list_org_pmd_violations)

Required
}

Response Schema

{
data

A full representation of a PMD static-analysis violation reported against Apex source in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) the violation was reported against.

metadataId
Integer

Internal Hubbl ID of the metadata record the violation is associated with.

metadataName
String

Name of the associated metadata record.

scanName
String

Name of the scan the violation belongs to.

itemName
String

Name of the code item (file) the violation was reported against.

type
String

The kind of source element the violation applies to (e.g. class, trigger).

ruleset
String

The PMD ruleset the rule belongs to.

rule
String

The PMD rule that produced the violation.

priority
Integer

PMD priority of the violation (1 is highest priority).

description
String

Human-readable description of the violation.

line
Integer

Line number in the source file where the violation was reported.

column
Integer

Column number in the source file where the violation was reported.

problem
Integer

Internal problem code associated with the violation.

engine
String

The static-analysis engine that produced the violation (e.g. pmd).

url
String

URL to the rule documentation.

name
String

Name of the code item the violation was reported against.

label
String

Label of the code item the violation was reported against.

}
}

Get Org Recommendation

Name: get_org_recommendation

Get the full recommendation detail for one issue by key (from list_org_issues). Returns human-readable text for the fields list_org_issues encodes as numeric IDs — use it for actionable context on a specific issue.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
key
string

The unique key for tracking an issue across scans of an org.

Required
}

Response Schema

{
data
{
rule
String

The unique rule identifier for the issue

priority
String

The priority level of the recommendation (Low, Medium, High)

effort
String

Estimated effort required to implement the recommendation (Low, Medium, High)

title
String

Human-readable title of the recommendation

content
String

Detailed description or instructions for the recommendation

wellArchitectedCategoryLevel1
String

The top-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel2
String

The second-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel3
String

The third-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel4
String

The fourth-level category in the Salesforce Well-Architected framework

category
String

The functional category of the recommendation

wellArchitectedLevel4Url
String

URL to the documentation for the level 4 Well-Architected category

relatedObject
String

The Salesforce object related to the issue

metadataType
String

The type of Salesforce metadata

isNew
Boolean

Indicates if the recommendation was first introduced in the current scan

isResolved
Boolean

Indicates if the issue was not found in the most recent scan

firstDetectedDate
String (date-time)

The date the this issue was first detected by a Hubbl scan.

lastDetectedDate
String (date-time)

The date the this issue was most recently detected by a Hubbl scan.

key
String

Unique identifier of an issue across all scans of an org

namespace
String

The Salesforce namespace where the issue was found

label
String

A human-readable label for the metadata or component

apiName
String

The API name of the Salesforce component or metadata item

line
Integer

The line number where the issue was identified

isBasic
Boolean

Indicates whether this is a basic health check recommendation

subScoreArea
String

The sub-score area this recommendation affects natively

developerSolutionUrl
String

URL to documentation on how a developer can resolve this issue

adminSolutionUrl
String

URL to documentation on how an administrator can resolve this issue

relativePath
String

Relative path from repository root to the related component

}
}

Get Org SF Profile

Name: get_org_sf_profile

Get a single Salesforce profile by id, with all risky-permission flags, user count, and license. Use list_org_sf_profiles to find an id; that tool is for search, this one is a single lookup.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Profile ID (matches the id returned by list_org_sf_profiles)

Required
}

Response Schema

Response containing a single Salesforce profile record.

{
data

A full Salesforce profile record returned by the by-id endpoint. For this resource the full record is identical to the list subset (no extra columns).

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

name
String

Profile name (e.g. System Administrator).

label
String

Display label of the profile. Mirrors name (profiles have no separate label).

count
Integer

Number of users assigned to this profile.

userLicense
String

User license associated with the profile (e.g. Salesforce).

custom
Boolean

Whether this is a custom profile.

modifyAllData
Boolean

Grants Modify All Data.

viewAllData
Boolean

Grants View All Data.

resetPasswords
Boolean

Grants Reset User Passwords and Unlock Users.

dataExport
Boolean

Grants Weekly Data Export.

exportReport
Boolean

Grants Export Reports.

manageSharing
Boolean

Grants Manage Sharing.

manageRoles
Boolean

Grants Manage Roles.

manageUsers
Boolean

Grants Manage Users.

managePasswordPolicies
Boolean

Grants Manage Password Policies.

manageLoginAccessPolicies
Boolean

Grants Manage Login Access Policies.

manageProfilesPermissionsets
Boolean

Grants Manage Profiles and Permission Sets.

editReadonlyFields
Boolean

Grants Edit Read Only Fields.

modifyAllPermission
Boolean

Grants Modify All permission.

apiEnabled
Boolean

Grants API Enabled.

authorApex
Boolean

Grants Author Apex.

canApproveUninstalledApps
Boolean

Grants approval of uninstalled connected apps.

}
}

Get Org Trigger

Name: get_org_trigger

Get a single Apex trigger by id. Returns DML-event flags, apiVersion, namespace (the same fields as list_org_triggers). Use list_org_triggers to discover ids.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Trigger ID (matches the id returned by list_org_triggers)

Required
}

Response Schema

{
data

A full representation of an Apex trigger scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectName
String

API name of the object the trigger runs against (e.g. Account, Opportunity).

name
String

Developer/API name of the trigger.

label
String

Display label of the trigger (populated with name).

isActive
Boolean

Whether the trigger is currently active.

beforeInsert
Boolean

Whether this trigger runs before insert.

afterInsert
Boolean

Whether this trigger runs after insert.

beforeUpdate
Boolean

Whether this trigger runs before update.

afterUpdate
Boolean

Whether this trigger runs after update.

beforeDelete
Boolean

Whether this trigger runs before delete.

afterDelete
Boolean

Whether this trigger runs after delete.

afterUndelete
Boolean

Whether this trigger runs after undelete.

apiVersion
Number

Salesforce API version of the trigger.

namespace
String

Namespace prefix for managed-package triggers.

}
}

Get Org Workflow

Name: get_org_workflow

Get a single Salesforce workflow rule by id. Returns the full record (description, objectName, label, triggerType, isActive, namespace), with triggerType as a display string. Use list_org_workflows to discover ids. For Flows, use get_org_flow.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Workflow ID (matches the id returned by list_org_workflows)

Required
}

Response Schema

{
data

A full representation of a Salesforce workflow rule record within an organization.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectName
String

API name of the object the workflow runs against.

label
String

Display label of the workflow rule.

triggerType
String

The workflow trigger type (e.g. onCreateOnly, onCreateOrTriggeringUpdate, onAllChanges).

isActive
Boolean

Whether the workflow rule is currently active.

namespace
String

Namespace prefix for managed-package workflows.

description
String

Description text of the workflow rule.

}
}

List Org Class Types

Name: list_org_class_types

List Apex class-type classifications for an org — the controller/model/test family per Apex item. Filter by classFamily/classType (string enums — read hubbl://class-family and hubbl://class-type for valid values) or scope to an itemId. Every class-type lookup goes through this tool — filter to narrow to one.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

classFamily and classType are string enums; read the hubbl://class-family and hubbl://class-type resources for the valid values.

Example: eq(classFamily,controller) · in(classType,batch,queueable)

Fields: id, itemId, classFamily, classType, dependentId

Operators: and(), or(), not(), eq(), in(), ne(), contains().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to classFamily.

}

Response Schema

Paginated response containing Apex class-type classifications scanned in an org.

{
data
Array[

An Apex class-type classification (the controller / model / test / etc. family assigned to a scanned Apex item).

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (Apex class) being classified.

classFamily
String

The high-level class family (e.g. controller, model, test, service).

classType
String

The specific class-type label (e.g. aura controller, batch, queueable).

dependentId
Integer

Internal Hubbl ID of a related code item this classification depends on, if any.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Code Counts

Name: list_org_code_counts

List code line-count metrics per code file for an org (source/comment/blank/total lines). Use get_org_code_count for one record's full per-type breakdown. Line metrics only — not lint (list_org_es_lints) or static-analysis (list_org_pmd_violations) findings.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: gte(total,100) · contains(name,Controller)

Fields: id, itemId, name, total, source, comment

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -total.

}

Response Schema

Paginated response containing per-item code line-count metrics scanned in an org.

{
data
Array[

A minimal representation of per-item code line-count metrics scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) these counts belong to.

name
String

Name of the code item (file).

source
Integer

Number of source (executable) lines.

comment
Integer

Number of comment lines.

empty
Integer

Number of empty (blank) lines.

block
Integer

Number of block-comment lines.

total
Integer

Total number of lines.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Connected App Assignments

Name: list_org_connected_app_assignments

List connected-app assignments for an org: junction rows linking a connected app to a profile or permission set. Use list_org_connected_apps for the apps themselves, not these assignment rows.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number items to return (default 50, max 200)

offset
number

Number items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: eq(connectedAppId,255958)

Fields: id, connectedAppId, profileId, permissionSetId

Operators: and(), or(), not(), eq(), in().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to connectedAppId.

}

Response Schema

Paginated response containing a list of connected-app assignments for an organization.

{
data
Array[

A connected-app assignment — a junction row linking a connected app to exactly one target: profileId XOR permissionSetId is set (the other is null).

{
id
Integer

Internal Hubbl primary key of the junction row.

connectedAppId
Integer

FK to the connected app the assignment grants.

profileId
Integer

FK to the assigned profile; null when the assignment targets a permission set.

permissionSetId
Integer

FK to the assigned permission set; null when the assignment targets a profile.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Connected Apps

Name: list_org_connected_apps

List connected apps connected to the given org. Returns the app name, usage counts, install and last used dates. For further details about a given app, use the get_org_connected_app tool.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number items to return (default 50, max 200)

offset
number

Number items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(isInstalled,true),gte(usageCount,2))

Fields: id, name, label, namespacePrefix, salesforceId, clientId, isInstalled, isLocal, isBlocked, userCount, usageCount, createdDate, lastModifiedDate, firstUsedDate, lastUsedDate

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -lastUsedDate.

}

Response Schema

Paginated response containing a list of connected apps registered against an organization.

{
data
Array[

A minimal representation of a connected app.

{
id
Integer

Internal Hubbl primary key ID.

isInstalled
Boolean

Indicates if the app is currently installed in the org.

salesforceId
String

The 18-character Salesforce ID of the app record.

salesforceApplicationId
String

The Salesforce application identifier.

label
String

The display name (UI Label) of the connected app.

name
String

The developer name (API Name) of the connected app.

namespacePrefix
String

The namespace prefix associated with the connected app.

description
String

A brief description of the app's purpose.

createdDate
String (date-time)

The timestamp the app was created in Salesforce.

userCount
Integer

Number of users who have authorized this app.

usageCount
Integer

Total number of times this app has been used.

firstUsedDate
String (date-time)

The timestamp of the first recorded use.

lastUsedDate
String (date-time)

The timestamp of the most recent usage of this app in the org.

infoUrl
String

URL for additional information about the app.

isUsingAdminAuthorization
Boolean

Indicates if the app uses admin-preauthorized OAuth scopes.

isBlocked
Boolean

Indicates if the app has been blocked by an administrator.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org ESLint Findings

Name: list_org_es_lints

List ESLint findings for LWC/Aura JS in an org (rule, category, severity, line). This is JS lint — use list_org_pmd_violations for Apex static analysis. Use get_org_es_lint for one finding's full record (rule doc URL, engine).

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(type,lwc),eq(category,problem)) · gte(severity,2)

Fields: id, itemId, metadataId, type, rule, category, engine, severity, name, label

Operators: and(), or(), not(), eq(), in(), ne(), contains(), gte(), lte().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -severity.

}

Response Schema

Paginated response containing ESLint findings reported against LWC / Aura JavaScript source in an org.

{
data
Array[

A minimal representation of an ESLint finding reported against LWC / Aura JavaScript source in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) the finding was reported against.

type
String

The source type the finding applies to (e.g. lwc, aura).

rule
String

The ESLint rule that produced the finding (e.g. no-undef).

category
String

The rule category (e.g. problem, suggestion).

severity
Integer

Numeric severity of the finding (higher is more severe).

description
String

Human-readable description of the finding.

line
Integer

Line number in the source file where the finding was reported.

label
String

Label of the code item the finding was reported against.

name
String

Name of the code item the finding was reported against.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Fields

Name: list_org_fields

List Salesforce fields in an org. Returns id/apiName/label/type, object, custom/usable flags, recordCount, percentPopulated. Use get_org_field for the full record.

The type field is returned as a numeric ID. Read the hubbl://field-type resource to map IDs back to string values.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the type field interchangeably.

Example: and(eq(isCustomField,true),gte(percentPopulated,50)) · in(type,Text,2) — mixes string and numeric type values

Fields: id, apiName, label, type, objectApiName, isCustomField, isFormula, isLookup, recordCount, percentPopulated

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting

Fields: id, apiName, label, type, objectApiName, recordCount, percentPopulated

Prepend - for descending. Defaults to -percentPopulated.

}

Response Schema

Paginated response containing a list of Salesforce fields scanned in an org.

{
data
Array[

A minimal representation of a Salesforce field scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectApiName
String

API name of the parent object (e.g. Account, Contact).

apiName
String

API name of the field (e.g. FirstName, Custom_Field__c).

label
String

Display label of the field.

type
String

Salesforce field data type (e.g. Text, Number, Checkbox).

description
String

Description text of the field.

isCustomField
Boolean

Whether this is a custom field (__c suffix).

isUsable
Boolean

Whether the field is usable for querying.

recordCount
Integer

Number of records where this field is populated.

objectRecordCount
Integer

Total number of records in the parent object.

percentPopulated
Number (double)

Percentage of records where this field is populated.

namespace
String

Namespace prefix for managed package fields.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Flows

Name: list_org_flows

List Salesforce Flows (Flow Builder, Process Builder). Returns id/apiName/label, object, status, processType, builderType, triggerType. Use get_org_flow for the full record.

The status, triggerType, recordTriggerType, processType, and builderType fields are returned as numeric IDs. Read the corresponding hubbl:// resources (e.g. hubbl://flow-status) to map IDs back to string values. For legacy workflow rules, use list_org_workflows.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for all enum fields (status, triggerType, recordTriggerType, processType, builderType) interchangeably.

Example: and(eq(isActive,true),eq(objectName,Account)) · and(eq(status,Active),eq(builderType,1))

Fields: id, itemId, sobjectId, objectName, apiName, label, status, isActive, triggerType, recordTriggerType, processType, builderType

Operators: and(), or(), not(), eq(), ne(), in(), contains().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter, plus updatedAt. Prepend - for descending. Defaults to -updatedAt.

}

Response Schema

Paginated response containing a list of Salesforce flows scanned in an org.

{
data
Array[

A minimal representation of a Salesforce flow scanned in an org. The subset of fields returned by the flows list endpoint.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectName
String

API name of the object the flow runs against (e.g. Account, Opportunity).

apiName
String

Developer/API name of the flow.

label
String

Display label of the flow.

status
String

Flow status (e.g. Active, Draft, Obsolete).

isActive
Boolean

Whether the flow is currently active.

triggerType
String

The flow trigger type (e.g. onCreateOnly, onAllChanges).

recordTriggerType
String

Record-trigger timing (e.g. Create, Update).

processType
String

The flow process type (e.g. Flow, AutoLaunchedFlow, Workflow).

builderType
String

The builder that produced the flow (e.g. LightningFlowBuilder).

namespace
String

Namespace prefix for managed-package flows.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Installed Packages

Name: list_org_installed_packages

Returns a list of managed and unmanaged packages installed in a Salesforce organization.

The packageType filter accepts either numeric IDs or string values (see the hubbl://package-type resource); it is returned as a string by get_org_installed_package.

For the full record (version segments, package version metadata), use the get_org_installed_package tool with the id returned by this tool.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the packageType field interchangeably.

Example: and(eq(isManaged,true),eq(isOutdated,true)) · in(packageType,Managed,2) — mixes string and numeric packageType values

Fields: id, name, publisherName, namespacePrefix, salesforceId, salesforceVersionId, packageType, releaseState, isManaged, isDeprecated, isSecurityReviewed, isBeta, isOutdated, installDate

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -installDate.

}

Response Schema

Paginated response containing a list of installed packages in an organization.

{
data
Array[
{
id
Integer

Internal Hubbl primary key ID.

name
String

The developer name of the package.

label
String

The display label of the package.

description
String

A brief description of the package's purpose.

publisherName
String

The name of the organization that published the package.

namespacePrefix
String

The namespace prefix that identifies this package.

buildNumber
Integer

The specific build number of the installed version.

releaseState
String

The release state (e.g., Released, Beta).

isDeprecated
Boolean

Indicates whether the package version is deprecated.

isManaged
Boolean

Indicates whether the package is a managed package.

isPasswordProtected
Boolean

Indicates whether the package is protected by a password.

isSecurityReviewed
Boolean

Indicates whether the package has passed Salesforce security review.

salesforceId
String

The 18-character Salesforce ID of the installed package.

salesforceVersionId
String

The Salesforce ID for this specific package version (starts with 04t).

isOrgDependent
Boolean

Indicates whether the package is dependent on the organization's metadata.

isValid
Boolean

Indicates whether the package installation is valid.

isBeta
Boolean

Indicates whether this is a beta version of the package.

installDate
String (date-time)

The date and time when the package was installed in the org.

isOutdated
Boolean

Indicates whether a newer version of the package is available.

latestVersion
String

The version number of the latest available version of the package.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Issues

Name: list_org_issues

List issues found in an org's scan: key, category, priority, effort, metadataType, wellArchitectedCategoryLevel1-4, and more. Those enum fields are returned as numeric IDs to save tokens — read hubbl://issue-categories, hubbl://issue-priorities, hubbl://issue-efforts, hubbl://issue-metadata-types, and hubbl://issue-well-architected-categories to decode them. Filters accept numeric or string forms; responses are always numeric. Supports a fields parameter (this tool only) to select returned fields — filter/sort still accept fields you exclude. Use get_org_recommendation with an issue's key for full human-readable detail.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number items to return (default 50, max 200)

offset
number

Number items to skip

fields
string

A comma-separated list of fields to include in the response. If omitted, all fields are returned. Example: priority,effort,title

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter will accept either the numeric or string values for the priority, effort, metadataType, category, and all wellArchitectedCategoryLevel fields.

Example: and(eq(priority,high),eq(effort,1),in(metadataType,profiles,17),contains(wellArchitectedCategoryLevel3,security))

Fields: priority, effort, wellArchitectedCategoryLevel1, wellArchitectedCategoryLevel2, wellArchitectedCategoryLevel3, wellArchitectedCategoryLevel4, metadataType, namespace, relatedObject, category, apiName, rule, title, label, content

Operators: and(), or(), not(), eq(), ne(), gt(), gte(), lt(), lte(), in(), out(), like(), ilike(), contains(), isNull(), isNotNull().

Defaults to eq(namespace,null).

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -priority,effort.

}

Response Schema

{
data
Array[
{
key
String

Unique identifier of an issue across all scans of an org

priority
String

The priority level of the recommendation (Low, Medium, High)

effort
String

Estimated effort required to implement the recommendation (Low, Medium, High)

title
String

Human-readable title of the recommendation

wellArchitectedCategoryLevel1
String

The top-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel2
String

The second-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel3
String

The third-level category in the Salesforce Well-Architected framework

wellArchitectedCategoryLevel4
String

The fourth-level category in the Salesforce Well-Architected framework

category
String

The functional category of the recommendation

namespace
String

The Salesforce namespace where the issue was found

apiName
String

The API name of the Salesforce component or metadata item

relatedObject
String

The Salesforce object related to the issue

metadataType
String

The type of Salesforce metadata

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Metadata Items

Name: list_org_items

List metadata items (raw code files/dirs) in an org: name, extension, type, relative path. These are the source files; findings about them live in list_org_es_lints/list_org_pmd_violations. Use get_org_item for full paths.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(typeDirectory,classes),eq(isDirectory,false)) · contains(name,Modal)

Fields: id, parentId, ultimateParentId, metadataId, typeDirectory, isDirectory, name

Operators: and(), or(), not(), eq(), in(), ne(), contains().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to name.

}

Response Schema

Paginated response containing metadata items (code files and directories) scanned in an org.

{
data
Array[

A minimal representation of a metadata item (code file or directory) scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

parentId
Integer

Internal Hubbl ID of the parent item (directory), if any.

metadataId
Integer

Internal Hubbl ID of the metadata record this item belongs to.

name
String

Name of the item (file or directory).

nameWithoutExtension
String

The item name with its file extension removed.

extension
String

The file extension of the item, if any.

typeDirectory
String

The metadata type directory the item belongs to (e.g. lwc, aura, classes).

isDirectory
Boolean

Whether this item is a directory rather than a file.

relativePath
String

Path of the item relative to the scanned source root.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org License Usages

Name: list_org_license_usages

List license usage for an org: id/apiName, name, type, status, total/used/remaining license counts, expirationDate. Use this to audit license consumption — unused licenses (eq(usedLicenses,0)), over-provisioned or expiring licenses. Use get_org_license_usage for a single entry by apiName.

The type and status fields are returned as numeric IDs. Read the hubbl://license-usage-type and hubbl://license-usage-status resources to map IDs back to string values.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the type and status fields interchangeably.

Example: eq(usedLicenses,0) · in(type,User Licenses,3) — mixes string and numeric type values

Fields: id, apiName, name, type, status, totalLicenses, usedLicenses, remainingLicenses, expirationDate

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to name.

}

Response Schema

Paginated response containing a list of license usage entries for an org.

{
data
Array[

A license usage entry — provisioned / used / remaining license counts for one license type in an org.

{
id
Integer

Internal Hubbl primary key ID (per-scan; not stable across scans).

apiName
String

Stable Salesforce identifier for the license type (e.g. INSIGHTS_INTEGRATION_USER), constant across scans.

name
String

Display label of the license type.

type
String

License category (e.g. User Licenses, Permission Set Licenses, Feature Licenses).

status
String

License status (e.g. Active, Disabled).

totalLicenses
Integer

Total provisioned license count.

usedLicenses
Integer

Number of licenses currently in use.

remainingLicenses
Integer

Number of licenses remaining (total minus used).

expirationDate
String

License expiration date (ISO YYYY-MM-DD), if any.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Limits

Name: list_org_limits

List an org's limits with max, remaining, and percentUsed (0-1). Find limits near capacity. Use get_org_limit for a single limit by name (e.g. DailyApiRequests).

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: gte(percentUsed,0.8) · in(name,DailyApiRequests,PermissionSets)

Fields (operators): name (eq, in, contains), percentUsed, max, remaining (gte, lte)

Combine with and(), or(), not().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -percentUsed.

}

Response Schema

Paginated response containing a list of org limits for an org.

{
data
Array[

A single Salesforce/Hubbl org limit with its cap, remaining headroom, and derived percent used.

{
name
String

The limit's stable natural key (e.g. DailyApiRequests). The by-name path param on getOrgLimit.

max
Integer

The cap for the limit.

remaining
Integer

Headroom left for the limit.

percentUsed
Number (double)

Derived server-side as (max - remaining) / max, a number in [0,1]. Null when max is 0 or unknown.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Login Activity

Name: list_org_login_activity

List per-user login activity for an org: user id, license, and 30/90/365-day login counts. Find inactive users. Use get_org_login_activity_overview for the org-wide adoption rollup.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: eq(last365DaysLoginCount,0) — users who never logged in this year · in(userLicense,Salesforce,Salesforce Platform)

Fields: userLicense, last30DaysLoginCount, last90DaysLoginCount, last365DaysLoginCount, userCreatedDate

Operators: and(), or(), not(), eq(), ne(), in(), gt(), gte(), lt(), lte(), between(), contains(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting

Fields: salesforceUserId, userLicense, last30DaysLoginCount, last90DaysLoginCount, last365DaysLoginCount, userCreatedDate

Prepend - for descending. Defaults to -last30DaysLoginCount.

}

Response Schema

Paginated response containing per-user Salesforce login activity for an org.

{
data
Array[

Per-user Salesforce login activity within an org — one row per user.

{
salesforceUserId
String

The Salesforce user id.

userLicense
String

The user's license, resolved from sfProfiles. Falls back to the raw user type in parentheses (e.g. (Guest)) when there is no profile match.

last30DaysLoginCount
Integer

Number of logins over the trailing 30 days.

last90DaysLoginCount
Integer

Number of logins over the trailing 90 days.

last365DaysLoginCount
Integer

Number of logins over the trailing 365 days.

userCreatedDate
String (date-time)

When the user was created.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Object Fields

Name: list_org_object_fields

List fields belonging to one Salesforce Object (id = the Object's id, from list_org_objects). Returns id/apiName/label/type, flags, recordCount, percentPopulated. Use get_org_field for the full record. The type field is returned as a numeric ID — read hubbl://field-type to map IDs back to string values.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
id
number

Object ID (matches the id returned by list_org_objects)

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the type field interchangeably.

Example: and(eq(isCustomField,true),gte(percentPopulated,50)) · in(type,Text,2) — mixes string and numeric type values

Fields: id, itemId, apiName, label, type, namespace, isCustomField, isFormula, isRollupSummary, isLookup, isMasterDetail, isEncrypted, isUsable, isAggregatable, recordCount, percentPopulated, complianceGroup, securityClassification

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -percentPopulated.

}

Response Schema

Paginated response containing a list of Salesforce fields scanned in an org.

{
data
Array[

A minimal representation of a Salesforce field scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectApiName
String

API name of the parent object (e.g. Account, Contact).

apiName
String

API name of the field (e.g. FirstName, Custom_Field__c).

label
String

Display label of the field.

type
String

Salesforce field data type (e.g. Text, Number, Checkbox).

description
String

Description text of the field.

isCustomField
Boolean

Whether this is a custom field (__c suffix).

isUsable
Boolean

Whether the field is usable for querying.

recordCount
Integer

Number of records where this field is populated.

objectRecordCount
Integer

Total number of records in the parent object.

percentPopulated
Number (double)

Percentage of records where this field is populated.

namespace
String

Namespace prefix for managed package fields.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Object Usages

Name: list_org_object_usages

List an org's per-object usage/adoption metrics: record counts, active users, automations, field/empty-field counts, last-used date. For raw object metadata (not usage) use list_org_objects.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(gte(recordCount,1000),in(cloud,Sales Cloud,Service Cloud))

Fields: objectName, apiName, cloud, recordCount, lastUsedDate, activeUsers, automations, fields, emptyFields

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting

Fields: objectName, apiName, recordCount, lastUsedDate, activeUsers, automations, fields, emptyFields

Prepend - for descending. Defaults to -recordCount.

}

Response Schema

Paginated response containing per-object adoption/usage metrics for an org.

{
data
Array[

Per-object adoption/usage metrics for a Salesforce object in an org's scan.

{
objectName
String

Display label of the object.

apiName
String

API name of the object (e.g. Account, Custom_Object__c).

cloud
String

Cloud classification of the object: one of Sales Cloud, Service Cloud, Commerce Cloud, Platform, Packages, Custom Objects, or Unclassified.

recordCount
Integer

Total number of records in the object at scan time.

lastUsedDate
String (date-time)

Most recent time any record in the object was created or updated.

activeUsers
Integer

Count of distinct users active on the object.

automations
Integer

Count of automations (triggers, workflows, flows) on the object.

fields
Integer

Count of fields defined on the object.

emptyFields
Integer

Count of unpopulated fields (percent populated is zero) on the object.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Objects

Name: list_org_objects

List Salesforce objects (Objects) in an org. Returns id/apiName/label/type, namespace, recordCount, last-used date. Use get_org_object for the full record.

The type field is returned as a numeric ID; read the hubbl://object-type resource to map IDs back to string values. The customSettingType filter accepts either numeric IDs or string values (see hubbl://object-custom-setting-type).

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the type and customSettingType fields interchangeably. The numeric form is recommended because the string values contain spaces (e.g. "Custom Object").

Example: and(eq(type,3),gte(recordCount,1)) — numeric (3 = Custom Object) · in(type,Custom Object,Standard Object) — string form, mixes also allowed · eq(customSettingType,2) — numeric (2 = List)

Fields: id, itemId, apiName, label, type, namespace, customSettingType, isReportable, isQueryable, usageQueryFailed, recordCount, lastUsedDate

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -lastUsedDate.

}

Response Schema

Paginated response containing a list of Salesforce objects scanned in an org.

{
data
Array[

A minimal representation of a Salesforce object scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

apiName
String

API name of the object (e.g. Account, Custom_Object__c).

label
String

Display label of the object.

type
String

Salesforce object type (e.g. Standard Object, Custom Object).

description
String

Description text of the object.

namespace
String

Namespace prefix for managed package objects.

recordCount
Integer

Total number of records in the object at scan time.

recordsCreatedOrUpdatedLast90Days
Integer

Count of records created or updated in the last 90 days.

recordsCreatedOrUpdatedLast365Days
Integer

Count of records created or updated in the last 365 days.

lastUsedDate
String (date-time)

Most recent time any record in the object was created or updated.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Permission Sets

Name: list_org_permission_sets

List permission sets for an org with risky-permission flags (Modify All Data, Reset Passwords, Data Export, etc.), assigned-user count, and license. Use get_org_permission_set for one by id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number items to return (default 50, max 200)

offset
number

Number items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(modifyAllData,true),gte(count,1))

Fields: id, itemId, name, label, apiName, count, userLicense, isCustom, modifyAllData, viewAllData, resetPasswords, dataExport, exportReport, manageSharing, manageRoles, manageUsers, managePasswordPolicies, manageLoginAccessPolicies, manageProfilesPermissionsets, editReadonlyFields, modifyAllPermission, apiEnabled, authorApex, canApproveUninstalledApps

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), ne().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -count.

}

Response Schema

Paginated response containing a list of permission sets scanned in an org.

{
data
Array[

A permission set scanned in an org, with its risky-permission flags. The list subset omits the long description free text.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

name
String

Permission set name.

label
String

Display label of the permission set. Mirrors name (permission sets have no separate label).

apiName
String

API name of the permission set.

count
Integer

Number of users assigned this permission set.

userLicense
String

User license associated with the permission set (e.g. Salesforce).

isCustom
Boolean

Whether this is a custom permission set.

namespace
String

Namespace prefix for managed-package permission sets.

modifyAllData
Boolean

Grants Modify All Data.

viewAllData
Boolean

Grants View All Data.

resetPasswords
Boolean

Grants Reset User Passwords and Unlock Users.

dataExport
Boolean

Grants Weekly Data Export.

exportReport
Boolean

Grants Export Reports.

manageSharing
Boolean

Grants Manage Sharing.

manageRoles
Boolean

Grants Manage Roles.

manageUsers
Boolean

Grants Manage Users.

managePasswordPolicies
Boolean

Grants Manage Password Policies.

manageLoginAccessPolicies
Boolean

Grants Manage Login Access Policies.

manageProfilesPermissionsets
Boolean

Grants Manage Profiles and Permission Sets.

editReadonlyFields
Boolean

Grants Edit Read Only Fields.

modifyAllPermission
Boolean

Grants Modify All permission.

apiEnabled
Boolean

Grants API Enabled.

authorApex
Boolean

Grants Author Apex.

canApproveUninstalledApps
Boolean

Grants approval of uninstalled connected apps.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org PMD Violations

Name: list_org_pmd_violations

List PMD violations (Apex static analysis) for an org: ruleset, rule, priority, line. This is Apex — use list_org_es_lints for LWC/Aura JS lint. Use get_org_pmd_violation for one finding's full record (rule doc URL).

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: eq(priority,1) · and(eq(type,class),ne(engine,pmd))

Fields: id, itemId, metadataId, priority, type, engine, name, label

Operators: and(), or(), not(), eq(), in(), ne(), contains().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to priority.

}

Response Schema

Paginated response containing PMD static-analysis violations reported against Apex source in an org.

{
data
Array[

A minimal representation of a PMD static-analysis violation reported against Apex source in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Internal Hubbl ID of the code item (file) the violation was reported against.

type
String

The kind of source element the violation applies to (e.g. class, trigger).

ruleset
String

The PMD ruleset the rule belongs to.

rule
String

The PMD rule that produced the violation.

priority
Integer

PMD priority of the violation (1 is highest priority).

description
String

Human-readable description of the violation.

line
Integer

Line number in the source file where the violation was reported.

label
String

Label of the code item the violation was reported against.

name
String

Name of the code item the violation was reported against.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org SF Profiles

Name: list_org_sf_profiles

List Salesforce profiles for an org with risky-permission flags (Modify All Data, Reset Passwords, Data Export, etc.), assigned-user count, and license. Use get_org_sf_profile for a single profile by id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number items to return (default 50, max 200)

offset
number

Number items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(modifyAllData,true),gte(count,1))

Fields: id, itemId, name, label, count, userLicense, custom, modifyAllData, viewAllData, resetPasswords, dataExport, exportReport, manageSharing, manageRoles, manageUsers, managePasswordPolicies, manageLoginAccessPolicies, manageProfilesPermissionsets, editReadonlyFields, modifyAllPermission, apiEnabled, authorApex, canApproveUninstalledApps

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), ne().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -count.

}

Response Schema

Paginated response containing a list of Salesforce profiles scanned in an org.

{
data
Array[

A Salesforce profile scanned in an org, with its risky-permission flags.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

name
String

Profile name (e.g. System Administrator).

label
String

Display label of the profile. Mirrors name (profiles have no separate label).

count
Integer

Number of users assigned to this profile.

userLicense
String

User license associated with the profile (e.g. Salesforce).

custom
Boolean

Whether this is a custom profile.

modifyAllData
Boolean

Grants Modify All Data.

viewAllData
Boolean

Grants View All Data.

resetPasswords
Boolean

Grants Reset User Passwords and Unlock Users.

dataExport
Boolean

Grants Weekly Data Export.

exportReport
Boolean

Grants Export Reports.

manageSharing
Boolean

Grants Manage Sharing.

manageRoles
Boolean

Grants Manage Roles.

manageUsers
Boolean

Grants Manage Users.

managePasswordPolicies
Boolean

Grants Manage Password Policies.

manageLoginAccessPolicies
Boolean

Grants Manage Login Access Policies.

manageProfilesPermissionsets
Boolean

Grants Manage Profiles and Permission Sets.

editReadonlyFields
Boolean

Grants Edit Read Only Fields.

modifyAllPermission
Boolean

Grants Modify All permission.

apiEnabled
Boolean

Grants API Enabled.

authorApex
Boolean

Grants Author Apex.

canApproveUninstalledApps
Boolean

Grants approval of uninstalled connected apps.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Triggers

Name: list_org_triggers

List Apex triggers in an org. Returns id/name/label, object, isActive, DML-event flags (beforeInsert, afterUpdate, etc.), apiVersion. Use get_org_trigger to fetch a single trigger by id.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(isActive,true),eq(objectName,Case)) · contains(name,Attachment)

Fields: id, itemId, sobjectId, objectName, name, isActive, beforeInsert, afterInsert, beforeUpdate, afterUpdate, beforeDelete, afterDelete, afterUndelete, apiVersion

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter, plus updatedAt. Prepend - for descending. Defaults to -updatedAt.

}

Response Schema

Paginated response containing a list of Apex triggers scanned in an org.

{
data
Array[

A minimal representation of an Apex trigger scanned in an org.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectName
String

API name of the object the trigger runs against (e.g. Account, Opportunity).

name
String

Developer/API name of the trigger.

label
String

Display label of the trigger (populated with name).

isActive
Boolean

Whether the trigger is currently active.

beforeInsert
Boolean

Whether this trigger runs before insert.

afterInsert
Boolean

Whether this trigger runs after insert.

beforeUpdate
Boolean

Whether this trigger runs before update.

afterUpdate
Boolean

Whether this trigger runs after update.

beforeDelete
Boolean

Whether this trigger runs before delete.

afterDelete
Boolean

Whether this trigger runs after delete.

afterUndelete
Boolean

Whether this trigger runs after undelete.

apiVersion
Number

Salesforce API version of the trigger.

namespace
String

Namespace prefix for managed-package triggers.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Org Workflows

Name: list_org_workflows

List Salesforce workflow rules in an org. Returns id/itemId/sobjectId, objectName, label, triggerType, isActive, namespace. Covers legacy workflow rules; for Flows, use list_org_flows. Use get_org_workflow for a single rule.

The triggerType field is returned as a numeric ID. Read the hubbl://workflow-trigger-type resource to map IDs back to string values.

Input Schema

{
orgId
string

The Salesforce Organization ID. e.g. 00D8c0000000000EAE

Required
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Note: The filter accepts both numeric IDs and string values for the triggerType field interchangeably.

Example: and(eq(isActive,true),eq(objectName,Account)) · in(triggerType,onAllChanges,1) — mixes string and numeric triggerType values

Fields: id, itemId, sobjectId, objectName, label, triggerType, isActive

Operators: and(), or(), not(), eq(), in(), contains(), gte(), lte(), between(), isNull(), isNotNull().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter, plus updatedAt. Prepend - for descending. Defaults to -updatedAt.

}

Response Schema

Paginated response containing a list of Salesforce workflow rules scanned in an org.

{
data
Array[

A minimal representation of a Salesforce workflow rule scanned in an org. The subset of fields returned by the workflows list endpoint.

{
id
Integer

Internal Hubbl primary key ID.

itemId
Integer

Hubbl item identifier.

sobjectId
Integer

Internal Hubbl ID of the parent SObject.

objectName
String

API name of the object the workflow runs against (e.g. Account, Opportunity).

label
String

Display label of the workflow rule.

triggerType
String

The workflow trigger type (e.g. onCreateOnly, onCreateOrTriggeringUpdate, onAllChanges).

isActive
Boolean

Whether the workflow rule is currently active.

namespace
String

Namespace prefix for managed-package workflows.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

List Orgs

Name: list_orgs

List/search the Salesforce orgs the caller can access. Returns salesforceId, name, edition, instanceUrl, isSandbox, lastScanDate, lastScanStatus, scanCount, hubblScore. The entry point for resolving an orgId. Use get_org_info for an org's health summary: scores and issue counts.

Input Schema

{
limit
number

Number of items to return (default 50, max 200)

offset
number

Number of items to skip

filter
string

RQL filter — https://docs.hubbl.com/rql

Example: and(eq(isSandbox,false),contains(name,Acme))

Fields (operators): name (eq, contains), salesforceId (eq, in), edition (eq, in — use the display string, e.g. eq(edition,Enterprise Edition)), isSandbox (eq), lastScanDate (gte, lte, between), hubblScore (gte, lte)

Logical operators: and(), or(), not().

sort
string

JSON:API sort — https://jsonapi.org/format/#fetching-sorting Same fields as filter. Prepend - for descending. Defaults to -lastScanDate.

}

Response Schema

Paginated response containing a list of Salesforce orgs the caller can access.

{
data
Array[

A minimal representation of a Salesforce org the caller can access.

{
salesforceId
String

The unique Salesforce identifier for the organization.

name
String

The name of the organization.

edition
String

The Salesforce edition of the organization (e.g. Enterprise Edition).

instanceUrl
String

The Salesforce instance URL for the organization.

isSandbox
Boolean

Whether this org is a sandbox.

lastScanDate
String (date-time)

Completion date of the org's most recent completed scan, or null if it has none.

lastScanStatus
String

Status of the org's most recent completed scan (always "Completed" when present), or null if it has none.

scanCount
Integer

Total number of scans the caller is entitled to for this org, of any status.

hubblScore
Integer

The Hubbl score from the org's most recent completed scan, or null if it has none.

}
]
meta

Pagination metadata for the public API, including navigation links.

{
total
Integer

Total number of items

offset
Integer

Current offset

nextOffset
Integer

Next offset value (null if last page)

nextPageUrl
String

URL for the next page (null if last page)

}
}

Server Info

Name: server_info

Returns metadata about this Hubbl MCP server, including the list of supported MCP API versions and each version's deprecation status. Call this to discover the canonical version contract — distinct from the MCP protocol handshake's software version.

Input Schema

No arguments required

Prompts

Prompts are one-click, no-argument starting points. List them with prompts/list; fetch a single prompt's text with prompts/get by replacing the name with one from the list. The response is a single user message you can send straight to the model.

{
  "jsonrpc": "2.0",
  "method": "prompts/get",
  "params": {
    "name": "top_priority_fixes"
  },
  "id": 2347
}

Connected App Review

Name: connected_app_review

Unused, over-permissioned, or risky connected apps.

Prompt Text

Review the connected apps in this Salesforce org using Hubbl.

1. Call list_org_connected_apps.
2. Flag apps that are unused, have broad OAuth scopes, or allow risky canvas/mobile access. Use get_org_connected_app for detail on the riskiest.

Return a cleanup list, highest risk first: the app, why it's flagged, and whether to revoke, restrict, or review. Lead with the ones to revoke now.

Legacy Automation Cleanup

Name: legacy_automation_cleanup

Old Workflow Rules and automation to migrate to Flow.

Prompt Text

Find legacy automation to modernize in this Salesforce org using Hubbl.

1. Call list_org_workflows for active Workflow Rules.
2. Call list_org_issues filtered to automation entity types (workflows, flows, triggers) for complexity and migration findings.

Return the legacy automation to migrate to Flow, ranked by impact-per-effort, with a suggested migration order. Lead with what to tackle first.

Security Risk Audit

Name: security_risk_audit

Your highest-risk security findings, with fixes.

Prompt Text

Find the most serious security risks in this Salesforce org using Hubbl.

1. Call list_org_issues filtered to the Secure category at high priority (entity types: profiles, permissionSets, securityHealthCheckRisks).
2. Call list_org_connected_apps and flag any with broad OAuth scopes.

Return one risk-ranked list, highest first. For each: the risk and the remediation. End with the three things to fix first.

Top Priority Fixes

Name: top_priority_fixes

The highest-impact issues to fix in this org, ranked.

Prompt Text

List the most important issues to fix in this Salesforce org using Hubbl.

1. Call list_org_issues sorted by priority, limited to the top 10.
2. Call get_org_recommendation for the top 3 to get remediation detail.

Return a ranked list. For each: the issue, why it matters, and the fix. Order by impact-per-effort, not raw priority. Lead with the single most important action.

Unused Field Cleanup

Name: unused_field_cleanup

Low-usage custom fields that are safe to retire.

Prompt Text

Find unused custom fields to clean up in this Salesforce org using Hubbl.

1. Call list_org_fields sorted by populated percentage, focusing on custom fields with very low usage.

Return the 20 highest-impact fields to retire, grouped by object, each with its populated percentage. Order by lowest risk to remove first. Give a cleanup plan, not a raw list.

Was this page helpful?