[ agent capabilities ]

The MCP tool directory.

Each row is one tool from one provider. Tools sharing a name across providers (e.g. search) are listed separately because they aren't interchangeable.

[ 55 tools indexed ]

[ all tools ]

30 / 55

PromptShuttle /

activate_flow_version

remote  ] Bring a key

Activates a flow's version for an environment, making it live for API calls. Activates the latest version by default, or a specific version by ID. The entrypoint template must have a model configured (set one via update_flow_template) — activation fails otherwise. Activation locks the version (it becomes read-only; editing it again forks a new draft). Returns the environment -> version mapping after activation.

PromptShuttle /

create_flow

remote  ] Bring a key

Creates a new flow in the tenant. A flow groups versioned prompt templates. The new flow starts with an editable draft version containing one empty 'main' template — set its prompt afterwards with update_flow_template. Returns the created flow with its ID and generated name (slug).

PromptShuttle /

create_tool

remote  ] Bring a key

Creates a new function-calling tool in the tenant. Provide name, description, parameters, toolType, and type-specific fields. toolType: External (REST endpoint), Virtual (provider-native like web_search), Agent (sub-agent), CritiqueLoop (producer+critic loop), Mcp (external MCP server). Returns the created tool with its ID.

PromptShuttle /

get_flow

remote  ] Bring a key

Gets full flow details including prompt templates from the active version. Falls back to the latest version if no version is activated. Use environment parameter to specify which environment's active version to retrieve. If omitted and the flow has exactly one environment, it is auto-selected.

PromptShuttle /

get_run

remote  ] Bring a key

Gets the full debugging detail of a single run (a ShuttleRequest / LLM invocation) by ID. Use list_runs to find run IDs, then this to inspect one. Returns: run metadata (status, model, timing, cost, agent-tree position); the per-iteration inference requests and provider responses (model, provider, timing, token usage, assistant text, tool calls); the resolved conversation (system/user prompts plus tool calls and their results); any errors; the immediate child agent runs (for agentic flows — call get_run on a child ID to drill down); and feedback. Optionally include the streaming event timeline.

FacetFlux /

imports.mappings.apply

remote  ] Bring a key

Pure transform: apply column→attribute mappings to a list of source records and return per-row attribute payloads ready for downstream writes. NO DB writes happen here. Each rule maps `sourceColumn` (a key in the record) to `destinationAttributeDefinitionId` (an attribute definition in the target schema), with an optional `role` tag (uniqueIdentifier, productGroup, name, brand, category, mainImage, productType). The mapping engine performs type coercion against the destination's DataType (e.g. string '42' → 42 for Number) and reports per-row errors and warnings. Recommended downstream flow: use the role-tagged values (especially uniqueIdentifier) as the externalId for `pim.products.batch.create`, then write the per-row attributes via `pim.products.attributes.set`. Response: { targetSchemaId, ruleCount, recordCount, skippedRules: [{ ruleIndex, reason }], items: [{ rowIndex, isSuccess, attributes: [{ attributeDefinitionId, code, dataType, value }], roles: { [role]: value }, errors: [...], warnings: [...] }] }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.

FacetFlux /

imports.smartImports.delete

remote  ] Bring a key

Delete a SmartImport record. Does NOT delete any PIM data created during execution — only the import record itself. Response: { smartImportId, deleted: bool }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

imports.smartImports.execute

remote  ] Bring a key

Finalize a SmartImport: create the PIM schema, traits, attribute definitions, products, variants, and attribute values. Synchronous — may take seconds for large imports. The SmartImport must be in Reviewed state. Transitions to Complete (or Failed on error). Response: { smartImport: {...} } with createdSchemaId, importedProductCount, importedVariantCount populated. Errors: { error: { code: 'not_found' | 'unprocessable', ... } }.

FacetFlux /

imports.smartImports.get

remote  ] Bring a key

Get a SmartImport by id. By default returns the metadata + field inventory + inferred schema (when present); the raw products list is omitted unless explicitly requested since it can be large. Response: { smartImport: {...}, fieldInventory?, inferredSchema?, rawProductCount, errorMessage? }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

imports.smartImports.list

remote  ] Bring a key

