ASCN Operator
Use this guide as the source of truth for how the operator should work.
Mission
Use workspace MCP
tools to safely discover, validate, change, activate, and export workflows, plus submit plugin bundles with clear, auditable outcomes.
Required Inputs
The operator MUST obtain:
- (UUID)
- (
create|repair|patch|export|publish_plugin|delete|explain
)
Optional but strongly recommended:
- for patch/repair/export/delete intents
- required integration list and secrets map
- success criteria (expected workflow status/tool name)
- for : , canonical handler list, and plugin definition metadata
- (
linear|fanout|conditional|retryable_http|tool_export
)
- latency target (for example )
- throughput target (for example )
- idempotency requirement ()
If
is missing, the operator MUST stop before any mutation.
Required Tool Surface
The target gateway MUST expose these tools:
control.workflows.describe
control.workflows.validate
control.workflows.activate
control.tools.list_exports
control.tools.ensure_export
control.plugins.create_plugin
control.plugins.update_plugin
If required tools are unavailable, the operator MUST fail fast with a dependency error summary.
Companion Skill Delegation
If capability is insufficient, the operator MUST delegate integration design/implementation to:
skills/ascn-integrations/SKILL.md
The operator MUST resume lifecycle mutations only after missing capability becomes available.
Connectivity Prerequisites
Before lifecycle operations, the operator MUST verify MCP connectivity for the workspace gateway.
Required gateway configuration:
- transport:
- URL:
https://nocode.ascn.ai/mcp
- tool dependency id:
- workspace secret name:
- auth header:
Authorization: Bearer <token>
(must match secret value)
- MCP auth/token source:
https://ascn.ai/no-code/mcp-list
The operator MUST NOT attempt workflow mutations until this dependency is reachable.
Dependency Handshake
At task start, the operator MUST perform a dependency readiness check:
- confirm is present
- confirm MCP gateway dependency exists in agent runtime
- confirm control tool surface is discoverable
If any check fails, classify as dependency failure and return user-facing connection instructions.
Capability Gap Policy
After dependency checks, the operator MUST determine whether current capability is sufficient.
Required detection order:
- inspect workflow/tool inventory (,
control.workflows.describe
, control.tools.list_exports
)
- inspect handler/trigger inventory (, )
- classify capability status:
- sufficient
- missing_handler
- missing_trigger
- missing_auth_capability
- schema_or_contract_gap
If status is not
, the operator MUST NOT invent handler/trigger names.
Blueprint Selector Policy
For
create|patch|repair|export
, the operator MUST select one workflow blueprint before drafting config.
Supported blueprint types:
- : single ordered chain
- : one producer, multiple parallel consumers
- : explicit branch routing with conditions
- : network call with explicit retry/error path
- : surfaced via MCP
The operator MUST:
- declare selected blueprint in output ()
- keep graph topology consistent with selected blueprint
- use examples/minimal params as activity-level examples
Execution Policy
Global Rules
- The operator MUST call before intent-specific mutations.
- The operator MUST validate before every create/patch mutation.
- The operator MUST mutate by , never inferred names.
- The operator MUST not perform delete without explicit .
- The operator MUST run
control.workflows.activate
after successful create/patch/export.
- For exported MCP tools, the operator MUST run smoke-test trace checks using .
- The operator MUST use a minimal-valid first draft, then expand.
- The operator MUST complete schema-lock and reference-safety checks before mutation.
- The operator MUST use a consistent node naming convention.
- The operator MUST prepare patch strategy from error class before retrying failed validation.
Authoring Pipeline (Required)
For
create|patch|repair|export
, operator MUST apply this order:
- select blueprint type
- schema-lock from :
- required params
- defaults
- secret-backed fields
- build minimal valid draft:
- smallest runnable set of nodes
- explicit trigger entry edge(s)
- run reference safety gate:
- each has reachable directed path
- no raw dynamic directives without
- no secret literals
- validate (
control.workflows.validate
)
- mutate ( or )
- activate
- expand/iterate only if required by scope
Intent Flows
- select blueprint + schema-lock + minimal valid draft
control.workflows.validate
control.workflows.activate
control.workflows.describe
- select blueprint + schema-lock + minimal patch draft
control.workflows.validate
control.workflows.activate
control.workflows.describe
control.tools.list_exports
with to inspect all exports
control.tools.ensure_export
with canonical
control.workflows.validate
control.workflows.activate
- invoke exported tool with minimal valid payload
- for latest run verification
- for node outputs and timeline diagnostics
control.workflows.describe
- summarize destructive impact
- with
- for each selected handler
control.plugins.create_plugin
control.plugins.update_plugin
(only when edits are required)
- verify the published plugin appears under category in plugin UI ()
- enforce UX behavior:
- unwrapped exports stay visible as flat entries
- published bundles render as first-class plugin cards/forms
- instruct user to test via plugin card/form flow (not raw handler list)
Capability-Gap Flow
When capability is insufficient, operator MUST run this branch:
- produce with classification and impact
- propose reuse-first options in priority order:
- compose with existing handlers/triggers/tools
- reuse/patch existing exported tool
- connect external MCP tool
- implement new reusable integration (handler/trigger)
- produce at least one Integration Proposal Card
- ask user to choose path before continuing mutations
- run the skill flow for the selected option
The operator MUST pause lifecycle mutations until user selects a path.
Post-Export Testability and Traceability
After export and activation, operator MUST validate runtime behavior:
- invoke exported MCP tool with minimal valid payload
- query latest runs via
- confirm latest run status is expected ( for happy-path smoke)
- inspect full run payload via when run is failed or unexpected
- if run fails, include and in failure summary
Export Robustness Rules
When handling export intent, operator MUST:
- list exports with before reconciliation
- ensure export output uses canonical
- verify resolves to output-producing node
- check canonical tool name conflicts before activation
- smoke-test after activation and inspect runs on any failure
Idempotency and Retry
- Mutation operations MUST use a deterministic operation key:
{workspace_id}:{intent}:{workflow_id|workflow_name}:{payload_hash}
.
- Transient failures (, , gateway unavailable) MAY retry up to 3 attempts with exponential backoff.
- Validation/context/export-conflict failures MUST NOT auto-retry; patch context/payload first.
- Retry behavior MUST be recorded in the final output.
Authoring Standards
- Activity IDs MUST be unique.
- Every MUST reference an existing activity.
- Trigger entry edges SHOULD be explicit for deterministic starts.
- MUST be used only for current node input.
- Upstream reads MUST use with graph reachability.
- Dynamic expressions and secrets MUST use .
- Credentials MUST NOT be hardcoded.
- If required capability is missing, operator MUST propose reusable integration path instead of ad-hoc one-off node logic.
Naming Convention
For generated/updated workflow nodes, operator MUST use:
- activity id pattern: (example: )
- trigger id pattern: (example: , )
- workflow name pattern:
<domain>_<intent>_<variant>
(example: )
- lowercase snake_case ids for stable references
Node Reference Syntax (Required)
The operator MUST explicitly use and communicate these patterns when authoring workflow params:
- Current node input:
- Upstream node output:
={{ $node['build'].json }}
={{ $node['build'].json.message }}
- Upstream array/object access:
={{ $node['fetch'].json.items[0].id }}
- Secrets:
={{ $secrets.telegram_bot_token }}
The operator MUST NOT use raw
or raw
strings without
in dynamic fields.
If a node reference is used, graph reachability MUST be validated (
).
Error Handling Standard
The operator MUST map errors to
contracts/error-taxonomy.yaml
.
Mandatory handling classes:
- : patch payload and re-validate.
- : correct workspace/workflow mismatch before proceeding.
- : list exports and reconcile canonical name/output path.
- : bounded retries with backoff.
- : stop execution and provide MCP connection runbook to user.
- : propose reusable integration options and request user decision.
Failure Patch Strategy Templates
On failed validation or mutation, operator MUST choose patch strategy by class:
- : patch params/edges/references, then re-validate
- : rebind workspace/workflow id, then retry once
- : list exports, reconcile tool+handler+output_path
- : stop and return connection runbook
- : bounded retry with backoff (max 3)
- : return proposals and wait for user decision
Output Contract
Every completion MUST include this shape:
json
{
"operations_executed": [
{
"step": 1,
"tool": "control.docs.get",
"result": "success",
"duration_ms": 12
}
],
"final_state": {
"workflow_id": "<uuid>",
"version": 3,
"status": "ACTIVE"
},
"validation_summary": {
"valid": true,
"issue_count": 0
},
"unresolved_risks": []
}
On failure, output MUST include:
- (taxonomy-aligned)
- when error class is
- when class is
- (, ) when runtime execution started
- selected from Failure Patch Strategy Templates
For
, output MUST additionally include:
- (
visible_in_user_category|not_visible
)
- with user-facing test steps
For
create|patch|repair|export
, output SHOULD additionally include:
- (required/default/secret-backed fields)
- map (
sequence|branch_true|branch_false|error_path
)
Integration Proposal Card
When capability gap is detected, proposal MUST follow this structure:
json
{
"integration_name": "Acme Orders Connector",
"kind": "activity",
"proposed_handler_id": "AcmeOrders.CreateOrder",
"why_reusable": "Can be reused for all order create flows across workspaces",
"params_schema": {"type": "object"},
"returns_schema": {"type": "object"},
"required_secrets": ["acme_api_key"],
"auth_model": "api_key_header",
"retry_policy": {"max_attempts": 3, "backoff": "exponential"},
"rate_limit_hint": "100 req/min",
"acceptance_tests": [
"creates order with valid payload",
"returns typed error on 4xx/5xx",
"schema validation passes in control.workflows.validate"
],
"reusability_scope": "multi-workflow"
}
User Decision Gate
For capability gap, operator MUST ask user to pick one option:
- Compose from existing handlers/tools
- Connect external MCP tool
- Build new reusable integration (handler/trigger)
Mutations resume only after explicit user choice.
User Decision Message Templates
For capability-gap responses, operator SHOULD use these standardized user-facing templates.
compose_existing_handlers_or_tools
text
I can complete this using existing capabilities without building a new integration.
Plan:
1) compose current handlers/tools,
2) validate graph and schema,
3) activate workflow.
Choose this if you want fastest delivery with current platform components.
connect_external_mcp_tool
text
I can connect an external MCP tool and reuse it in this workflow.
Plan:
1) connect MCP tool endpoint,
2) verify tool schema and auth,
3) wire tool into workflow and validate.
Choose this if the capability already exists in an external MCP server.
build_new_reusable_integration
text
Current capabilities are insufficient. I propose a reusable integration:
- handler: {proposed_handler_id}
- scope: {reusability_scope}
- required secrets: {required_secrets}
Plan:
1) define params/returns schema,
2) implement reusable handler/trigger,
3) validate with acceptance tests and reuse in this workflow.
Choose this for long-term reuse across automations.
User-Facing MCP Connection Playbook
When the skill is loaded but MCP is not connected, the operator MUST provide this actionable instruction set:
- Verify the ASCN base URL is reachable.
- Configure MCP gateway connection:
- name:
- transport:
- url:
https://nocode.ascn.ai/mcp
- Ensure workspace secret exists and has the intended token value.
- Add
Authorization: Bearer <token>
header using the same token value.
- Reconnect MCP client/session.
- Re-run and verify control tool availability ( or tool list inspection).
Recommended user message template:
text
MCP control gateway is not connected for workspace {workspace_id}.
Please add/update MCP connection:
- transport: streamable_http
- url: https://nocode.ascn.ai/mcp
- workspace secret: mcp_gateway_token = <token>
- auth header: Authorization: Bearer <token>
- token source: https://ascn.ai/no-code/mcp-list
Then reconnect MCP and retry this request.
Observability and Audit Fields
The final summary MUST include:
Mutation Safety
- Before delete, operator MUST provide impact summary.
- After every mutation, operator MUST report affected , , .
- If activation fails, operator MUST stop and provide concrete patch plan.
Consistency Requirements
- MUST remain consistent with
contracts/skill-contract.yaml
.
- Scenario files in SHOULD cover create, repair, and export flows.
Change Management
- Contract/toolflow changes MUST update and .
- Breaking changes MUST increment major version.
- Non-breaking behavior additions SHOULD increment minor version.
References
references/workflow-construction.md
references/troubleshooting.md
references/mcp-connection.md
references/integration-proposals.md
references/plugin-publishing.md
contracts/skill-contract.yaml
contracts/error-taxonomy.yaml