Skip to Content
Tools

Tools

Tools give agents the ability to take actions and look up information during office hour simulations. A tool might check a student’s enrollment status, look up assignment deadlines, or retrieve course policies — enabling the AI agent to respond with accurate, real-time data rather than relying solely on its training.


What is a Tool?

A tool in Glow is a callable function that an agent can invoke during a conversation. Each tool has:

  • A name and description — tells the LLM when and how to use the tool
  • Arguments (args) — the input parameters the tool accepts
  • Argument positions (arg_positions) — ordering of those parameters
  • Argument outputs (args_outputs) — the shape of data the tool returns
  • Operations — the underlying actions the tool performs
  • Artifacts — related resources the tool works with

Tools are attached to agents through the agent_tools_junction. When a student asks “When is the midterm?”, the agent can invoke a check_deadline tool rather than guessing.


How it Connects

Tool --> Agent (via agent_tools_junction) | +-- args, arg_positions, args_outputs +-- operations, artifacts
  • Agents use tools through the agent_tools_junction. An agent can have multiple tools, and a tool can be shared across agents.
  • Tools are independent of models, providers, rubrics, and evals. They connect only to agents.
  • The search endpoint supports filtering by filter_agent_ids to find tools used by a specific agent.

Create a tool

Via the CLI

Calls below use $GLOW_INSTANCE_URL + $GLOW_TOKEN — see Authentication to export them once.

glow tools create --body '{ "tools": [{ "name": "check_enrollment", "description": "Verify whether a student is enrolled in a given course section" }] }'

Via the API

curl -X POST $GLOW_INSTANCE_URL/tool/create \ -H "Authorization: Bearer $GLOW_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "tools": [{ "name": "lookup_course_policy", "description": "Look up course-specific policies such as late submission rules, attendance requirements, and grading criteria" }] }'

Each entry returns the new tool_id, a generated draft_id, and the initial version.


Defining arguments and outputs

Tool arguments specify what data the tool needs to operate. For example, a check_deadline tool might accept a course_id and an assignment_type argument. Arguments are managed through arg_ids on the tool’s configuration.

When you retrieve a tool with GET, the response includes:

  • args — the argument section with current and available argument resources
  • arg_positions — defines the ordering of arguments
  • args_outputs — defines the structure of data the tool returns

Example: University Course Policy Lookup

A lookup_course_policy tool might be configured with:

ArgumentTypeDescription
course_idstringThe course identifier (e.g., “CS101”)
policy_typestringCategory of policy: “late_work”, “attendance”, “grading”, “academic_integrity”

The tool would return the matching policy text, which the agent uses to answer the student’s question accurately.


Invocation surface

The tool’s operations and artifacts describe what actually runs when an agent calls it. Operations bind the tool to a callable in the platform; flags control whether the tool is currently usable.

Tools support feature flags through flag_ids that control behavior such as:

  • Whether the tool is active and available for agent use
  • Whether the tool is creatable by certain user roles
  • AI generation settings for arguments and outputs

The search endpoint includes a creatable_filter section for filtering tools by creatability status. Use filter_creatable in search requests to narrow results.


The draft cycle

Tools support a draft workflow for staging changes before they affect running simulations. This is useful when adding new arguments to a tool or modifying its operation logic.

# Create or update a tool draft glow tools draft --body '{ "name": "check_enrollment_v2", "description": "Enhanced enrollment check with section-level detail", "arg_ids": ["COURSE_ID_ARG_UUID", "SECTION_ARG_UUID"], "operation_ids": ["ENROLLMENT_LOOKUP_OP_UUID"] }' # List your drafts glow tools list

The draft endpoint uses PATCH semantics with optimistic concurrency via expected_version. The response returns draft_id, new_version, and a form_state reflecting all resolved field values.


Search & filter

glow tools search --body '{"search": "policy"}' glow tools search --body '{ "filter_agent_ids": ["agent-uuid"], "filter_creatable": true, "page_size": 25 }'

Bulk operations

Bulk delete and update follow the canonical all-matching shape — explicit IDs, or all: true with flat filter fields plus optional excluded_ids and a patch body. The persona surface is the prove-out; tools follow the same shape.

Delete by explicit IDs:

glow tools delete --body '{ "tool_ids": ["tool-1", "tool-2"] }'

Delete all matching a filter (with exclusions):

glow tools delete --body '{ "all": true, "filter_agent_ids": ["agent-deprecated-uuid"], "excluded_ids": ["tool-still-needed"] }'

Bulk update via patch:

glow tools update --body '{ "all": true, "filter_creatable": false, "patch": { "archived": true } }'

Common Operations

TaskCLIAPI Endpoint
List all toolsglow tools searchPOST /tool/search
Get tool detailsglow tools get --body '{"tool_id": "..."}'POST /tool/get
Create toolglow tools create --body '{...}'POST /tool/create
Update toolglow tools update --body '{"tool_id": "...", ...}'POST /tool/update
Duplicate toolPOST /tool/duplicate
Delete tool(s)glow tools delete --body '{"tool_id": "..."}'POST /tool/delete
Bulk delete (filter)glow tools delete --body '{"all": true, "filter_…": "…"}'POST /tool/delete
Export to CSVglow tools exportPOST /tool/export
Stage a draftglow tools draft --body '{...}'PATCH /tool/draft
List draftsglow tools listPOST /tool/drafts

Last updated on