> ## Documentation Index
> Fetch the complete documentation index at: https://docs.threetone.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Free-form procedures

> Write a focused procedure, save it on an agent branch, and inspect how its instructions appear in a compiled workflow preview.

A free-form procedure stores written instructions for a repeatable task. Use it when the task needs judgment or clarification, such as collecting the information for a support request.

<Note>
  Procedure creation, draft updates, and compilation are authoring operations. Compilation places the content in a workflow preview; it does not enforce each sentence as an execution step, publish the agent, or run a conversation.
</Note>

## Write the procedure

Keep the entry condition, requested information, completion condition, and unavailable-action response explicit. For example:

```text theme={null}
Ask which product the request concerns.
Ask the user to describe the problem without sharing passwords.
If the description is unclear, ask one focused follow-up question.
Summarize the information collected and identify anything still missing.
Do not say a support ticket exists unless a separate action confirms it.
```

Use `trigger` for the condition that makes the procedure relevant. Use `content` for the instructions after entry. A procedure name is a label, so avoid relying on it to explain the task.

## Save and inspect

You need an existing agent, an editable `branch_id`, and permission to change the agent.

<Steps>
  <Step title="Create the branch resource">
    Use [Create procedure](/api-reference/agents-platform/create-procedure) with `type: "free_form"`, a useful `name`, your written `content`, and an explicit `trigger`. The name accepts up to 200 characters. Set `folder_parent_id` only when placing it in an existing procedure folder.
  </Step>

  <Step title="Read the draft back">
    Keep the returned `procedure_id` and read [Get procedure draft](/api-reference/agents-platform/get-procedure-draft) on the same agent and branch. Compare the stored name, content, type, and trigger with the intended task.
  </Step>

  <Step title="Make a complete draft update">
    [Update procedure draft](/api-reference/agents-platform/update-procedure-draft) requires `name`, `content`, and `type`. Draft content accepts up to 50,000 characters. Keep `type: "free_form"`; this operation cannot change a procedure's type.
  </Step>

  <Step title="Compile for review">
    Use [Compile procedures](/api-reference/agents-platform/compile-procedures). Inspect the returned node's additional prompt and trigger condition. Save a reviewed workflow separately through [versions and drafts](/agents-platform/deploy/versioning) if you intend to use it in an agent snapshot.
  </Step>
</Steps>

An explicitly empty trigger produces no automatic trigger edge in the preview. Do not use an empty trigger for a procedure you expect the preview's router to select directly.

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I convert this procedure to structured content?" id="faq-free-form-convert">
    The draft update rejects type changes. Create a separate [structured procedure](/agents-platform/configure/agent-behavior/procedures/structured), review its content, and update any references deliberately.
  </Accordion>

  <Accordion title="Does a tool name in the text execute that tool?" id="faq-free-form-tools">
    No. Text alone does not establish a tool attachment, authorization, or execution. Review the referenced resource and its availability separately.
  </Accordion>
</AccordionGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.