Pipelines5 tools
Execute, save, list, and run reusable processing pipelines
ExecutePipeline
tool · pipelinesExecute a multi-stage asset pipeline. Compose select, filter, transform, action, output, and summarize stages into a single operation. Use dry_run: true to preview changes before committing. Stages by category: SELECT: search, collection, ids, diff (set comparison). FILTER: where, sort, limit, deduplicate, sample. TRANSFORM: set_tag, remove_tag, set_field, regex_replace, compute, set_visibility, set_owner, enrich (stub), approve (stub). ACTION: add_to_collection, move, delete, archive. OUTPUT: export (ADR-057 privacy-aware), notify (stub), tee (passthrough fan-out). SUMMARIZE: count, group_by, stats, histogram. Output stages require confirm: true and are skipped during dry-run. Summarize stages execute during dry-run to provide aggregation previews.
| Parameter | Type | Required | Description |
|---|
| stages | object[] | required | Ordered list of pipeline stages. Must start with a select stage (search, collection, ids, or diff). |
| dry_run | boolean | optional | Preview what would happen without executing mutations. Transform/action stages show simulated side effects. Output stages are skipped. Summarize stages execute to provide aggregation previews. Default: false. |
| timeout_ms | number | optional | Maximum execution time in milliseconds (1000-60000). Default: 30000. |
SavePipeline
tool · pipelinesCreate or update a named saved pipeline. Provide pipeline_definition_h to update an existing pipeline (SCD Type 2 versioning preserves full edit history). Omit it to create a new pipeline. Pipelines are identified by slug (derived from name) and stored with full stage definitions.
| Parameter | Type | Required | Description |
|---|
| name | string | required | Pipeline name (used to generate URL-safe slug). Must be unique per tenant. |
| stages | object[] | required | Ordered pipeline stage definitions (same format as ExecutePipeline stages) |
| description | string | optional | Human-readable description of what this pipeline does |
| default_dry_run | boolean | optional | Default dry_run setting when run without override (default: false) |
| default_timeout_ms | number | optional | Default timeout in ms, 1000-60000 (default: 30000) |
| tags | string[] | optional | Labels for organizing pipelines (e.g., ["weekly", "client-delivery"]) |
| pipeline_definition_h | string | optional | 40-char hex hash of existing pipeline to update. Omit to create new. |
ListPipelines
tool · pipelinesList saved pipelines for the current tenant. Returns pipeline metadata including name, stage count, tags, and default execution settings. Use pipeline_definition_h from results with RunSavedPipeline to execute.
| Parameter | Type | Required | Description |
|---|
| tags | string[] | optional | Filter by tags (e.g., ["weekly"]) |
RunSavedPipeline
tool · pipelinesExecute a saved pipeline by ID or name. Supports overriding default_dry_run and default_timeout_ms at run time. Returns the same execution trace as ExecutePipeline. Provide either pipeline_definition_h (40-char hex) or pipeline_name (resolved automatically).
| Parameter | Type | Required | Description |
|---|
| pipeline_definition_h | string | optional | 40-char hex hash of the pipeline to run |
| pipeline_name | string | optional | Pipeline name (alternative to pipeline_definition_h). Resolved to hash automatically. |
| dry_run | boolean | optional | Override the saved default_dry_run. Defaults to pipeline's saved setting. |
| timeout_ms | number | optional | Override the saved default_timeout_ms (1000-60000) |
| vars | object | optional | Runtime variable injection (merged into pipeline context vars) |
ListPipelineTemplates
tool · pipelinesList available pipeline templates for the current tenant. Returns system templates (available to all tenants) plus any tenant-specific templates. Use the pipeline_definition_h from results with POST /api/v1/pipelines/templates to clone a template into a new saved pipeline.
Pipeline Stages6 tools
Execute individual pipeline stages (select, filter, transform, etc.)
SelectStage
tool · pipeline stagesExecute a single SELECT-category pipeline stage. SELECT stages are entry points that produce an initial asset set. Supported stage_type values: search (text query), collection (load from collection path), ids (explicit asset hashes), diff (set difference between two sub-selects).
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The SELECT stage type to execute enum: search · collection · ids · diff |
| config | object | required | Stage-specific configuration. search: { query: "tag:approved" }. collection: { path: "projects.nike", include_nested: true }. ids: { asset_ids: ["abc..."] }. diff: { set_a: {...}, set_b: {...}, mode: "only_in_a" }. |
| dry_run | boolean | optional | If true, simulates execution without side effects |
FilterStage
tool · pipeline stagesExecute a single FILTER-category pipeline stage on a set of assets. Supported stage_type values: where (field filter), sort (order by field), limit (cap result count), deduplicate (remove duplicates), sample (random subset).
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The FILTER stage type to execute enum: where · sort · limit · deduplicate · sample |
| config | object | optional | Stage-specific configuration. sort: { by: "created_at", order: "desc" }. limit: { count: 20 }. where: { field: "tool", operator: "eq", value: "midjourney" }. |
| assets | string[] | required | Array of asset hashes to filter. Required for non-SELECT stages. |
| dry_run | boolean | optional | If true, simulates execution without side effects |
TransformStage
tool · pipeline stagesExecute a single TRANSFORM-category pipeline stage on a set of assets. Modifies asset metadata or triggers AI enrichment. Supported stage_type values: set_tag, remove_tag, set_field, regex_replace, compute, set_visibility, set_owner, enrich, approve.
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The TRANSFORM stage type to execute enum: set_tag · remove_tag · set_field · regex_replace · compute · set_visibility · set_owner · enrich · approve |
| config | object | optional | Stage-specific configuration. set_tag: { tags: ["approved"] }. enrich: { operations: ["auto_tag"] }. set_field: { field: "status", value: "reviewed" }. |
| assets | string[] | required | Array of asset hashes to transform |
| dry_run | boolean | optional | If true, simulates execution without side effects |
ActionStage
tool · pipeline stagesExecute a single ACTION-category pipeline stage on a set of assets. Performs structural operations like moving, deleting, or archiving assets. Supported stage_type values: add_to_collection, move, delete, archive.
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The ACTION stage type to execute enum: add_to_collection · move · delete · archive |
| config | object | optional | Stage-specific configuration. add_to_collection: { path: "projects.nike" }. move: { from: "inbox", to: "approved" }. delete: { confirm: true }. archive: { confirm: true }. |
| assets | string[] | required | Array of asset hashes to act on |
| dry_run | boolean | optional | If true, simulates execution without side effects |
OutputStage
tool · pipeline stagesExecute a single OUTPUT-category pipeline stage on a set of assets. Produces outputs like exports, notifications, or tee copies. Supported stage_type values: export, notify, tee.
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The OUTPUT stage type to execute enum: export · notify · tee |
| config | object | optional | Stage-specific configuration. export: { preset: "client", confirm: true }. notify: { event_type: "pipeline.completed" }. tee: { action: { type: "add_to_collection", path: "backup" } }. |
| assets | string[] | required | Array of asset hashes for output |
| dry_run | boolean | optional | If true, simulates execution without side effects |
SummarizeStage
tool · pipeline stagesExecute a single SUMMARIZE-category pipeline stage on a set of assets. Produces aggregate data and statistics. Supported stage_type values: count, group_by, stats, histogram.
| Parameter | Type | Required | Description |
|---|
| stage_type | string | required | The SUMMARIZE stage type to execute enum: count · group_by · stats · histogram |
| config | object | optional | Stage-specific configuration. count: { group_by: "tool" }. group_by: { field: "mime_type" }. stats: { field: "file_size" }. histogram: { field: "created_at" }. |
| assets | string[] | required | Array of asset hashes to summarize |
| dry_run | boolean | optional | If true, simulates execution without side effects |
Uncategorised27 tools
Uncategorised
GetAssetDetails
tool · uncategorisedRetrieve comprehensive details for a specific asset by its SHA-1 hash. Returns metadata, tags, collections, provenance, embedding info, and copyright. Optionally generates a short-lived signed download URL.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| asset_h | string | required | The Asset Hash (SHA-1) of the asset to retrieve |
| include_download_url | boolean | optional | If true, includes a short-lived signed URL for downloading the original asset binary. Defaults to false. |
BulkUpdateAssetTags
tool · uncategorisedAdd or remove a set of tags across up to 100 assets in one call. Per-asset behaviour: 'add' merges into the existing tag set (deduped); 'remove' deletes the listed tags from each asset. Assets whose tag set does not change are skipped silently and reported as unchanged in the response. Tenant-scoped; uses the same RLS path as PATCH /api/v1/assets/bulk-tag.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| asset_hs | string[] | required | Array of asset hashes (SHA-1, 40-char hex) to apply the operation to. Min 1, max 100. |
| operation | string | required | 'add' merges the tags into each asset's existing tag set (deduped); 'remove' deletes them. For replace-all semantics on a single asset, use UpdateAsset. enum: add · remove |
| tags | string[] | required | Tag strings to add or remove. Min 1 char, max 100 chars per tag. Min 1 tag, max 50 tags per call. |
UpdateAsset
tool · uncategorisedPartial update of a single asset's scalar metadata: description, title, and/or tags. Tag update on this tool REPLACES the entire existing tag set; for incremental add/remove operations across multiple assets use BulkUpdateAssetTags. At least one of description, title, or tags must be provided. Tenant-scoped; uses the same RLS path as PATCH /api/v1/assets/[assetH].
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| asset_h | string | required | Asset hash (SHA-1, 40-char hex) of the asset to update. |
| description | string | optional | Optional new asset description (max 5000 chars). Replaces any existing description verbatim. |
| title | string | optional | Optional new asset title (max 500 chars). |
| tags | string[] | optional | Optional new tag set. REPLACES the entire existing tag set. For incremental add/remove use BulkUpdateAssetTags. Min 0 tags, max 500. Each tag 1–100 chars. |
ExportCollectionAsPdf
tool · uncategorisedExport a collection as a PDF document. Returns the PDF as a base64-encoded string along with page count and processing time metadata. The web API handles layout, pagination, and optional watermark removal.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| collection_h | string | required | Collection hash (SHA-1, 40 hex chars) to export |
| remove_watermark | boolean | optional | Whether to remove the Numonic watermark from the exported PDF. Default: false. |
AddTextCardToCollection
tool · uncategorisedAdd a rich-text card (slide) to a collection. Text cards are rendered as full slides in PDF exports and can contain a heading, body text, bullet points, and an accent callout. Supports dark, gradient, and light backgrounds with optional hex accent color.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| collection_h | string | required | Collection hash (SHA-1, 40 hex chars) |
| heading | string | optional | Card heading text |
| heading_size | string | optional | Heading size: xl, lg, or md enum: xl · lg · md |
| body | string | optional | Body text for the card |
| bullets | string[] | optional | Array of bullet point strings |
| accent_text | string | optional | Highlighted callout text |
| background | string | optional | Background style. Default: dark enum: dark · gradient · light |
| accent_color | string | optional | Hex color code for accent elements (e.g., #3B82F6) |
| layout | string | optional | Layout style. Default: centered enum: centered · left-aligned |
| position | integer | optional | Position in collection ordering (0-based) |
SearchModels
tool · uncategorisedSearch the Model Library for models (LoRAs, checkpoints, UNETs, etc.) by name, type, or base architecture. Returns model entities with metadata, not assets. Use GetAssetModels to find assets by model.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | optional | UUID of the tenant |
| query | string | optional | Text search across model name, display name, and description. Supports partial matching. |
| model_type | string | optional | Filter by model type: lora, checkpoint, unet, clip, upscaler, controlnet, vae, embedding, ip_adapter, llm, etc. |
| base_model | string | optional | Filter by base architecture: sdxl, flux, sd15, sd3, sd35, pony, illustrious, noobai, hunyuan, etc. |
| limit | integer | optional | Maximum results to return (default: 50) |
| offset | integer | optional | Offset for pagination (default: 0) |
GetModelDetails
tool · uncategorisedGet full details for a specific model including metadata, version history, asset usage count, and preview count.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | optional | UUID of the tenant |
| model_hash | string | required | SHA-1 hash key of the model (from models_h.model) |
GetAssetModels
tool · uncategorisedGet all models used to generate a specific asset, including LoRA weights and detection source.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | optional | UUID of the tenant |
| asset_hash | string | required | SHA-1 hash key of the asset |
LinkModelToAsset
tool · uncategorisedManually link a model to an asset (for non-ComfyUI sources where automatic detection is not available).
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | optional | UUID of the tenant |
| model_hash | string | required | SHA-1 hash key of the model |
| asset_hash | string | required | SHA-1 hash key of the asset |
| model_weight | number | optional | LoRA strength_model value (e.g., 0.75). Null for checkpoints. |
| detection_source | string | optional | How this link was discovered (default: manual_tag) |
GetModelVersions
tool · uncategorisedGet version history for a model, including training steps, quality scores, and recommended flag.
| Parameter | Type | Required | Description |
|---|
| model_hash | string | required | SHA-1 hash key of the model |
| include_deleted | boolean | optional | Include soft-deleted versions (default: false) |
AddModelVersion
tool · uncategorisedAdd a version to a model with training metadata, quality score, and recommended flag.
| Parameter | Type | Required | Description |
|---|
| model_hash | string | required | SHA-1 hash key of the model |
| version_tag | string | required | Version label (e.g., v1.0, v2.0, epoch10) |
| version_notes | string | optional | Changelog or description for this version |
| training_steps | integer | optional | Total training steps |
| training_epochs | integer | optional | Total training epochs |
| training_config | object | optional | Training hyperparameters: {"lr": 0.0001, "optimizer": "AdamW"} |
| quality_score | number | optional | Quality rating (0-10) |
| is_recommended | boolean | optional | Mark as the recommended version for this model |
| trained_at | string ·date-time | optional | When this version was trained |
CreateExperiment
tool · uncategorisedCreate an experiment collection for structured image comparison workflows (model benchmarking, prompt A/B testing, style evaluation). Returns the experiment collection hash.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string | required | Tenant UUID |
| display_name | string | required | Human-readable experiment name |
| description | string | optional | Experiment description |
| hypothesis | string | optional | What this experiment tests |
| independent_variable | string | optional | What varies across runs (e.g., "prompt condition", "model", "LoRA") |
| control_variable | string | optional | What is held constant (e.g., "seed set", "resolution") |
| model_name | string | optional | Primary generation model (e.g., "FLUX.2 Dev") |
| workflow_name | string | optional | Generation workflow (e.g., "txt2img") |
| resolution | string | optional | Image resolution (e.g., "1024x1024") |
| domain_context | object | optional | Domain-specific metadata as JSON (e.g., {"grammar_version": "v3"}) |
RegisterRun
tool · uncategorisedAdd an asset to an experiment as a run with full context (condition, seed, prompt, model, domain params).
| Parameter | Type | Required | Description |
|---|
| collection_h | string | required | Experiment collection hash (40-char hex) |
| asset_h | string | required | Asset hash to register as a run (40-char hex) |
| condition_id | string | optional | Independent variable value for this run (e.g., "cond2b", "model_A") |
| variant_label | string | optional | Human-readable variant label (e.g., "Compiled prompt") |
| seed | integer | optional | Generation seed |
| prompt_text | string | optional | Exact prompt used for generation |
| model_name | string | optional | Model for this specific run (overrides experiment-level) |
| run_params | object | optional | Domain-specific run parameters as JSON |
| outcome_tags | string[] | optional | Outcome classification tags (e.g., ["text_literalization", "best_in_set"]) |
| position | integer | optional | Position/order within the experiment |
ScoreRun
tool · uncategorisedScore an experiment run on user-defined dimensions. Creates an evaluation annotation. Dimensions are experiment-defined (e.g., quality, adherence, coherence).
| Parameter | Type | Required | Description |
|---|
| collection_item_h | string | required | Collection item hash for the run to score (40-char hex) |
| scores | object | required | Scoring dimensions as key-value pairs (e.g., {"quality": 4, "coherence": 5}). Values are 1-5. |
| flags | object | optional | Boolean flags (e.g., {"prompt_leakage": true, "text_literalization": false}) |
| evaluator_type | string | optional | Who/what performed the evaluation (default: "human") enum: human · vlm_assisted · embedding_similarity |
| comments | string | optional | Free-form evaluation comments |
CompareRuns
tool · uncategorisedCreate a pairwise A/B comparison between two experiment runs, recording which item wins on each scoring dimension.
| Parameter | Type | Required | Description |
|---|
| collection_h | string | required | Experiment collection hash (40-char hex) |
| item_a | string | required | First run collection item hash (40-char hex) |
| item_b | string | required | Second run collection item hash (40-char hex) |
| winners | object | required | Dimension-to-winner mapping (e.g., {"quality": "<item_a_hash>", "coherence": "<item_b_hash>"}) |
| evaluator_type | string | optional | Who/what performed the comparison (default: "human") enum: human · vlm_assisted · embedding_similarity |
| notes | string | optional | Comparison notes |
GetExperimentSummary
tool · uncategorisedGet aggregated experiment results: run count, condition breakdown, outcome tag distribution, and comparison count.
| Parameter | Type | Required | Description |
|---|
| collection_h | string | required | Experiment collection hash (40-char hex) |
CreatePrompt
tool · uncategorisedCreate a new prompt in the Prompt Library. Returns the prompt hash and version info.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | Tenant UUID |
| prompt_text | string | required | The prompt text content (required) |
| name | string | optional | Human-readable prompt name |
| description | string | optional | Prompt description |
| target_model | string | optional | Target model (e.g., midjourney, dall-e, flux) |
| category | string | optional | Prompt category (e.g., landscape, portrait) |
| tags | string[] | optional | Prompt tags for organization |
GetPrompt
tool · uncategorisedGet a prompt by hash ID with full version history and evaluations.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | Tenant UUID |
| prompt_h | string | required | Prompt hub hash (40-char hex) |
SearchPrompts
tool · uncategorisedSearch prompts with optional category, target_model filters, and pagination.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | Tenant UUID |
| category | string | optional | Filter by category |
| target_model | string | optional | Filter by target model |
| limit | integer | optional | Page size (default 20, max 100) |
| offset | integer | optional | Pagination offset (default 0) |
RenderPrompt
tool · uncategorisedRender a prompt template by substituting {{variable}} placeholders with provided values.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | Tenant UUID |
| prompt_h | string | required | Prompt hub hash (40-char hex) |
| variables | object | optional | Template variables as key-value pairs (e.g., {"subject": "cityscape"}) |
RegisterProspect
tool · uncategorisedRegister or update a cold-outreach prospect: writes prospects_h hub + tenant scoping link + prospect_profile_s, and optionally prospect_research_s when pain_hypothesis is supplied. Either email or linkedin_url required. Append-only — re-calling adds new satellite rows.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| prospect | object | required | Prospect data. Either email or linkedin_url is required (validated server-side). |
| record_source | string | required | Origin tag, e.g. "cold-outreach-studios:studios-2026-q2". |
LogOutreachTouch
tool · uncategorisedAppend a touch (email or LinkedIn message) to the outbound log and advance the prospect outreach sequence state. Both writes are append-only.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| prospect_h | string | required | Prospect hub hash (SHA-1). |
| touch | object | required | |
| record_source | string | required | |
GetProspectState
tool · uncategorisedReturn full prospect state: latest profile + research + state + suppression, plus all touches and replies, plus contact_link if hand-off has occurred.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| prospect_h | string | required | Prospect hub hash (SHA-1). |
SearchProspects
tool · uncategorisedFilter prospects by campaign, current sequence status, minimum ICP score, vertical, or account substring. Suppressed prospects (suppressed_until in the future) are excluded by default. Default limit 50, max 200.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| filters | object | optional | |
SuppressProspect
tool · uncategorisedSuppress a prospect with a reason and end-date. Marks all active sequences for the prospect as suppressed. cold-outreach-studios convention: 12 months for unsubscribe / not_interested / wrong_person; reengage_date from the reply for not_now.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| prospect_h | string | required | |
| reason | string | required | enum: unsubscribe · wrong_person · not_now · not_interested |
| suppressed_until | string ·date | required | ISO date YYYY-MM-DD when suppression lifts. |
| record_source | string | required | |
LogReply
tool · uncategorisedRecord an inbound reply with cold-outreach-studios reply-triage classification. Advances sequence state: positive → replied, not_now/wrong_person/unsubscribe/not_interested → suppressed, ooo leaves state untouched. On positive reply, mints prospect_to_contact_l so lead-response v0.2 picks up the now-warm contact.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| prospect_h | string | required | |
| reply | object | required | |
| record_source | string | required | |
SearchContacts
tool · uncategorisedList CRM contacts in a pipeline (community | enterprise | investor) with optional stage and free-text search. Wraps get_pipeline_contacts; returns the latest profile, pipeline stage, activity (last_contacted, next_follow_up), plus pipeline-specific satellite fields (investor: firm_name, investor_type, investment_amount, round, seis_eis_status). Default limit 50, max 200. tenant_id is auto-injected from API key auth.
| Parameter | Type | Required | Description |
|---|
| tenant_id | string ·uuid | required | UUID of the tenant |
| pipeline | string | required | Which CRM pipeline to list. 'investor' for fundraise contacts. enum: community · enterprise · investor |
| stage | string | optional | Optional pipeline-stage filter (e.g. "lead", "engaged", "diligence"). |
| search | string | optional | Optional case-insensitive substring match against contact name and linkedin_url. |
| limit | integer | optional | |
| offset | integer | optional | |