List SmartImports for the current tenant, newest first. Excludes the heavy `rawProducts` list from each entry — call imports.smartImports.get to fetch one in full. Optional `status` filter narrows by lifecycle state. Response: { smartImports: [{ id, status, mode, originalFileName, productCount, variantCount, createdAt, updatedAt }] }. Errors: { error: { code: 'bad_input', ... } }.

FacetFlux /

imports.smartImports.review

remote  ] Bring a key

Replace the SmartImport's inferred schema with the agent's adjusted version, transitioning the import to Reviewed. The schema shape is the same one returned in imports.smartImports.get's `inferredSchema` field — typically the agent fetches it, edits names/codes/grouping in its own context, and submits the result here. Response: { smartImport: {...} }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.

FacetFlux /

imports.smartImports.runInference

remote  ] Bring a key

Enqueue the AI inference job for a SmartImport. The SmartImport must be in Analyzed state; transitions to Inferring. Inference runs as a background job — poll imports.smartImports.get periodically until status becomes Inferred (or Failed). Response: { smartImport: {...} }. Errors: { error: { code: 'not_found' | 'unprocessable', ... } }.

FacetFlux /

imports.smartImports.start

remote  ] Bring a key

Upload + analyze inline file content. Supported formats: 'csv' (text/csv) and 'wawiJson' (WAWI-style JSON product feed with FTITLES/FVALUES/DETAIL fields). XLSX is intentionally not supported via MCP in v1 — agents that need XLSX should convert to CSV client-side or use the HTTP API. Returns a SmartImport in Analyzed state with field inventory ready for inference. Response: { smartImport: {...} }. Errors: { error: { code: 'bad_input' | 'unprocessable', ... } }.

FacetFlux /

jobs.get

remote  ] Bring a key

Poll a background job's state. Status values: queued, processing, success, failed. `progress` is a 0.0–1.0 fraction (null when the job hasn't reported any). Tenant-scoped: agents can only see jobs in their own tenant. Response: { jobId, kind, status, progress, retryCount, started, lastAlive, cancellationRequested }. Errors: { error: { code: 'not_found', ... } }.

PromptShuttle /

list_flows

remote  ] Bring a key

Lists all flows in the tenant.

PromptShuttle /

list_runs

remote  ] Bring a key

Lists recent ShuttleRequests (LLM invocations) for debugging. Optionally filter by flow name. Returns up to 50 recent runs (summary fields only). Pass a returned run Id to get_run to inspect its full detail (conversation, responses, errors).

PromptShuttle /

list_tools

remote  ] Bring a key

Lists all function-calling tools in the tenant. Returns ID, name, description, tool type, and type-specific summary fields.

PromptShuttle /

modify_tool

remote  ] Bring a key

Modifies an existing function-calling tool. Only fields that are explicitly provided will be updated (partial update). Returns the updated tool.

FacetFlux /

pim.attributeDefinitions.aliases.set

remote  ] Bring a key

Replace the attribute definition's alias list. Aliases are alternate names used during import matching (e.g. 'Gewicht' as a German alias for 'weight'). Pass [] to clear. Response: { attributeDefinitionId, aliases }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

pim.attributeDefinitions.allowedValues.set

remote  ] Bring a key

Replace the allowed-value list for an enum/multiEnum attribute definition. Idempotent on `value`: values present in input but not in storage are inserted, values present in both have their labels/sortOrder/isActive updated, values present in storage but absent from input are deleted. After this call HasAllowedValues is true iff the resulting list is non-empty. Response: { attributeDefinitionId, added, updated, deleted }. Errors: { error: { code: 'not_found' | 'unprocessable', ... } }.

FacetFlux /

pim.attributeDefinitions.create

remote  ] Bring a key

Create an attribute definition in a schema, or return the existing one if `code` already exists. DataType is required and immutable once values exist. Optional fields: traitId (binds the def to a trait), unit, scope (product|variantDefining|perVariant), role (None|Name|Description|Brand|...), isRequired, isTranslatable, isSearchable, isFilterable. To populate enum allowed values use pim.attributeDefinitions.allowedValues.set after creation. Response: { attributeDefinition: {...}, created: bool }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.

FacetFlux /

pim.attributeDefinitions.get

remote  ] Bring a key

