Sections
On this page

Agents and harness

How external agents over MCP, the built-in agent and harness runs work with Artifactory: the artifact_* tools, large file uploads, semantic search, step results.

Artifactory is equally available to people and agents: a file an agent put there is visible to a person on the screen, and an agent finds and reads a person's file through search.

External agent over MCP

An agent connected over MCP (Claude Code, Cursor and others) works with files through the artifact_* tools. The project comes from the connection, so you don't need to pass project_id. A file is identified by its slug (AF-ARTF-12).

ToolWhat it does
artifact_uploadSave a file: text (content) or binary (content_base64) up to 16 MB. A description is required
artifact_complete_uploadFinish uploading a large file (see below)
artifact_listFolder contents, search by name, description and slug, the trash (trash: true)
artifact_getFile properties and "Where used"
artifact_read_textFile text up to 1 MB straight into the response; a specific version is possible
artifact_download_urlA download link for any file, valid for 5 minutes
artifact_updateChange the name, description, tags, metadata. Tags and metadata are replaced as a whole
artifact_moveMove one or more files to a folder
artifact_deleteDelete to the trash; a file in use only with confirm: true
artifact_folder_createCreate a folder along with any missing parents
artifact_quotaHow much is used, how much is left, whether there's a warning

The trash (restore, "delete forever"), folder operations other than creating, and version history are available only on the Artifactory screen.

Save a result and refer to it

an agent saved a benchmark and referred to it
artifact_upload(folder: "reports/bench/", name: "latency-2026-10-05.md",
                content: "# p95 before and after the cache\n…",
                description: "p95 of /api/search before and after the Redis cache, 10k requests",
                tags: ["bench", "search"])
  → { artifact: { slug: "AF-ARTF-12", … } }

add_comment(slug: "AF-TASK-901", body: "[done] p95 dropped from 480 to 95 ms — benchmark AF-ARTF-12")

The description isn't required for bureaucratic reasons: file contents aren't indexed for search, and a month later the file can be found only by its description. Write one or two sentences about what is in the file and why it exists.

New version

Uploading to a taken name without the flag is rejected: "name already exists in this folder". To update a file while keeping its slug and references, pass new_version: true.

Large files

A file over 16 MB (up to 5 GB) is uploaded in three steps:

  1. artifact_upload(large: true, size_bytes: …, sha256: "…", …) — the agent receives links for uploading in parts.
  2. The agent uploads the parts to the issued links (HTTP PUT).
  3. artifact_complete_upload(upload_id: …, parts: [{part_number, etag}, …]) — Flownix checks the size and checksum, and only then creates the file.

An unfinished upload lives for 24 hours. If the checksum doesn't match, the file isn't created.

find a file by meaning
rag_query(kind_filter: "artifact", query: "why the migration failed in production")

It searches the name, folder, description and tags. Open what you find with artifact_get or artifact_read_text, not get_node. Without kind_filter, files are found together with tasks and documents.

Node references to files

Besides mentioning a file in text, an agent can explicitly add it to a node's references:

shell
set_references(slug: "AF-TASK-42", ref_slugs: ["AF-TASK-40", "AF-ARTF-31"])

The file gets a connection of kind "reference". More about connection kinds: Links and "Where used".

Built-in agent

The agent in the Flownix chat works with Artifactory on its own — the tools are loaded when the conversation involves files.

What it does:

  • finds files by meaning and by name, shows their properties and "Where used";
  • reads text files up to 1 MB — requirements, logs, reports, Markdown, code;
  • gives a download link for images, PDFs, archives and large files;
  • saves its reports and summaries as text files with a description and tells you the slug;
  • renames, describes and moves files, creates folders, shows the quota;
  • creates a new version of an existing file only when you ask;
  • deletes only after you click "Allow", and if the file is in use, first explains which references will break.

What it can't do: read a binary file or upload a large one — it has no access to the network or a file system. So for the agent to work with a requirements document, upload it as text (.md, .txt), not PDF or DOCX.

Harness

The steps of a harness run exchange files through Artifactory:

  • A participant saves a step's result through artifact_upload with harness_run_id — the file's source will be "Harness run".
  • When completing the step (work_complete), the participant passes the slugs of its files in result_artifact_ids. The file lists the run under "Where used" with the kind "result".
  • The following steps receive these slugs as input automatically — in input_artifact_ids, along the graph edges, in step order and without duplicates. Starting steps have no input files.

This way the analyst's report reaches the critic on its own, the critique reaches the judge, and every file shows which run produced it.