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_idsto 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 resourcesarg_positions— defines the ordering of argumentsargs_outputs— defines the structure of data the tool returns
Example: University Course Policy Lookup
A lookup_course_policy tool might be configured with:
| Argument | Type | Description |
|---|---|---|
course_id | string | The course identifier (e.g., “CS101”) |
policy_type | string | Category 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 listThe 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
| Task | CLI | API Endpoint |
|---|---|---|
| List all tools | glow tools search | POST /tool/search |
| Get tool details | glow tools get --body '{"tool_id": "..."}' | POST /tool/get |
| Create tool | glow tools create --body '{...}' | POST /tool/create |
| Update tool | glow tools update --body '{"tool_id": "...", ...}' | POST /tool/update |
| Duplicate tool | — | POST /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 CSV | glow tools export | POST /tool/export |
| Stage a draft | glow tools draft --body '{...}' | PATCH /tool/draft |
| List drafts | glow tools list | POST /tool/drafts |
Related
- Tools API Reference — full endpoint and type documentation
- Tools CLI Reference — all CLI commands
- Models Guide — models that power the agents using these tools
- Rubrics Guide — rubrics that score agent behavior alongside tool usage