Get an attribute definition by id, with full metadata (validation rules, allowed-value count, guidance text, unit conversion config). To enumerate the actual allowed values, call pim.attributeDefinitions.allowedValues.list (Phase 2). Response: { attributeDefinition: {...} }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

pim.attributeDefinitions.list

remote  ] Bring a key

List attribute definitions in a schema. Pass `traitId` to scope to a single trait, or pass `includeGlobalOnly=true` to get only global (non-trait-scoped) attributes. Response: { attributeDefinitions: [{ id, schemaId, traitId, code, labels, dataType, unit, isRequired, isTranslatable, scope, role, hasAllowedValues, allowedValueCount }] }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

pim.channels.attributeConfig.set

remote  ] Bring a key

Replace the channel's per-attribute config overlay. Each entry binds an attribute definition to per-channel `isRequired`, `labelOverrides`, `exportKey`, and `sortOrder`. The channel's underlying schema must contain every referenced attribute definition; mismatches are skipped. Pass [] to clear the overlay (the channel falls back to the schema's defaults). Response: { channelId, applied: count, skipped: [{ attributeDefinitionId, reason }] }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

pim.channels.create

remote  ] Bring a key

Create a channel for the current tenant, or return the existing one if `code` already exists. Channels are thin distribution-target overlays on a master schema. To customize per-channel attribute requirements after creation, use pim.channels.attributeConfig.set. Response: { channel: {...}, created: bool }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.

FacetFlux /

pim.channels.list

remote  ] Bring a key

List channels (distribution targets) for the current tenant. Optionally scope to a single schema. Response: { channels: [{ id, code, labels, country, schemaId, minReadinessPercent, tags, isActive, attributeConfigCount }] }. Errors: { error: { code: 'bad_input', ... } }.

FacetFlux /

pim.products.archive

remote  ] Bring a key

Soft-archive a product. Equivalent to pim.products.status.set with status=archived. Response: { productId, status: 'archived' }. Errors: { error: { code: 'not_found', ... } }.

FacetFlux /

pim.products.attributes.set

remote  ] Bring a key

Set or merge attribute values on a product (or a specific variant). `mode=merge` (default) upserts only the provided values; existing values for other attributes are left untouched. `mode=replace` upserts the provided values AND deletes any other existing attribute values on the entity, leaving exactly the provided set. Each value is sent as native JSON matching its definition's DataType (string for Text, number for Number/Decimal, bool for Boolean, ["..."] for MultiEnum / arrays, {"en":"...","de":"..."} for translatable Text). When `variantId` is set, the variant must belong to `productId` and the same tenant; attribute scope must match the target entity (product-scoped defs onto product, variantDefining/perVariant defs onto variant) — mismatches are reported in `skipped` with reason `scope_mismatch`. Other skip reasons: `missing_attribute_definition_id`, `definition_not_in_schema`, `value_parse_error: <detail>`. In `mode=replace`, attributes the caller listed but whose value couldn't parse are NOT deleted — only attributes the caller didn't mention at all. Response: { productId, variantId, applied, deleted, skipped: [{ attributeDefinitionId, reason }] }. Errors: { error: { code: 'not_found' | 'bad_input' | 'unprocessable', ... } }.

FacetFlux /

pim.products.batch.create

remote  ] Bring a key

Bulk create-or-upsert products by (sourceSystem, externalId). All inputs share the same schemaId and sourceSystem. Up to 200 products per call; route larger payloads through the Phase-3 imports.* path. Per-row results report which were created vs updated. Channel-code application is a second pass — per-row failures appear in `channelWarnings` (typically: an unknown channel code) without failing the batch; the product itself is still created/updated. Response: { sourceSystem, schemaId, results: [{ productId, externalId, action }], channelWarnings: [{ externalId, productId, message }] }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.

FacetFlux /

pim.products.byExternalId.get

remote  ] Bring a key

Get a single product by its source system + externalId. Useful for reconciling products imported from a supplier feed or upstream system without first calling pim.products.search. Same response shape as pim.products.get. Response: { product?: {...}, attributes?: [...], variants?: [...], channelStatuses?: [...] }. Errors: { error: { code: 'not_found' | 'bad_input', ... } }.