hooks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited hooks (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server for Agentforce Grid (formerly AI Workbench). Enables Claude Code and other MCP clients to create, modify, and monitor Grid workbooks, worksheets, and columns through the Grid Connect API.
workbook, worksheet, column, cell each handle all operations via an action parametersetup_agent_test, poll_worksheet_status, get_worksheet_summaryThis server uses Salesforce CLI (sf) `api request` commands for all API calls. Authentication is handled entirely by the SF CLI:
sf org loginInstall Salesforce CLI:
brew install sfsf org login web --alias my-org --instance-url https://your-instance.salesforce.com/Or set as default org:
sf org login web --set-default --instance-url https://your-instance.salesforce.com/Test that you can access the Grid Connect API:
sf api request rest "/services/data/v66.0/public/grid/workbooks" \
--method GET \
--target-org my-orgOr if you set a default org:
sf api request rest "/services/data/v66.0/public/grid/workbooks" \
--method GETnpm install
npm run build
# Optional: Set environment variables if needed
# export ORG_ALIAS="orgfarm-org" # If not set, uses SF CLI default org
# export INSTANCE_URL="https://your-instance.salesforce.com" # Only for Lightning URL generation
npm startMinimal configuration (uses SF CLI default org):
{
"mcpServers": {
"grid-connect": {
"command": "node",
"args": ["/path/to/agentforce-grid-mcp/dist/index.js"]
}
}
}With specific org:
{
"mcpServers": {
"grid-connect": {
"command": "node",
"args": ["/path/to/agentforce-grid-mcp/dist/index.js"],
"env": {
"ORG_ALIAS": "orgfarm-org"
}
}
}
}All environment variables are optional:
| Variable | Default | Description |
|---|---|---|
ORG_ALIAS | SF CLI default org | Target org alias (if not set, SF CLI uses your default org) |
INSTANCE_URL | undefined | Salesforce instance URL (required only for Lightning Experience URL generation via get_url tool) |
API_VERSION | v66.0 | Salesforce API version |
GRID_TIMEOUT | 60000 | Request timeout in milliseconds |
GRID_DEBUG | false | Enable debug logging to stderr |
src/
index.ts # MCP server entry point
client.ts # SF CLI API wrapper with retry logic
schemas.ts # Zod schemas for all 12 column types
types.ts # Shared types
tools/
workbook.ts # 1 tool: workbook (6 actions: list, create, create_with_worksheet, get, get_worksheets, delete)
worksheet.ts # 1 tool: worksheet (11 actions: create, get, get_data, update, delete, add_rows, etc.)
column.ts # 1 tool: column (15+ actions: CRUD + typed mutations like edit_ai_prompt, change_model)
cell.ts # 1 tool: cell (5 actions: update, paste, trigger_execution, validate_formula, generate_ia_input)
discover.ts # 1 tool: discover (25 actions: all metadata, data, agent discovery)
workflows.ts # 3 tools: setup_agent_test, poll_worksheet_status, get_worksheet_summary
apply-grid.ts # 1 tool: apply_grid (YAML DSL → entire grid in one call)
urls.ts # 1 tool: get_url (Lightning Experience URLs)
lib/
yaml-parser.ts # Parse YAML DSL → GridSpec AST
validator.ts # 6-pass semantic validation (refs, cycles, types)
config-expander.ts # Flat YAML → triple-nested GCC JSON (Zod-validated)
resolution-engine.ts # Full pipeline: parse → validate → sort → create
model-map.ts # Model shorthand ↔ sfdc_ai__ ID mapping (20 shorthands)
config-helpers.ts # Shared: fetch config, resolve refs, deep merge
column-config-cache.ts # Session-lifetime config cache for typed mutations
worksheet-data-helpers.ts # Helpers for columnData response format
resource-cache.ts # TTL-based cache for MCP resourcesapply_grid — Declarative Grid CreationThe flagship tool. Pass a YAML spec and get a complete grid:
workbook: Sales Agent Tests
worksheet: Q1 Regression
columns:
- name: Utterances
type: text
- name: Agent Output
type: agent_test
agent: "Sales Coach"
inputUtterance: "Utterances"
- name: Coherence
type: eval/coherence
input: "Agent Output"
- name: Topic Check
type: eval/topic_assertion
input: "Agent Output"
reference: "Expected Topics"
data:
Utterances:
- "How do I reset my password?"
- "What is my account balance?"The tool handles:
dryRun mode for validation without API callsModify existing grids without constructing raw JSON:
| Tool | Purpose |
|---|---|
edit_ai_prompt | Change instruction, model, response format on AI columns |
edit_agent_config | Update agent, utterance, context variables |
add_evaluation | Add evaluation column with auto-wired references |
change_model | Switch LLM model (supports shorthands like gpt-4-omni, claude-4.5-sonnet) |
update_filters | Change Object/DataModelObject query filters |
reprocess | Reprocess column or worksheet (all/failed/stale) |
edit_prompt_template | Update template and input mappings |
Standard operations for workbooks, worksheets, columns, cells, rows.
| Tool | Returns |
|---|---|
get_agents | Available agents with IDs, versions, topics |
get_llm_models | Available models |
get_evaluation_types | All 12 evaluation types |
get_sobjects / get_sobject_fields | SObject metadata |
get_dataspaces / get_data_model_objects | Data Cloud DMOs |
get_prompt_templates | Available prompt templates |
get_invocable_actions | Available Flows, Apex, etc. |
get_formula_functions / get_formula_operators | Formula reference |
| Tool | Purpose |
|---|---|
setup_agent_test | Create a full agent test suite in one call |
poll_worksheet_status | Poll until processing completes |
get_worksheet_summary | Structured column/status summary |
create_workbook_with_worksheet | Create both in one step |
All 12 Agentforce Grid column types are supported with typed Zod schemas:
| Type | DSL Name | Purpose |
|---|---|---|
| AI | ai | LLM text generation with custom prompts |
| Agent | agent | Run agent conversations |
| AgentTest | agent_test | Batch agent testing |
| Object | object | Query Salesforce SObjects |
| DataModelObject | data_model_object | Query Data Cloud DMOs |
| Evaluation | eval/* | Evaluate outputs (12 evaluation types) |
| Reference | reference | Extract fields via JSON path |
| Formula | formula | Computed values |
| PromptTemplate | prompt_template | Execute prompt templates |
| InvocableAction | invocable_action | Execute Flows/Apex |
| Action | action | Standard platform actions |
| Text | text | Static/editable text |
Use short names instead of full sfdc_ai__* identifiers:
| Shorthand | Model |
|---|---|
gpt-4-omni | GPT 4 Omni |
gpt-4-omni-mini | GPT 4 Omni Mini |
gpt-4.1 | GPT 4.1 |
gpt-4.1-mini | GPT 4.1 Mini |
gpt-5 | GPT 5 |
gpt-5-mini | GPT 5 Mini |
o3 | O3 |
o4-mini | O4 Mini |
claude-4.5-sonnet | Claude 4.5 Sonnet |
claude-4.5-haiku | Claude 4.5 Haiku |
claude-4-sonnet | Claude 4 Sonnet |
gemini-2.5-flash | Gemini 2.5 Flash |
gemini-2.5-flash-lite | Gemini 2.5 Flash Lite |
gemini-2.5-pro | Gemini 2.5 Pro |
nova-lite | Amazon Nova Lite |
nova-pro | Amazon Nova Pro |
Every column config is validated against typed Zod schemas before hitting the API. The apply_grid tool adds 6-pass semantic validation:
npm run build # Compile TypeScript
npm run dev # Watch mode
npm start # Run the server~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.