@sellable/mcp 0.1.319 → 0.1.320
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/dist/generated/column-schema-manifest.js +1 -1
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/server.js +27 -0
- package/dist/tools/inbox.js +88 -56
- package/dist/tools/registry.d.ts +228 -0
- package/dist/tools/registry.js +2 -0
- package/package.json +1 -1
- package/skills/building-gtm-tables/references/column-type-catalog.md +15 -0
- package/skills/create-campaign/SKILL.md +8 -0
- package/skills/create-campaign-v2/SKILL.md +7 -0
package/README.md
CHANGED
|
@@ -474,6 +474,23 @@ compatibility and as the tested foundation-memory engine.
|
|
|
474
474
|
- `import_leads` - Create a lead list and start importing leads
|
|
475
475
|
- `confirm_lead_list` - Import confirmed lead list into campaign table
|
|
476
476
|
|
|
477
|
+
### Inbox Reply Tools (Approval-Gated)
|
|
478
|
+
|
|
479
|
+
These tools use the existing product `/api/v3/inbox` routes, the same backend
|
|
480
|
+
surface as the Sellable UI.
|
|
481
|
+
|
|
482
|
+
- `search_inbox_threads` - Search inbox threads through `GET /api/v3/inbox`
|
|
483
|
+
- `get_inbox_thread` - Load one inbox thread through `GET /api/v3/inbox/[threadId]`
|
|
484
|
+
- `check_inbox_reply_eligibility` - Load product reply eligibility for one thread
|
|
485
|
+
- `update_inbox_draft` - Edit an existing draft through `PATCH /api/v3/inbox/[threadId]/draft`
|
|
486
|
+
- `send_inbox_draft` - Send the approved current draft after exact body, version, thread snapshot, idempotency key, and explicit operator approval checks
|
|
487
|
+
- `send_inbox_manual_reply` - Send one exact approved manual reply after message hash, thread snapshot, idempotency key, and explicit operator approval checks
|
|
488
|
+
|
|
489
|
+
No production send smoke may run without explicit operator approval for the
|
|
490
|
+
workspace, sender, thread or recipient, exact body, tool, route, and expected
|
|
491
|
+
side effect. Draft editing only edits an existing draft; new reply draft
|
|
492
|
+
generation is not part of these inbox tools.
|
|
493
|
+
|
|
477
494
|
### Processing Tools (Free)
|
|
478
495
|
|
|
479
496
|
- `draft_rubrics` - Draft rubric criteria (stored in MCP state)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const manifestJson = "{\n \"generatedAt\": \"deterministic\",\n \"counts\": {\n \"visible\": 18,\n \"hiddenActive\": 10,\n \"deprecatedLoadOnly\": 6\n },\n \"createableTypes\": [\n \"ai_column\",\n \"check_connection\",\n \"checkbox\",\n \"formula\",\n \"generate_message\",\n \"http_request\",\n \"inbound_webhook\",\n \"is_open_profile\",\n \"react_and_comment\",\n \"score_icp_mcp\",\n \"send_dm\",\n \"send_inmail_closed\",\n \"send_inmail_open\",\n \"send_invite\",\n \"text\",\n \"view_profile\",\n \"wait\"\n ],\n \"activeTypes\": [\n \"action\",\n \"ai_column\",\n \"check_connection\",\n \"checkbox\",\n \"datetime\",\n \"example_checkbox\",\n \"formula\",\n \"generate_message\",\n \"http_request\",\n \"inbound_webhook\",\n \"is_open_profile\",\n \"json\",\n \"linkedin_url\",\n \"next_action_at\",\n \"react_and_comment\",\n \"reply_sentiment\",\n \"score_icp_mcp\",\n \"select\",\n \"send_dm\",\n \"send_inmail_closed\",\n \"send_inmail_open\",\n \"send_invite\",\n \"sent_at\",\n \"sequence_status\",\n \"text\",\n \"view_profile\",\n \"wait\"\n ],\n \"rows\": [\n {\n \"kind\": \"visible\",\n \"optionId\": \"http_request.generic\",\n \"section\": \"Automation\",\n \"label\": \"HTTP Request\",\n \"columnType\": \"http_request\",\n \"displayName\": \"HTTP Request\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"HTTP Request\",\n \"defaultConfig\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"GET\"\n },\n \"endpoint\": {\n \"value\": \"https://api.example.com/health\"\n }\n }\n },\n \"configFixture\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"GET\"\n },\n \"endpoint\": {\n \"value\": \"https://api.example.com/health\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.http_request\"\n ],\n \"runtimeOwner\": \"http-request cell executor\",\n \"requiresInputs\": [\n \"endpoint\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"ai_column\",\n \"section\": \"Automation\",\n \"label\": \"Use AI\",\n \"columnType\": \"ai_column\",\n \"displayName\": \"AI Column\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Use AI\",\n \"defaultConfig\": {\n \"aiConfig\": {\n \"modelName\": \"google/gemini-3.1-flash-lite-preview\",\n \"systemPrompt\": null,\n \"userPrompt\": \"\",\n \"outputFields\": [\n {\n \"name\": \"response\",\n \"type\": \"text\"\n }\n ],\n \"enableWebSearch\": true,\n \"maxSearchQueries\": 3\n },\n \"processing\": {\n \"autoUpdate\": true\n }\n },\n \"configFixture\": {\n \"aiConfig\": {\n \"modelName\": \"google/gemini-3.1-flash-lite-preview\",\n \"systemPrompt\": null,\n \"userPrompt\": \"Summarize {{Company}} in one sentence.\",\n \"outputFields\": [\n {\n \"name\": \"summary\",\n \"type\": \"text\"\n }\n ],\n \"enableWebSearch\": false,\n \"maxSearchQueries\": 0\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.ai_column\"\n ],\n \"runtimeOwner\": \"AI column cell executor\",\n \"requiresInputs\": [\n \"aiConfig.userPrompt\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"custom\",\n \"createKey\": \"ai_column_config\",\n \"editKey\": \"ai_column_config\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.aiConfig\",\n \"config.processing\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.aiConfig\",\n \"config.processing\"\n ],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"inbound_webhook\",\n \"section\": \"Automation\",\n \"label\": \"Inbound Webhook\",\n \"columnType\": \"inbound_webhook\",\n \"displayName\": \"Inbound Webhook\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Inbound Webhook\",\n \"defaultConfig\": {\n \"rateLimit\": {\n \"maxRequests\": 100,\n \"windowSeconds\": 60\n }\n },\n \"configFixture\": {\n \"webhookToken\": \"fixture-token\",\n \"rateLimit\": {\n \"maxRequests\": 100,\n \"windowSeconds\": 60\n }\n },\n \"validationOwners\": [\n \"inboundWebhookConfigSchema\"\n ],\n \"runtimeOwner\": \"webhook source/update route\",\n \"requiresInputs\": [\n \"webhook payload\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"formula\",\n \"section\": \"Automation\",\n \"label\": \"Formula\",\n \"columnType\": \"formula\",\n \"displayName\": \"Formula\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Formula\",\n \"defaultConfig\": {},\n \"configFixture\": {\n \"expression\": \"{{First Name}} + ' ' + {{Last Name}}\"\n },\n \"validationOwners\": [\n \"formulaConfigSchema\"\n ],\n \"runtimeOwner\": \"formula cell executor\",\n \"requiresInputs\": [\n \"expression\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"wait\",\n \"section\": \"Automation\",\n \"label\": \"Wait\",\n \"columnType\": \"wait\",\n \"displayName\": \"Wait\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Wait\",\n \"defaultConfig\": {\n \"waitConfig\": {\n \"duration\": 1,\n \"unit\": \"days\"\n }\n },\n \"configFixture\": {\n \"waitConfig\": {\n \"duration\": 1,\n \"unit\": \"days\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.wait\"\n ],\n \"runtimeOwner\": \"sweeper wait executor\",\n \"requiresInputs\": [\n \"waitConfig.duration\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"http_request.enrich_prospect\",\n \"section\": \"Sellable Presets\",\n \"label\": \"Enrich Prospect\",\n \"columnType\": \"http_request\",\n \"displayName\": \"HTTP Request\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Enrich Prospect\",\n \"defaultConfig\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"POST\"\n },\n \"endpoint\": {\n \"value\": \"/api/v4/enrich-prospect\"\n },\n \"body\": {\n \"value\": \"{\\\"linkedinUrl\\\":\\\"{{LinkedIn URL}}\\\"}\"\n }\n },\n \"rateLimit\": {\n \"mode\": \"concurrency\",\n \"maxConcurrent\": 8,\n \"concurrencyGroup\": \"linkedin-harvest\"\n }\n },\n \"configFixture\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"POST\"\n },\n \"endpoint\": {\n \"value\": \"/api/v4/enrich-prospect\"\n },\n \"body\": {\n \"value\": \"{\\\"linkedinUrl\\\":\\\"{{LinkedIn URL}}\\\"}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.http_request\"\n ],\n \"runtimeOwner\": \"http-request cell executor\",\n \"requiresInputs\": [\n \"LinkedIn URL text column\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"score_icp_mcp\",\n \"section\": \"Sellable Presets\",\n \"label\": \"ICP Score\",\n \"columnType\": \"score_icp_mcp\",\n \"displayName\": \"MCP ICP Score\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"ICP Score\",\n \"defaultConfig\": {\n \"rubric\": []\n },\n \"configFixture\": {\n \"rubric\": [\n {\n \"checkName\": \"role_fit\",\n \"criterion\": \"Prospect matches the ICP\",\n \"description\": \"Role and company context match target buyer\",\n \"reason\": \"Fit predicts relevance\",\n \"isRequiredCheck\": \"true\",\n \"allowPartialCredit\": \"true\"\n }\n ],\n \"inputMapping\": {\n \"enrichedProspectId\": \"{{Enrich Prospect.id}}\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.score_icp_mcp\"\n ],\n \"runtimeOwner\": \"score ICP cell executor\",\n \"requiresInputs\": [\n \"Enrich Prospect output\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"generate_message\",\n \"section\": \"Sellable Presets\",\n \"label\": \"Generate Message\",\n \"columnType\": \"generate_message\",\n \"displayName\": \"Generate Message\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Generate Message\",\n \"defaultConfig\": {},\n \"configFixture\": {\n \"inputMapping\": {\n \"campaignOfferId\": {\n \"value\": \"{{Campaign Offer ID}}\"\n },\n \"enrichedProspectId\": {\n \"value\": \"{{Enrich Prospect.id}}\"\n },\n \"icpScore\": {\n \"value\": \"{{ICP Score.score}}\"\n }\n }\n },\n \"validationOwners\": [\n \"generateMessageConfigSchema\"\n ],\n \"runtimeOwner\": \"HTTP-backed message generation executor\",\n \"requiresInputs\": [\n \"Enrich Prospect output\",\n \"ICP Score output/context\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"passthrough\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"is_open_profile\",\n \"section\": \"LinkedIn\",\n \"label\": \"Check Open Profile\",\n \"columnType\": \"is_open_profile\",\n \"displayName\": \"Check Open Profile\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Check Open Profile\",\n \"defaultConfig\": {\n \"httpConfig\": {\n \"method\": \"POST\",\n \"endpoint\": \"/api/v1/linkedin/check-open-profile\",\n \"bodyTemplate\": {\n \"linkedinUrl\": \"{{linkedinUrl}}\"\n }\n }\n },\n \"configFixture\": {},\n \"validationOwners\": [\n \"checkOpenProfileColumn schema\"\n ],\n \"runtimeOwner\": \"open profile cell executor\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"check_connection\",\n \"section\": \"LinkedIn\",\n \"label\": \"Check Connection\",\n \"columnType\": \"check_connection\",\n \"displayName\": \"Check Connection\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Check Connection\",\n \"defaultConfig\": {\n \"executorType\": \"check_connection\"\n },\n \"configFixture\": {\n \"executorType\": \"check_connection\"\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.check_connection\"\n ],\n \"runtimeOwner\": \"custom local connection executor\",\n \"requiresInputs\": [\n \"lead_linkedin_id\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"view_profile\",\n \"section\": \"LinkedIn\",\n \"label\": \"View Profile\",\n \"columnType\": \"view_profile\",\n \"displayName\": \"View Profile\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"View Profile\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"VIEW_PROFILE\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"VIEW_PROFILE\"\n }\n },\n \"validationOwners\": [\n \"view_profile action schema\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_invite\",\n \"section\": \"LinkedIn\",\n \"label\": \"Invite\",\n \"columnType\": \"send_invite\",\n \"displayName\": \"Invite\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Invite\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\",\n \"waitForEvent\": {\n \"event\": \"connection_accept\",\n \"timeoutDays\": 25\n }\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\",\n \"waitForEvent\": {\n \"event\": \"connection_accept\",\n \"timeoutDays\": 25\n },\n \"allow_existing_connections_passthrough\": false\n },\n \"inputMapping\": {\n \"linkedinUrl\": {\n \"value\": \"{{LinkedIn URL}}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_invite\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\",\n \"optional connection note\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_dm\",\n \"section\": \"LinkedIn\",\n \"label\": \"DM\",\n \"columnType\": \"send_dm\",\n \"displayName\": \"DM\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"DM\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"DM\",\n \"sendEachParagraphAsMessage\": false,\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 3\n }\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"DM\",\n \"sendEachParagraphAsMessage\": false\n },\n \"inputMapping\": {\n \"message\": {\n \"value\": \"{{Generate Message.body}}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_dm\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"message body\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_inmail_open\",\n \"section\": \"LinkedIn\",\n \"label\": \"InMail (Open Profile)\",\n \"columnType\": \"send_inmail_open\",\n \"displayName\": \"InMail (Open Profile)\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"InMail (Open Profile)\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_OPEN\",\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 5\n }\n },\n \"fallbackToClosedInmail\": true,\n \"minPaidInmailCreditsForFallback\": 25\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_OPEN\",\n \"messageSource\": {\n \"column\": \"Generate Message\",\n \"subjectPath\": \"subject\",\n \"bodyPath\": \"body\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_inmail_open\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"subject\",\n \"body\",\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_inmail_closed\",\n \"section\": \"LinkedIn\",\n \"label\": \"InMail (Closed Profile)\",\n \"columnType\": \"send_inmail_closed\",\n \"displayName\": \"InMail (Closed Profile)\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"InMail (Closed Profile)\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_CLOSED\",\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 5\n }\n },\n \"fallbackAcrossTiers\": false,\n \"minPaidInmailCreditsForSend\": 25\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_CLOSED\",\n \"messageSource\": {\n \"column\": \"Generate Message\",\n \"subjectPath\": \"subject\",\n \"bodyPath\": \"body\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_inmail_closed\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"subject\",\n \"body\",\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"react_and_comment\",\n \"section\": \"LinkedIn\",\n \"label\": \"React & Comment\",\n \"columnType\": \"react_and_comment\",\n \"displayName\": \"React & Comment\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"React & Comment\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"COMMENT\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"COMMENT\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.react_and_comment\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn post URL\",\n \"comment text\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"text\",\n \"section\": \"Data\",\n \"label\": \"Text\",\n \"columnType\": \"text\",\n \"displayName\": \"Text\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Text\",\n \"defaultConfig\": {\n \"placeholder\": \"LinkedIn URL or any text\"\n },\n \"configFixture\": {\n \"placeholder\": \"LinkedIn URL or any text\"\n },\n \"validationOwners\": [\n \"textConfigSchema\"\n ],\n \"runtimeOwner\": \"display/manual text owner\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"checkbox\",\n \"section\": \"Data\",\n \"label\": \"Checkbox\",\n \"columnType\": \"checkbox\",\n \"displayName\": \"Checkbox\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Checkbox\",\n \"defaultConfig\": {\n \"default\": false\n },\n \"configFixture\": {\n \"default\": false,\n \"editable\": true\n },\n \"validationOwners\": [\n \"checkboxConfigSchema\"\n ],\n \"runtimeOwner\": \"checkbox cell executor\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.action\",\n \"section\": \"Hidden Active\",\n \"label\": \"LinkedIn Action\",\n \"columnType\": \"action\",\n \"displayName\": \"LinkedIn Action\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"LinkedIn Action\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\"\n }\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"sequence\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.datetime\",\n \"section\": \"Hidden Active\",\n \"label\": \"Date/Time\",\n \"columnType\": \"datetime\",\n \"displayName\": \"Date/Time\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Date/Time\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.example_checkbox\",\n \"section\": \"Hidden Active\",\n \"label\": \"Example\",\n \"columnType\": \"example_checkbox\",\n \"displayName\": \"Example\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Example\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.json\",\n \"section\": \"Hidden Active\",\n \"label\": \"JSON\",\n \"columnType\": \"json\",\n \"displayName\": \"JSON\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"JSON\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.linkedin_url\",\n \"section\": \"Hidden Active\",\n \"label\": \"LinkedIn URL\",\n \"columnType\": \"linkedin_url\",\n \"displayName\": \"LinkedIn URL\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"LinkedIn URL\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.next_action_at\",\n \"section\": \"Hidden Active\",\n \"label\": \"Next Action\",\n \"columnType\": \"next_action_at\",\n \"displayName\": \"Next Action\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Next Action\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.reply_sentiment\",\n \"section\": \"Hidden Active\",\n \"label\": \"Reply Sentiment\",\n \"columnType\": \"reply_sentiment\",\n \"displayName\": \"Reply Sentiment\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Reply Sentiment\",\n \"defaultConfig\": {\n \"options\": [\n \"interested\",\n \"not_interested\",\n \"out_of_office\",\n \"question\",\n \"neutral\",\n \"negative\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [\n \"interested\",\n \"not_interested\",\n \"out_of_office\",\n \"question\",\n \"neutral\",\n \"negative\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.select\",\n \"section\": \"Hidden Active\",\n \"label\": \"Select\",\n \"columnType\": \"select\",\n \"displayName\": \"Select\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Select\",\n \"defaultConfig\": {\n \"options\": [],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [\n \"name\",\n \"config\"\n ],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"limited_edit_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.options\",\n \"config.editable\",\n \"config.source\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"limited_edit_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.options\",\n \"config.editable\",\n \"config.source\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.sent_at\",\n \"section\": \"Hidden Active\",\n \"label\": \"Sent At\",\n \"columnType\": \"sent_at\",\n \"displayName\": \"Sent At\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Sent At\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.sequence_status\",\n \"section\": \"Hidden Active\",\n \"label\": \"Sequence Status\",\n \"columnType\": \"sequence_status\",\n \"displayName\": \"Sequence Status\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Sequence Status\",\n \"defaultConfig\": {\n \"options\": [\n \"pending\",\n \"queued\",\n \"scheduled\",\n \"sent\",\n \"in_convo\",\n \"replied\",\n \"completed\",\n \"failed\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [\n \"pending\",\n \"queued\",\n \"scheduled\",\n \"sent\",\n \"in_convo\",\n \"replied\",\n \"completed\",\n \"failed\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.enrich_company\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Enrich Company\",\n \"columnType\": \"enrich_company\",\n \"displayName\": \"Enrich Company\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Enrich Company\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"enrichment\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.enrich_person\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Enrich Prospect (legacy)\",\n \"columnType\": \"enrich_person\",\n \"displayName\": \"Enrich Prospect (legacy)\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Enrich Prospect (legacy)\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"enrichment\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.generate_message_sequence\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Generate Message\",\n \"columnType\": \"generate_message_sequence\",\n \"displayName\": \"Generate Message\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Generate Message\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"generation\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.input\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Text Input\",\n \"columnType\": \"input\",\n \"displayName\": \"Text Input\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Text Input\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_text\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_text\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.score_icp\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"ICP Score\",\n \"columnType\": \"score_icp\",\n \"displayName\": \"ICP Score\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"ICP Score\",\n \"defaultConfig\": {\n \"qualificationThreshold\": 60\n },\n \"configFixture\": {\n \"qualificationThreshold\": 60\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"scoring\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.score_icp_rubric\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"ICP Rubric Score (legacy alias)\",\n \"columnType\": \"score_icp_rubric\",\n \"displayName\": \"ICP Rubric Score (legacy alias)\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"ICP Rubric Score (legacy alias)\",\n \"defaultConfig\": {\n \"rubric\": []\n },\n \"configFixture\": {\n \"rubric\": []\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"scoring\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n }\n ]\n}";
|
|
1
|
+
const manifestJson = "{\n \"generatedAt\": \"deterministic\",\n \"counts\": {\n \"visible\": 19,\n \"hiddenActive\": 10,\n \"deprecatedLoadOnly\": 6\n },\n \"createableTypes\": [\n \"ai_column\",\n \"check_connection\",\n \"check_paid_inmail_credits\",\n \"checkbox\",\n \"formula\",\n \"generate_message\",\n \"http_request\",\n \"inbound_webhook\",\n \"is_open_profile\",\n \"react_and_comment\",\n \"score_icp_mcp\",\n \"send_dm\",\n \"send_inmail_closed\",\n \"send_inmail_open\",\n \"send_invite\",\n \"text\",\n \"view_profile\",\n \"wait\"\n ],\n \"activeTypes\": [\n \"action\",\n \"ai_column\",\n \"check_connection\",\n \"check_paid_inmail_credits\",\n \"checkbox\",\n \"datetime\",\n \"example_checkbox\",\n \"formula\",\n \"generate_message\",\n \"http_request\",\n \"inbound_webhook\",\n \"is_open_profile\",\n \"json\",\n \"linkedin_url\",\n \"next_action_at\",\n \"react_and_comment\",\n \"reply_sentiment\",\n \"score_icp_mcp\",\n \"select\",\n \"send_dm\",\n \"send_inmail_closed\",\n \"send_inmail_open\",\n \"send_invite\",\n \"sent_at\",\n \"sequence_status\",\n \"text\",\n \"view_profile\",\n \"wait\"\n ],\n \"rows\": [\n {\n \"kind\": \"visible\",\n \"optionId\": \"http_request.generic\",\n \"section\": \"Automation\",\n \"label\": \"HTTP Request\",\n \"columnType\": \"http_request\",\n \"displayName\": \"HTTP Request\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"HTTP Request\",\n \"defaultConfig\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"GET\"\n },\n \"endpoint\": {\n \"value\": \"https://api.example.com/health\"\n }\n }\n },\n \"configFixture\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"GET\"\n },\n \"endpoint\": {\n \"value\": \"https://api.example.com/health\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.http_request\"\n ],\n \"runtimeOwner\": \"http-request cell executor\",\n \"requiresInputs\": [\n \"endpoint\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"ai_column\",\n \"section\": \"Automation\",\n \"label\": \"Use AI\",\n \"columnType\": \"ai_column\",\n \"displayName\": \"AI Column\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Use AI\",\n \"defaultConfig\": {\n \"aiConfig\": {\n \"modelName\": \"google/gemini-3.1-flash-lite-preview\",\n \"systemPrompt\": null,\n \"userPrompt\": \"\",\n \"outputFields\": [\n {\n \"name\": \"response\",\n \"type\": \"text\"\n }\n ],\n \"enableWebSearch\": true,\n \"maxSearchQueries\": 3\n },\n \"processing\": {\n \"autoUpdate\": true\n }\n },\n \"configFixture\": {\n \"aiConfig\": {\n \"modelName\": \"google/gemini-3.1-flash-lite-preview\",\n \"systemPrompt\": null,\n \"userPrompt\": \"Summarize {{Company}} in one sentence.\",\n \"outputFields\": [\n {\n \"name\": \"summary\",\n \"type\": \"text\"\n }\n ],\n \"enableWebSearch\": false,\n \"maxSearchQueries\": 0\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.ai_column\"\n ],\n \"runtimeOwner\": \"AI column cell executor\",\n \"requiresInputs\": [\n \"aiConfig.userPrompt\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"custom\",\n \"createKey\": \"ai_column_config\",\n \"editKey\": \"ai_column_config\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.aiConfig\",\n \"config.processing\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.aiConfig\",\n \"config.processing\"\n ],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"inbound_webhook\",\n \"section\": \"Automation\",\n \"label\": \"Inbound Webhook\",\n \"columnType\": \"inbound_webhook\",\n \"displayName\": \"Inbound Webhook\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Inbound Webhook\",\n \"defaultConfig\": {\n \"rateLimit\": {\n \"maxRequests\": 100,\n \"windowSeconds\": 60\n }\n },\n \"configFixture\": {\n \"webhookToken\": \"fixture-token\",\n \"rateLimit\": {\n \"maxRequests\": 100,\n \"windowSeconds\": 60\n }\n },\n \"validationOwners\": [\n \"inboundWebhookConfigSchema\"\n ],\n \"runtimeOwner\": \"webhook source/update route\",\n \"requiresInputs\": [\n \"webhook payload\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"formula\",\n \"section\": \"Automation\",\n \"label\": \"Formula\",\n \"columnType\": \"formula\",\n \"displayName\": \"Formula\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Formula\",\n \"defaultConfig\": {},\n \"configFixture\": {\n \"expression\": \"{{First Name}} + ' ' + {{Last Name}}\"\n },\n \"validationOwners\": [\n \"formulaConfigSchema\"\n ],\n \"runtimeOwner\": \"formula cell executor\",\n \"requiresInputs\": [\n \"expression\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"wait\",\n \"section\": \"Automation\",\n \"label\": \"Wait\",\n \"columnType\": \"wait\",\n \"displayName\": \"Wait\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Wait\",\n \"defaultConfig\": {\n \"waitConfig\": {\n \"duration\": 1,\n \"unit\": \"days\"\n }\n },\n \"configFixture\": {\n \"waitConfig\": {\n \"duration\": 1,\n \"unit\": \"days\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.wait\"\n ],\n \"runtimeOwner\": \"sweeper wait executor\",\n \"requiresInputs\": [\n \"waitConfig.duration\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"http_request.enrich_prospect\",\n \"section\": \"Sellable Presets\",\n \"label\": \"Enrich Prospect\",\n \"columnType\": \"http_request\",\n \"displayName\": \"HTTP Request\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Enrich Prospect\",\n \"defaultConfig\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"POST\"\n },\n \"endpoint\": {\n \"value\": \"/api/v4/enrich-prospect\"\n },\n \"body\": {\n \"value\": \"{\\\"linkedinUrl\\\":\\\"{{LinkedIn URL}}\\\"}\"\n }\n },\n \"rateLimit\": {\n \"mode\": \"concurrency\",\n \"maxConcurrent\": 8,\n \"concurrencyGroup\": \"linkedin-harvest\"\n }\n },\n \"configFixture\": {\n \"inputMapping\": {\n \"method\": {\n \"value\": \"POST\"\n },\n \"endpoint\": {\n \"value\": \"/api/v4/enrich-prospect\"\n },\n \"body\": {\n \"value\": \"{\\\"linkedinUrl\\\":\\\"{{LinkedIn URL}}\\\"}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.http_request\"\n ],\n \"runtimeOwner\": \"http-request cell executor\",\n \"requiresInputs\": [\n \"LinkedIn URL text column\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"score_icp_mcp\",\n \"section\": \"Sellable Presets\",\n \"label\": \"ICP Score\",\n \"columnType\": \"score_icp_mcp\",\n \"displayName\": \"MCP ICP Score\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"ICP Score\",\n \"defaultConfig\": {\n \"rubric\": []\n },\n \"configFixture\": {\n \"rubric\": [\n {\n \"checkName\": \"role_fit\",\n \"criterion\": \"Prospect matches the ICP\",\n \"description\": \"Role and company context match target buyer\",\n \"reason\": \"Fit predicts relevance\",\n \"isRequiredCheck\": \"true\",\n \"allowPartialCredit\": \"true\"\n }\n ],\n \"inputMapping\": {\n \"enrichedProspectId\": \"{{Enrich Prospect.id}}\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.score_icp_mcp\"\n ],\n \"runtimeOwner\": \"score ICP cell executor\",\n \"requiresInputs\": [\n \"Enrich Prospect output\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"generate_message\",\n \"section\": \"Sellable Presets\",\n \"label\": \"Generate Message\",\n \"columnType\": \"generate_message\",\n \"displayName\": \"Generate Message\",\n \"lifecycleClass\": \"preset-selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Generate Message\",\n \"defaultConfig\": {},\n \"configFixture\": {\n \"inputMapping\": {\n \"campaignOfferId\": {\n \"value\": \"{{Campaign Offer ID}}\"\n },\n \"enrichedProspectId\": {\n \"value\": \"{{Enrich Prospect.id}}\"\n },\n \"icpScore\": {\n \"value\": \"{{ICP Score.score}}\"\n }\n }\n },\n \"validationOwners\": [\n \"generateMessageConfigSchema\"\n ],\n \"runtimeOwner\": \"HTTP-backed message generation executor\",\n \"requiresInputs\": [\n \"Enrich Prospect output\",\n \"ICP Score output/context\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"passthrough\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"is_open_profile\",\n \"section\": \"LinkedIn\",\n \"label\": \"Check Open Profile\",\n \"columnType\": \"is_open_profile\",\n \"displayName\": \"Check Open Profile\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Check Open Profile\",\n \"defaultConfig\": {\n \"httpConfig\": {\n \"method\": \"POST\",\n \"endpoint\": \"/api/v1/linkedin/check-open-profile\",\n \"bodyTemplate\": {\n \"linkedinUrl\": \"{{linkedinUrl}}\"\n }\n }\n },\n \"configFixture\": {},\n \"validationOwners\": [\n \"checkOpenProfileColumn schema\"\n ],\n \"runtimeOwner\": \"open profile cell executor\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"check_connection\",\n \"section\": \"LinkedIn\",\n \"label\": \"Check Connection\",\n \"columnType\": \"check_connection\",\n \"displayName\": \"Check Connection\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Check Connection\",\n \"defaultConfig\": {\n \"executorType\": \"check_connection\"\n },\n \"configFixture\": {\n \"executorType\": \"check_connection\"\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.check_connection\"\n ],\n \"runtimeOwner\": \"custom local connection executor\",\n \"requiresInputs\": [\n \"lead_linkedin_id\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"check_paid_inmail_credits\",\n \"section\": \"LinkedIn\",\n \"label\": \"Check Paid InMail Credits\",\n \"columnType\": \"check_paid_inmail_credits\",\n \"displayName\": \"Check Paid InMail Credits\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Check Paid InMail Credits\",\n \"defaultConfig\": {\n \"executorType\": \"check_paid_inmail_credits\",\n \"minPaidInmailCreditsForSend\": 25,\n \"refreshPolicy\": \"cache_only\"\n },\n \"configFixture\": {\n \"executorType\": \"check_paid_inmail_credits\"\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.check_paid_inmail_credits\"\n ],\n \"runtimeOwner\": \"check_paid_inmail_credits local executor\",\n \"requiresInputs\": [\n \"campaign sender\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"omitted runs with backend default; false saves without dispatch; true requests dispatch\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": true,\n \"runCellsOnEdit\": true,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"view_profile\",\n \"section\": \"LinkedIn\",\n \"label\": \"View Profile\",\n \"columnType\": \"view_profile\",\n \"displayName\": \"View Profile\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"View Profile\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"VIEW_PROFILE\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"VIEW_PROFILE\"\n }\n },\n \"validationOwners\": [\n \"view_profile action schema\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_invite\",\n \"section\": \"LinkedIn\",\n \"label\": \"Invite\",\n \"columnType\": \"send_invite\",\n \"displayName\": \"Invite\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Invite\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\",\n \"waitForEvent\": {\n \"event\": \"connection_accept\",\n \"timeoutDays\": 25\n }\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\",\n \"waitForEvent\": {\n \"event\": \"connection_accept\",\n \"timeoutDays\": 25\n },\n \"allow_existing_connections_passthrough\": false\n },\n \"inputMapping\": {\n \"linkedinUrl\": {\n \"value\": \"{{LinkedIn URL}}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_invite\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn profile URL\",\n \"optional connection note\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_dm\",\n \"section\": \"LinkedIn\",\n \"label\": \"DM\",\n \"columnType\": \"send_dm\",\n \"displayName\": \"DM\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"DM\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"DM\",\n \"sendEachParagraphAsMessage\": false,\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 3\n }\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"DM\",\n \"sendEachParagraphAsMessage\": false\n },\n \"inputMapping\": {\n \"message\": {\n \"value\": \"{{Generate Message.body}}\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_dm\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"message body\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_inmail_open\",\n \"section\": \"LinkedIn\",\n \"label\": \"InMail (Open Profile)\",\n \"columnType\": \"send_inmail_open\",\n \"displayName\": \"InMail (Open Profile)\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"InMail (Open Profile)\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_OPEN\",\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 5\n }\n },\n \"fallbackToClosedInmail\": true,\n \"minPaidInmailCreditsForFallback\": 25\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_OPEN\",\n \"messageSource\": {\n \"column\": \"Generate Message\",\n \"subjectPath\": \"subject\",\n \"bodyPath\": \"body\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_inmail_open\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"subject\",\n \"body\",\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"send_inmail_closed\",\n \"section\": \"LinkedIn\",\n \"label\": \"InMail (Closed Profile)\",\n \"columnType\": \"send_inmail_closed\",\n \"displayName\": \"InMail (Closed Profile)\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"InMail (Closed Profile)\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_CLOSED\",\n \"waitForEvent\": {\n \"event\": \"message_received\",\n \"timeoutDays\": 5\n }\n },\n \"fallbackAcrossTiers\": false,\n \"minPaidInmailCreditsForSend\": 25\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INMAIL_CLOSED\",\n \"messageSource\": {\n \"column\": \"Generate Message\",\n \"subjectPath\": \"subject\",\n \"bodyPath\": \"body\"\n }\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.send_inmail_closed\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"subject\",\n \"body\",\n \"LinkedIn profile URL\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"react_and_comment\",\n \"section\": \"LinkedIn\",\n \"label\": \"React & Comment\",\n \"columnType\": \"react_and_comment\",\n \"displayName\": \"React & Comment\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"React & Comment\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"COMMENT\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"COMMENT\"\n }\n },\n \"validationOwners\": [\n \"CONFIG_SCHEMA_BY_TYPE.react_and_comment\"\n ],\n \"runtimeOwner\": \"LinkedIn action sweeper\",\n \"requiresInputs\": [\n \"LinkedIn post URL\",\n \"comment text\"\n ],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"text\",\n \"section\": \"Data\",\n \"label\": \"Text\",\n \"columnType\": \"text\",\n \"displayName\": \"Text\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Text\",\n \"defaultConfig\": {\n \"placeholder\": \"LinkedIn URL or any text\"\n },\n \"configFixture\": {\n \"placeholder\": \"LinkedIn URL or any text\"\n },\n \"validationOwners\": [\n \"textConfigSchema\"\n ],\n \"runtimeOwner\": \"display/manual text owner\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"visible\",\n \"optionId\": \"checkbox\",\n \"section\": \"Data\",\n \"label\": \"Checkbox\",\n \"columnType\": \"checkbox\",\n \"displayName\": \"Checkbox\",\n \"lifecycleClass\": \"selectable\",\n \"createable\": true,\n \"allowedSurfaces\": [\n \"ui-dropdown\",\n \"api-add-column\",\n \"api-bulk-blueprint\",\n \"mcp-add-column\",\n \"mcp-commit-blueprint\"\n ],\n \"defaultName\": \"Checkbox\",\n \"defaultConfig\": {\n \"default\": false\n },\n \"configFixture\": {\n \"default\": false,\n \"editable\": true\n },\n \"validationOwners\": [\n \"checkboxConfigSchema\"\n ],\n \"runtimeOwner\": \"checkbox cell executor\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [\n \"id\",\n \"type\",\n \"name\",\n \"config\",\n \"inputMapping\",\n \"runCondition\"\n ],\n \"editFields\": [\n \"name\",\n \"config\",\n \"runCells\"\n ],\n \"runCellsBehavior\": \"manual or sweeper-owned; false is save-only and true only queues when backend supports it\",\n \"safetyVerdict\": \"create_update_delete_reorder_supported\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"generic_column_config\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": true,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": true,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"create_update_delete_reorder_supported\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.action\",\n \"section\": \"Hidden Active\",\n \"label\": \"LinkedIn Action\",\n \"columnType\": \"action\",\n \"displayName\": \"LinkedIn Action\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"LinkedIn Action\",\n \"defaultConfig\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\"\n }\n },\n \"configFixture\": {\n \"actionConfig\": {\n \"actionType\": \"INVITE\"\n }\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"sequence\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.datetime\",\n \"section\": \"Hidden Active\",\n \"label\": \"Date/Time\",\n \"columnType\": \"datetime\",\n \"displayName\": \"Date/Time\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Date/Time\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.example_checkbox\",\n \"section\": \"Hidden Active\",\n \"label\": \"Example\",\n \"columnType\": \"example_checkbox\",\n \"displayName\": \"Example\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Example\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.json\",\n \"section\": \"Hidden Active\",\n \"label\": \"JSON\",\n \"columnType\": \"json\",\n \"displayName\": \"JSON\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"JSON\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.linkedin_url\",\n \"section\": \"Hidden Active\",\n \"label\": \"LinkedIn URL\",\n \"columnType\": \"linkedin_url\",\n \"displayName\": \"LinkedIn URL\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"LinkedIn URL\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.next_action_at\",\n \"section\": \"Hidden Active\",\n \"label\": \"Next Action\",\n \"columnType\": \"next_action_at\",\n \"displayName\": \"Next Action\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Next Action\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.reply_sentiment\",\n \"section\": \"Hidden Active\",\n \"label\": \"Reply Sentiment\",\n \"columnType\": \"reply_sentiment\",\n \"displayName\": \"Reply Sentiment\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Reply Sentiment\",\n \"defaultConfig\": {\n \"options\": [\n \"interested\",\n \"not_interested\",\n \"out_of_office\",\n \"question\",\n \"neutral\",\n \"negative\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [\n \"interested\",\n \"not_interested\",\n \"out_of_office\",\n \"question\",\n \"neutral\",\n \"negative\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.select\",\n \"section\": \"Hidden Active\",\n \"label\": \"Select\",\n \"columnType\": \"select\",\n \"displayName\": \"Select\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Select\",\n \"defaultConfig\": {\n \"options\": [],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [\n \"name\",\n \"config\"\n ],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"limited_edit_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"generic_column_config\",\n \"genericFallbackAllowed\": true,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.options\",\n \"config.editable\",\n \"config.source\"\n ]\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": true,\n \"rename\": true,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"limited_edit_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [\n \"config.options\",\n \"config.editable\",\n \"config.source\"\n ],\n \"genericFallbackAllowed\": true\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.sent_at\",\n \"section\": \"Hidden Active\",\n \"label\": \"Sent At\",\n \"columnType\": \"sent_at\",\n \"displayName\": \"Sent At\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Sent At\",\n \"defaultConfig\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"hidden_active\",\n \"optionId\": \"hidden.sequence_status\",\n \"section\": \"Hidden Active\",\n \"label\": \"Sequence Status\",\n \"columnType\": \"sequence_status\",\n \"displayName\": \"Sequence Status\",\n \"lifecycleClass\": \"system-owned\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Sequence Status\",\n \"defaultConfig\": {\n \"options\": [\n \"pending\",\n \"queued\",\n \"scheduled\",\n \"sent\",\n \"in_convo\",\n \"replied\",\n \"completed\",\n \"failed\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"configFixture\": {\n \"options\": [\n \"pending\",\n \"queued\",\n \"scheduled\",\n \"sent\",\n \"in_convo\",\n \"replied\",\n \"completed\",\n \"failed\"\n ],\n \"editable\": false,\n \"source\": \"system\"\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [\n \"options\"\n ],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"not MCP-createable; existing-table safety only\",\n \"safetyVerdict\": \"read_delete_existing_table_only\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": true,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"read_delete_existing_table_only\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.enrich_company\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Enrich Company\",\n \"columnType\": \"enrich_company\",\n \"displayName\": \"Enrich Company\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Enrich Company\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"enrichment\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.enrich_person\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Enrich Prospect (legacy)\",\n \"columnType\": \"enrich_person\",\n \"displayName\": \"Enrich Prospect (legacy)\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Enrich Prospect (legacy)\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"enrichment\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.generate_message_sequence\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Generate Message\",\n \"columnType\": \"generate_message_sequence\",\n \"displayName\": \"Generate Message\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Generate Message\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"generation\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_http_request\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_http_request\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.input\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"Text Input\",\n \"columnType\": \"input\",\n \"displayName\": \"Text Input\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"Text Input\",\n \"defaultConfig\": {},\n \"configFixture\": {},\n \"validationOwners\": [],\n \"runtimeOwner\": \"input\",\n \"requiresInputs\": [],\n \"manualOnly\": true,\n \"usesCredits\": false,\n \"autoRuns\": false,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_text\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_text\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.score_icp\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"ICP Score\",\n \"columnType\": \"score_icp\",\n \"displayName\": \"ICP Score\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"ICP Score\",\n \"defaultConfig\": {\n \"qualificationThreshold\": 60\n },\n \"configFixture\": {\n \"qualificationThreshold\": 60\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"scoring\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"fallback\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n },\n {\n \"kind\": \"deprecated_load_only\",\n \"optionId\": \"deprecated.score_icp_rubric\",\n \"section\": \"Deprecated Load Only\",\n \"label\": \"ICP Rubric Score (legacy alias)\",\n \"columnType\": \"score_icp_rubric\",\n \"displayName\": \"ICP Rubric Score (legacy alias)\",\n \"lifecycleClass\": \"load-only-deprecated\",\n \"createable\": false,\n \"allowedSurfaces\": [\n \"load-only\"\n ],\n \"defaultName\": \"ICP Rubric Score (legacy alias)\",\n \"defaultConfig\": {\n \"rubric\": []\n },\n \"configFixture\": {\n \"rubric\": []\n },\n \"validationOwners\": [],\n \"runtimeOwner\": \"scoring\",\n \"requiresInputs\": [],\n \"manualOnly\": false,\n \"usesCredits\": true,\n \"autoRuns\": true,\n \"schemaPolicy\": \"strict\",\n \"createFields\": [],\n \"editFields\": [],\n \"runCellsBehavior\": \"deprecated/load-only alias; use suggested replacement where present\",\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\",\n \"configEditor\": {\n \"kind\": \"generic\",\n \"createKey\": \"none\",\n \"editKey\": \"none\",\n \"genericFallbackAllowed\": false,\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": []\n },\n \"mutationCapabilities\": {\n \"create\": false,\n \"editConfig\": false,\n \"rename\": false,\n \"delete\": false,\n \"reorder\": false,\n \"runCellsOnCreate\": false,\n \"runCellsOnEdit\": false,\n \"safetyVerdict\": \"load_only_use_score_icp_mcp\"\n },\n \"configWriteMode\": \"full_replace\",\n \"editableConfigFields\": [],\n \"genericFallbackAllowed\": false\n }\n ]\n}";
|
|
2
2
|
export const columnSchemaManifest = JSON.parse(manifestJson);
|
|
3
3
|
export const createableColumnTypes = columnSchemaManifest.createableTypes;
|
|
4
4
|
export function getCreateableColumnTypeSet() {
|
package/dist/index-dev.js
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
File without changes
|
package/dist/server.js
CHANGED
|
@@ -25,6 +25,7 @@ import { getEngageStateTool, setEngageStateTool, } from "./tools/engage-state.js
|
|
|
25
25
|
import { bulkEnrichWithProspeo, enrichWithProspeo, getProspeoCredits, } from "./tools/enrichment.js";
|
|
26
26
|
import { getCampaignFramework } from "./tools/framework.js";
|
|
27
27
|
import { confirmHarvestJobCompanies, searchHarvestJobs, } from "./tools/harvest-jobs.js";
|
|
28
|
+
import { checkInboxReplyEligibility, getInboxThread, searchInboxThreads, sendInboxDraft, sendInboxManualReply, updateInboxDraft, } from "./tools/inbox.js";
|
|
28
29
|
import { cancelLeadImport, confirmLeadList, confirmProspeoCompanyAccounts, getProviderPrompt, importLeads, listDncEntriesTool, loadCsvDncEntriesTool, loadCsvDomains, loadCsvLinkedinLeads, lookupSalesNavFilter, saveDomainFilters, searchApollo, searchProspeo, searchProspeoCompanies, searchSalesNav, searchSignals, selectPromisingPosts, setHeadlineICPCriteria, } from "./tools/leads.js";
|
|
29
30
|
import { fetchCompany, fetchCompanyPosts, fetchLinkedInPosts, fetchLinkedInProfile, fetchPostEngagers, getLinkedInProfile, getUserPosts, } from "./tools/linkedin.js";
|
|
30
31
|
import { getCampaignNavigationState } from "./tools/navigation.js";
|
|
@@ -80,6 +81,11 @@ function formatSubskillPromptText(result) {
|
|
|
80
81
|
: "";
|
|
81
82
|
return `${header}${result.prompt}${footer}`;
|
|
82
83
|
}
|
|
84
|
+
function isStructuredToolResult(result) {
|
|
85
|
+
return (!!result &&
|
|
86
|
+
typeof result === "object" &&
|
|
87
|
+
Array.isArray(result.content));
|
|
88
|
+
}
|
|
83
89
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
84
90
|
tools: allTools,
|
|
85
91
|
}));
|
|
@@ -330,6 +336,24 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
330
336
|
case "export_table_csv":
|
|
331
337
|
result = await exportTableCsv(args);
|
|
332
338
|
break;
|
|
339
|
+
case "search_inbox_threads":
|
|
340
|
+
result = await searchInboxThreads(args);
|
|
341
|
+
break;
|
|
342
|
+
case "get_inbox_thread":
|
|
343
|
+
result = await getInboxThread(args);
|
|
344
|
+
break;
|
|
345
|
+
case "check_inbox_reply_eligibility":
|
|
346
|
+
result = await checkInboxReplyEligibility(args);
|
|
347
|
+
break;
|
|
348
|
+
case "update_inbox_draft":
|
|
349
|
+
result = await updateInboxDraft(args);
|
|
350
|
+
break;
|
|
351
|
+
case "send_inbox_draft":
|
|
352
|
+
result = await sendInboxDraft(args);
|
|
353
|
+
break;
|
|
354
|
+
case "send_inbox_manual_reply":
|
|
355
|
+
result = await sendInboxManualReply(args);
|
|
356
|
+
break;
|
|
333
357
|
case "commit_blueprint":
|
|
334
358
|
result = await handleCommitBlueprint(args);
|
|
335
359
|
break;
|
|
@@ -591,6 +615,9 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
591
615
|
throw new Error(`Unknown tool: ${name}`);
|
|
592
616
|
}
|
|
593
617
|
const safeResult = sanitizeWatchUrlsForMcpResult(result);
|
|
618
|
+
if (isStructuredToolResult(safeResult)) {
|
|
619
|
+
return safeResult;
|
|
620
|
+
}
|
|
594
621
|
return {
|
|
595
622
|
content: [
|
|
596
623
|
{
|
package/dist/tools/inbox.js
CHANGED
|
@@ -24,7 +24,10 @@ export const inboxToolDefinitions = [
|
|
|
24
24
|
limit: { type: "number", minimum: 1, maximum: 50 },
|
|
25
25
|
cursor: { type: "string" },
|
|
26
26
|
filter: { type: "string", enum: ["all", "drafts"] },
|
|
27
|
-
status: {
|
|
27
|
+
status: {
|
|
28
|
+
type: "string",
|
|
29
|
+
enum: ["all", "unread", "replied", "awaiting"],
|
|
30
|
+
},
|
|
28
31
|
senderId: { type: "string" },
|
|
29
32
|
classification: { type: "string" },
|
|
30
33
|
search: { type: "string" },
|
|
@@ -182,6 +185,17 @@ function requireString(value, field) {
|
|
|
182
185
|
}
|
|
183
186
|
return value.trim();
|
|
184
187
|
}
|
|
188
|
+
function requireStrings(input, fields) {
|
|
189
|
+
const values = {};
|
|
190
|
+
for (const field of fields) {
|
|
191
|
+
const value = requireString(input[field], field);
|
|
192
|
+
if (typeof value !== "string") {
|
|
193
|
+
return { ok: false, result: value };
|
|
194
|
+
}
|
|
195
|
+
values[field] = value;
|
|
196
|
+
}
|
|
197
|
+
return { ok: true, values };
|
|
198
|
+
}
|
|
185
199
|
function normalizeTimestamp(value) {
|
|
186
200
|
if (value == null)
|
|
187
201
|
return null;
|
|
@@ -221,8 +235,7 @@ function snapshotsMatch(current, approved) {
|
|
|
221
235
|
const snapshot = approved;
|
|
222
236
|
return (current.latestMessageTimestamp ===
|
|
223
237
|
(snapshot.latestMessageTimestamp ?? null) &&
|
|
224
|
-
current.lastInboundMessageAt === (snapshot.lastInboundMessageAt ?? null)
|
|
225
|
-
current.updatedAt === (snapshot.updatedAt ?? null));
|
|
238
|
+
current.lastInboundMessageAt === (snapshot.lastInboundMessageAt ?? null));
|
|
226
239
|
}
|
|
227
240
|
function chronologicalTranscript(thread) {
|
|
228
241
|
const messages = Array.isArray(thread?.messages) ? thread.messages : [];
|
|
@@ -282,9 +295,10 @@ export async function searchInboxThreads(input) {
|
|
|
282
295
|
}, `${threads.length} inbox thread${threads.length === 1 ? "" : "s"} returned.`);
|
|
283
296
|
}
|
|
284
297
|
export async function getInboxThread(input) {
|
|
285
|
-
const
|
|
286
|
-
if (
|
|
287
|
-
return
|
|
298
|
+
const required = requireStrings(input, ["threadId"]);
|
|
299
|
+
if (!required.ok)
|
|
300
|
+
return required.result;
|
|
301
|
+
const { threadId } = required.values;
|
|
288
302
|
const routeCalled = `/api/v3/inbox/${encodeURIComponent(threadId)}`;
|
|
289
303
|
const response = await getApi().get(routeCalled);
|
|
290
304
|
const thread = getThread(response);
|
|
@@ -298,9 +312,10 @@ export async function getInboxThread(input) {
|
|
|
298
312
|
: `Loaded inbox thread ${threadId}.`);
|
|
299
313
|
}
|
|
300
314
|
export async function checkInboxReplyEligibility(input) {
|
|
301
|
-
const
|
|
302
|
-
if (
|
|
303
|
-
return
|
|
315
|
+
const required = requireStrings(input, ["threadId"]);
|
|
316
|
+
if (!required.ok)
|
|
317
|
+
return required.result;
|
|
318
|
+
const { threadId } = required.values;
|
|
304
319
|
const routeCalled = `/api/v3/inbox/${encodeURIComponent(threadId)}?includeReplyEligibility=true`;
|
|
305
320
|
const response = await getApi().get(routeCalled);
|
|
306
321
|
const thread = getThread(response);
|
|
@@ -326,15 +341,10 @@ export async function checkInboxReplyEligibility(input) {
|
|
|
326
341
|
}, `Eligibility loaded for inbox thread ${threadId}.`);
|
|
327
342
|
}
|
|
328
343
|
export async function updateInboxDraft(input) {
|
|
329
|
-
const
|
|
330
|
-
if (
|
|
331
|
-
return
|
|
332
|
-
const versionId =
|
|
333
|
-
if (typeof versionId !== "string")
|
|
334
|
-
return versionId;
|
|
335
|
-
const body = requireString(input.body, "body");
|
|
336
|
-
if (typeof body !== "string")
|
|
337
|
-
return body;
|
|
344
|
+
const required = requireStrings(input, ["threadId", "versionId", "body"]);
|
|
345
|
+
if (!required.ok)
|
|
346
|
+
return required.result;
|
|
347
|
+
const { threadId, versionId, body } = required.values;
|
|
338
348
|
const bodyHash = hashText(body);
|
|
339
349
|
const routeCalled = `/api/v3/inbox/${encodeURIComponent(threadId)}/draft`;
|
|
340
350
|
try {
|
|
@@ -348,22 +358,51 @@ export async function updateInboxDraft(input) {
|
|
|
348
358
|
bodyHash,
|
|
349
359
|
},
|
|
350
360
|
});
|
|
351
|
-
const detail = await getApi().get(`/api/v3/inbox/${encodeURIComponent(threadId)}
|
|
361
|
+
const detail = await getApi().get(`/api/v3/inbox/${encodeURIComponent(threadId)}`);
|
|
352
362
|
const thread = getThread(detail);
|
|
353
363
|
const draft = getDraft(thread);
|
|
354
364
|
const currentVersionId = getDraftVersionId(draft);
|
|
355
|
-
const persistedBody = typeof draft?.body === "string"
|
|
356
|
-
? draft.body
|
|
357
|
-
: typeof patchResponse.body === "string"
|
|
358
|
-
? patchResponse.body
|
|
359
|
-
: null;
|
|
360
365
|
const returnedVersionId = typeof patchResponse.versionId === "string"
|
|
361
366
|
? patchResponse.versionId
|
|
362
367
|
: currentVersionId;
|
|
363
|
-
|
|
368
|
+
const returnedBody = typeof patchResponse.body === "string" ? patchResponse.body : null;
|
|
369
|
+
const currentBody = typeof draft?.body === "string" ? draft.body : null;
|
|
370
|
+
if (!returnedVersionId || !returnedBody) {
|
|
364
371
|
return errorResult("persisted_draft_snapshot_missing", "Could not verify the persisted edited draft after PATCH.", { routeCalled, threadId, versionId: returnedVersionId ?? null });
|
|
365
372
|
}
|
|
366
|
-
if (
|
|
373
|
+
if (!draft || returnedVersionId !== currentVersionId) {
|
|
374
|
+
return textResult({
|
|
375
|
+
routeCalled,
|
|
376
|
+
approvalRequired: false,
|
|
377
|
+
status: "applied_but_superseded",
|
|
378
|
+
threadId,
|
|
379
|
+
versionId: returnedVersionId,
|
|
380
|
+
appliedDraftSnapshot: {
|
|
381
|
+
threadId,
|
|
382
|
+
versionId: returnedVersionId,
|
|
383
|
+
versionNumber: patchResponse.versionNumber ?? null,
|
|
384
|
+
body: returnedBody,
|
|
385
|
+
bodyHash: hashText(returnedBody),
|
|
386
|
+
bodyLength: returnedBody.length,
|
|
387
|
+
routeCalled,
|
|
388
|
+
snapshotAt: new Date().toISOString(),
|
|
389
|
+
},
|
|
390
|
+
currentDraftSnapshot: draft && currentVersionId && currentBody
|
|
391
|
+
? {
|
|
392
|
+
threadId,
|
|
393
|
+
versionId: currentVersionId,
|
|
394
|
+
versionNumber: draft.versionNumber ?? null,
|
|
395
|
+
body: currentBody,
|
|
396
|
+
bodyHash: hashText(currentBody),
|
|
397
|
+
bodyLength: currentBody.length,
|
|
398
|
+
}
|
|
399
|
+
: null,
|
|
400
|
+
threadSnapshot: buildThreadSnapshot(thread),
|
|
401
|
+
}, `Edited inbox draft ${returnedVersionId}, but a newer draft is now current. Re-load before approving send.`);
|
|
402
|
+
}
|
|
403
|
+
if (!currentBody ||
|
|
404
|
+
currentBody !== body ||
|
|
405
|
+
hashText(currentBody) !== bodyHash) {
|
|
367
406
|
return errorResult("persisted_draft_body_mismatch", "Persisted edited draft did not match the requested body.", { routeCalled, threadId, versionId: currentVersionId });
|
|
368
407
|
}
|
|
369
408
|
return textResult({
|
|
@@ -376,9 +415,9 @@ export async function updateInboxDraft(input) {
|
|
|
376
415
|
threadId,
|
|
377
416
|
versionId: currentVersionId,
|
|
378
417
|
versionNumber: draft.versionNumber ?? patchResponse.versionNumber ?? null,
|
|
379
|
-
body:
|
|
418
|
+
body: currentBody,
|
|
380
419
|
bodyHash,
|
|
381
|
-
bodyLength:
|
|
420
|
+
bodyLength: currentBody.length,
|
|
382
421
|
routeCalled,
|
|
383
422
|
snapshotAt: new Date().toISOString(),
|
|
384
423
|
},
|
|
@@ -396,21 +435,16 @@ function validateApproval(value) {
|
|
|
396
435
|
return value === "approved";
|
|
397
436
|
}
|
|
398
437
|
export async function sendInboxDraft(input) {
|
|
399
|
-
const
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
if (
|
|
407
|
-
return
|
|
408
|
-
const approvedBodyHash =
|
|
409
|
-
if (typeof approvedBodyHash !== "string")
|
|
410
|
-
return approvedBodyHash;
|
|
411
|
-
const idempotencyKey = requireString(input.idempotencyKey, "idempotencyKey");
|
|
412
|
-
if (typeof idempotencyKey !== "string")
|
|
413
|
-
return idempotencyKey;
|
|
438
|
+
const required = requireStrings(input, [
|
|
439
|
+
"threadId",
|
|
440
|
+
"versionId",
|
|
441
|
+
"approvedBody",
|
|
442
|
+
"approvedBodyHash",
|
|
443
|
+
"idempotencyKey",
|
|
444
|
+
]);
|
|
445
|
+
if (!required.ok)
|
|
446
|
+
return required.result;
|
|
447
|
+
const { threadId, versionId, approvedBody, approvedBodyHash, idempotencyKey, } = required.values;
|
|
414
448
|
if (!validateApproval(input.approval)) {
|
|
415
449
|
return errorResult("approval_required", "approval must be approved.");
|
|
416
450
|
}
|
|
@@ -431,7 +465,8 @@ export async function sendInboxDraft(input) {
|
|
|
431
465
|
if (currentVersionId !== versionId) {
|
|
432
466
|
return errorResult("stale_draft_snapshot", "Current draft version does not match the approved version.", { threadId, versionId, currentVersionId });
|
|
433
467
|
}
|
|
434
|
-
if (typeof draft?.body !== "string" ||
|
|
468
|
+
if (typeof draft?.body !== "string" ||
|
|
469
|
+
hashText(draft.body) !== approvedBodyHash) {
|
|
435
470
|
return errorResult("approved_body_mismatch", "Current draft body does not match the approved body hash.", { threadId, versionId });
|
|
436
471
|
}
|
|
437
472
|
if (thread.replyEligibility.canSendDraft !== true) {
|
|
@@ -481,18 +516,15 @@ export async function sendInboxManualReply(input) {
|
|
|
481
516
|
])) {
|
|
482
517
|
return errorResult("batch_manual_reply_not_supported", "send_inbox_manual_reply supports one exact approved message for one thread.");
|
|
483
518
|
}
|
|
484
|
-
const
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
const idempotencyKey = requireString(input.idempotencyKey, "idempotencyKey");
|
|
494
|
-
if (typeof idempotencyKey !== "string")
|
|
495
|
-
return idempotencyKey;
|
|
519
|
+
const required = requireStrings(input, [
|
|
520
|
+
"threadId",
|
|
521
|
+
"message",
|
|
522
|
+
"approvedMessageHash",
|
|
523
|
+
"idempotencyKey",
|
|
524
|
+
]);
|
|
525
|
+
if (!required.ok)
|
|
526
|
+
return required.result;
|
|
527
|
+
const { threadId, message, approvedMessageHash, idempotencyKey } = required.values;
|
|
496
528
|
if (!validateApproval(input.approval)) {
|
|
497
529
|
return errorResult("approval_required", "approval must be approved.");
|
|
498
530
|
}
|
package/dist/tools/registry.d.ts
CHANGED
|
@@ -2426,6 +2426,234 @@ export declare const allTools: ({
|
|
|
2426
2426
|
required: string[];
|
|
2427
2427
|
additionalProperties: boolean;
|
|
2428
2428
|
};
|
|
2429
|
+
} | {
|
|
2430
|
+
name: string;
|
|
2431
|
+
description: string;
|
|
2432
|
+
inputSchema: {
|
|
2433
|
+
type: string;
|
|
2434
|
+
properties: {
|
|
2435
|
+
threadId: {
|
|
2436
|
+
type: string;
|
|
2437
|
+
};
|
|
2438
|
+
limit?: undefined;
|
|
2439
|
+
cursor?: undefined;
|
|
2440
|
+
filter?: undefined;
|
|
2441
|
+
status?: undefined;
|
|
2442
|
+
senderId?: undefined;
|
|
2443
|
+
classification?: undefined;
|
|
2444
|
+
search?: undefined;
|
|
2445
|
+
includeEnrichment?: undefined;
|
|
2446
|
+
includeReplyEligibility?: undefined;
|
|
2447
|
+
versionId?: undefined;
|
|
2448
|
+
body?: undefined;
|
|
2449
|
+
approvedBody?: undefined;
|
|
2450
|
+
approvedBodyHash?: undefined;
|
|
2451
|
+
approvedThreadSnapshot?: undefined;
|
|
2452
|
+
idempotencyKey?: undefined;
|
|
2453
|
+
approval?: undefined;
|
|
2454
|
+
message?: undefined;
|
|
2455
|
+
approvedMessageHash?: undefined;
|
|
2456
|
+
};
|
|
2457
|
+
required: string[];
|
|
2458
|
+
additionalProperties: boolean;
|
|
2459
|
+
};
|
|
2460
|
+
outputSchema: {
|
|
2461
|
+
type: string;
|
|
2462
|
+
additionalProperties: boolean;
|
|
2463
|
+
};
|
|
2464
|
+
annotations: {
|
|
2465
|
+
readOnlyHint: boolean;
|
|
2466
|
+
destructiveHint: boolean;
|
|
2467
|
+
openWorldHint: boolean;
|
|
2468
|
+
idempotentHint?: undefined;
|
|
2469
|
+
};
|
|
2470
|
+
} | {
|
|
2471
|
+
name: string;
|
|
2472
|
+
description: string;
|
|
2473
|
+
inputSchema: {
|
|
2474
|
+
type: string;
|
|
2475
|
+
properties: {
|
|
2476
|
+
threadId: {
|
|
2477
|
+
type: string;
|
|
2478
|
+
};
|
|
2479
|
+
versionId: {
|
|
2480
|
+
type: string;
|
|
2481
|
+
};
|
|
2482
|
+
body: {
|
|
2483
|
+
type: string;
|
|
2484
|
+
};
|
|
2485
|
+
limit?: undefined;
|
|
2486
|
+
cursor?: undefined;
|
|
2487
|
+
filter?: undefined;
|
|
2488
|
+
status?: undefined;
|
|
2489
|
+
senderId?: undefined;
|
|
2490
|
+
classification?: undefined;
|
|
2491
|
+
search?: undefined;
|
|
2492
|
+
includeEnrichment?: undefined;
|
|
2493
|
+
includeReplyEligibility?: undefined;
|
|
2494
|
+
approvedBody?: undefined;
|
|
2495
|
+
approvedBodyHash?: undefined;
|
|
2496
|
+
approvedThreadSnapshot?: undefined;
|
|
2497
|
+
idempotencyKey?: undefined;
|
|
2498
|
+
approval?: undefined;
|
|
2499
|
+
message?: undefined;
|
|
2500
|
+
approvedMessageHash?: undefined;
|
|
2501
|
+
};
|
|
2502
|
+
required: string[];
|
|
2503
|
+
additionalProperties: boolean;
|
|
2504
|
+
};
|
|
2505
|
+
outputSchema: {
|
|
2506
|
+
type: string;
|
|
2507
|
+
additionalProperties: boolean;
|
|
2508
|
+
};
|
|
2509
|
+
annotations: {
|
|
2510
|
+
readOnlyHint: boolean;
|
|
2511
|
+
destructiveHint: boolean;
|
|
2512
|
+
openWorldHint: boolean;
|
|
2513
|
+
idempotentHint: boolean;
|
|
2514
|
+
};
|
|
2515
|
+
} | {
|
|
2516
|
+
name: string;
|
|
2517
|
+
description: string;
|
|
2518
|
+
inputSchema: {
|
|
2519
|
+
type: string;
|
|
2520
|
+
properties: {
|
|
2521
|
+
threadId: {
|
|
2522
|
+
type: string;
|
|
2523
|
+
};
|
|
2524
|
+
versionId: {
|
|
2525
|
+
type: string;
|
|
2526
|
+
};
|
|
2527
|
+
approvedBody: {
|
|
2528
|
+
type: string;
|
|
2529
|
+
};
|
|
2530
|
+
approvedBodyHash: {
|
|
2531
|
+
type: string;
|
|
2532
|
+
};
|
|
2533
|
+
approvedThreadSnapshot: {
|
|
2534
|
+
type: string;
|
|
2535
|
+
properties: {
|
|
2536
|
+
latestMessageTimestamp: {
|
|
2537
|
+
type: string[];
|
|
2538
|
+
};
|
|
2539
|
+
lastInboundMessageAt: {
|
|
2540
|
+
type: string[];
|
|
2541
|
+
};
|
|
2542
|
+
updatedAt: {
|
|
2543
|
+
type: string[];
|
|
2544
|
+
};
|
|
2545
|
+
reasonCodes: {
|
|
2546
|
+
type: string;
|
|
2547
|
+
items: {
|
|
2548
|
+
type: string;
|
|
2549
|
+
};
|
|
2550
|
+
};
|
|
2551
|
+
};
|
|
2552
|
+
additionalProperties: boolean;
|
|
2553
|
+
};
|
|
2554
|
+
idempotencyKey: {
|
|
2555
|
+
type: string;
|
|
2556
|
+
};
|
|
2557
|
+
approval: {
|
|
2558
|
+
type: string;
|
|
2559
|
+
enum: string[];
|
|
2560
|
+
};
|
|
2561
|
+
limit?: undefined;
|
|
2562
|
+
cursor?: undefined;
|
|
2563
|
+
filter?: undefined;
|
|
2564
|
+
status?: undefined;
|
|
2565
|
+
senderId?: undefined;
|
|
2566
|
+
classification?: undefined;
|
|
2567
|
+
search?: undefined;
|
|
2568
|
+
includeEnrichment?: undefined;
|
|
2569
|
+
includeReplyEligibility?: undefined;
|
|
2570
|
+
body?: undefined;
|
|
2571
|
+
message?: undefined;
|
|
2572
|
+
approvedMessageHash?: undefined;
|
|
2573
|
+
};
|
|
2574
|
+
required: string[];
|
|
2575
|
+
additionalProperties: boolean;
|
|
2576
|
+
};
|
|
2577
|
+
outputSchema: {
|
|
2578
|
+
type: string;
|
|
2579
|
+
additionalProperties: boolean;
|
|
2580
|
+
};
|
|
2581
|
+
annotations: {
|
|
2582
|
+
readOnlyHint: boolean;
|
|
2583
|
+
destructiveHint: boolean;
|
|
2584
|
+
openWorldHint: boolean;
|
|
2585
|
+
idempotentHint: boolean;
|
|
2586
|
+
};
|
|
2587
|
+
} | {
|
|
2588
|
+
name: string;
|
|
2589
|
+
description: string;
|
|
2590
|
+
inputSchema: {
|
|
2591
|
+
type: string;
|
|
2592
|
+
properties: {
|
|
2593
|
+
threadId: {
|
|
2594
|
+
type: string;
|
|
2595
|
+
};
|
|
2596
|
+
message: {
|
|
2597
|
+
type: string;
|
|
2598
|
+
};
|
|
2599
|
+
approvedMessageHash: {
|
|
2600
|
+
type: string;
|
|
2601
|
+
};
|
|
2602
|
+
approvedThreadSnapshot: {
|
|
2603
|
+
type: string;
|
|
2604
|
+
properties: {
|
|
2605
|
+
latestMessageTimestamp: {
|
|
2606
|
+
type: string[];
|
|
2607
|
+
};
|
|
2608
|
+
lastInboundMessageAt: {
|
|
2609
|
+
type: string[];
|
|
2610
|
+
};
|
|
2611
|
+
updatedAt: {
|
|
2612
|
+
type: string[];
|
|
2613
|
+
};
|
|
2614
|
+
reasonCodes: {
|
|
2615
|
+
type: string;
|
|
2616
|
+
items: {
|
|
2617
|
+
type: string;
|
|
2618
|
+
};
|
|
2619
|
+
};
|
|
2620
|
+
};
|
|
2621
|
+
additionalProperties: boolean;
|
|
2622
|
+
};
|
|
2623
|
+
idempotencyKey: {
|
|
2624
|
+
type: string;
|
|
2625
|
+
};
|
|
2626
|
+
approval: {
|
|
2627
|
+
type: string;
|
|
2628
|
+
enum: string[];
|
|
2629
|
+
};
|
|
2630
|
+
limit?: undefined;
|
|
2631
|
+
cursor?: undefined;
|
|
2632
|
+
filter?: undefined;
|
|
2633
|
+
status?: undefined;
|
|
2634
|
+
senderId?: undefined;
|
|
2635
|
+
classification?: undefined;
|
|
2636
|
+
search?: undefined;
|
|
2637
|
+
includeEnrichment?: undefined;
|
|
2638
|
+
includeReplyEligibility?: undefined;
|
|
2639
|
+
versionId?: undefined;
|
|
2640
|
+
body?: undefined;
|
|
2641
|
+
approvedBody?: undefined;
|
|
2642
|
+
approvedBodyHash?: undefined;
|
|
2643
|
+
};
|
|
2644
|
+
required: string[];
|
|
2645
|
+
additionalProperties: boolean;
|
|
2646
|
+
};
|
|
2647
|
+
outputSchema: {
|
|
2648
|
+
type: string;
|
|
2649
|
+
additionalProperties: boolean;
|
|
2650
|
+
};
|
|
2651
|
+
annotations: {
|
|
2652
|
+
readOnlyHint: boolean;
|
|
2653
|
+
destructiveHint: boolean;
|
|
2654
|
+
openWorldHint: boolean;
|
|
2655
|
+
idempotentHint: boolean;
|
|
2656
|
+
};
|
|
2429
2657
|
} | {
|
|
2430
2658
|
name: string;
|
|
2431
2659
|
description: string;
|
package/dist/tools/registry.js
CHANGED
|
@@ -21,6 +21,7 @@ import { engageStateToolDefinitions } from "./engage-state.js";
|
|
|
21
21
|
import { enrichmentToolDefinitions } from "./enrichment.js";
|
|
22
22
|
import { frameworkToolDefinitions } from "./framework.js";
|
|
23
23
|
import { harvestJobToolDefinitions } from "./harvest-jobs.js";
|
|
24
|
+
import { inboxToolDefinitions } from "./inbox.js";
|
|
24
25
|
import { leadToolDefinitions } from "./leads.js";
|
|
25
26
|
import { linkedinToolDefinitions } from "./linkedin.js";
|
|
26
27
|
import { navigationToolDefinitions } from "./navigation.js";
|
|
@@ -53,6 +54,7 @@ export const allTools = [
|
|
|
53
54
|
...navigationToolDefinitions,
|
|
54
55
|
...leadToolDefinitions,
|
|
55
56
|
...harvestJobToolDefinitions,
|
|
57
|
+
...inboxToolDefinitions,
|
|
56
58
|
...enrichmentToolDefinitions,
|
|
57
59
|
...processingToolDefinitions,
|
|
58
60
|
...rubricToolDefinitions,
|
package/package.json
CHANGED
|
@@ -195,6 +195,21 @@ read/edit/delete safety, but they are not valid `add_column` or
|
|
|
195
195
|
direct `send_dm` is acceptable because `send_dm` also performs the runtime
|
|
196
196
|
connection lookup.
|
|
197
197
|
|
|
198
|
+
### Check Paid InMail Credits
|
|
199
|
+
|
|
200
|
+
- type: `check_paid_inmail_credits`
|
|
201
|
+
- displayName: `Check Paid InMail Credits`
|
|
202
|
+
- category: LinkedIn Actions
|
|
203
|
+
- inputs: sender-scoped Sales Navigator credit state and optional paid-credit floor.
|
|
204
|
+
- outputs: `has_paid_inmail_credits`, remaining-credit proof, stale-state flags,
|
|
205
|
+
and fallback reason metadata.
|
|
206
|
+
- when to use: Use after Check Open Profile says a prospect is closed-profile
|
|
207
|
+
and the sequence is explicitly allowed to spend paid InMail credits. Branch
|
|
208
|
+
yes to `send_inmail_closed`; branch no to `check_connection` or invite flow.
|
|
209
|
+
- when NOT to use: Do not use for free open-profile InMail, do not spend credits
|
|
210
|
+
from this check itself, and do not add it unless the campaign policy opts into
|
|
211
|
+
the paid-InMail fallback mode.
|
|
212
|
+
|
|
198
213
|
### LinkedIn Action
|
|
199
214
|
|
|
200
215
|
- type: `action`
|
|
@@ -80,6 +80,14 @@ It bootstraps auth and host capabilities, then loads the internal
|
|
|
80
80
|
the internal campaign workflow prompt and `core/flow.v2.json` through MCP. Keep
|
|
81
81
|
this wrapper thin; the packaged workflow is the operational source of truth.
|
|
82
82
|
|
|
83
|
+
## Inbox Reply Tool Boundary
|
|
84
|
+
|
|
85
|
+
Inbox reply tools are outside campaign creation. If a user asks to search,
|
|
86
|
+
review, edit, or send inbox replies, treat that as a separate inbox workflow
|
|
87
|
+
using the existing product /api/v3/inbox routes. Any draft edit or send requires
|
|
88
|
+
exact approval for the workspace, sender, thread, body, tool, and expected side
|
|
89
|
+
effect before the write tool is called.
|
|
90
|
+
|
|
83
91
|
CampaignOffer state and the watch link are the customer-facing source of truth.
|
|
84
92
|
Disk artifacts are optional debug/UAT diagnostics; normal customer runs should
|
|
85
93
|
not create, link, or surface local draft files unless the user explicitly asks
|
|
@@ -40,6 +40,13 @@ active flow. Legacy packet/mint artifacts stay in
|
|
|
40
40
|
7. Choose filters, save/approve criteria, then review the message template.
|
|
41
41
|
8. Sync the approved template, queue bounded filtering, review one generated pass, then Settings and launch.
|
|
42
42
|
|
|
43
|
+
## Inbox Reply Tool Boundary
|
|
44
|
+
|
|
45
|
+
Inbox reply tools are outside campaign creation. Stop the campaign lane for
|
|
46
|
+
reply search/review/edit/send asks and use existing product /api/v3/inbox routes.
|
|
47
|
+
Before any draft edit/send tool call, require exact approval for workspace,
|
|
48
|
+
sender, thread, body, tool, and expected side effect.
|
|
49
|
+
|
|
43
50
|
## Identity-First Campaign Setup
|
|
44
51
|
|
|
45
52
|
Do not treat the active workspace as the campaign subject. Resolve the
|