Agent Tools
The canonical reference catalog of Oxagen agent tools — every callable capability, grouped by family, with surfaces (app · mcp · api), credit costs, and policies.
The canonical reference for everything the Oxagen agent can do. For the why and how — one registry, three call sites — see Agent Overview.
Each table below lists the tool name, the surfaces it's exposed on, the credit cost per successful call, and a one-line description. Costs and policies are pulled from the live registry; if a number here disagrees with the dashboard, the dashboard wins.
Capability platform
Every tool below is registered through one shared capability layer. Whether you call a tool from the in-app chat, an MCP client, or the REST surface, the same registry runs validation, permission checks, credit reservation, and result caching.
| Surface foundation | What it gives you |
|---|---|
Typed kind classification | Every capability declares read / write / generate / external_io / dispatch. Adapters render the right UI (e.g. confirmation cards for write) and downstream logs route by category. |
| Connection-scope binding | A capability that needs Google Workspace, a specific Kafka cluster, or any other external connection declares its connection_kind. The registry rejects the call in workspaces that haven't connected it, and auto-resolves when exactly one active connection of that kind exists. Ambiguity (zero or many candidates) returns a 409 with the candidate list so the caller can pass an explicit connection_id. |
| Idempotency keys | Pass an Idempotency-Key header on the REST surface (or the equivalent argument on MCP). A retried non-read capability returns the cached result for 24h instead of duplicating the side-effect. Pure reads ignore the key — their response is already deterministic. |
| Dynamic registration | External MCP servers and workspace-defined custom tools register into the same registry as built-ins, scoped to a single workspace. A dynamic capability shadows a static one of the same name for that workspace. |
These four guarantees are why every tool in the tables below can be called identically from chat, MCP, and REST.
Ontology — read
The agent's most-used tools. Search, fetch, and list typed entities and relationships in your workspace knowledge graph.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
ontology.search | app · mcp · api | 1 | Hybrid (vector + keyword + label) search over workspace nodes |
ontology.ask | app · mcp · api | 5 | Natural-language question over the workspace; returns a grounded answer with node citations |
ontology.get_node | app · mcp | 0 | Fetch a node by UUID or (file_path, name) |
ontology.get_edge | app · mcp · api | 0 | Fetch an edge by UUID |
ontology.list_nodes | app · mcp | 0 | List nodes filtered by type with optional keyword |
ontology.list_edges | app · mcp | 0 | List edges filtered by type, source, or target |
ontology.list_types | app · mcp | 0 | List every node and edge type registered in the workspace |
ontology.get_schema | app · mcp | 1 | Return the workspace's typed schema for prompt grounding |
ontology.run_cypher | app · mcp | 3 | Execute a read-only Cypher query against the Neo4j-backed graph |
ontology.find_merge_candidates | app · mcp | 2 | Find probable duplicate nodes within a type |
ontology.family_tree | app · mcp · api | 2 | Walk relationships outward from a node up to N hops |
Ontology — write
Typed writes against the graph. The agent uses these to record what it
learned in a conversation so the next session has it too. Destructive
writes (merge_nodes, delete_*) require explicit user confirmation
in the chat UI.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
ontology.create_node | app · mcp | 2 | Idempotent create of a typed node (exact-match dedupe; ambiguous matches prompt for confirmation) |
ontology.update_node | app · mcp | 2 | Update node properties |
ontology.create_edge | app · mcp | 1 | Create a directed, typed edge between two nodes |
ontology.update_edge | app · mcp | 1 | Update edge properties |
ontology.attach_type | app · mcp | 1 | Add a type label to an existing node |
ontology.add_alias | app · mcp | 1 | Register an alternate name for a node so future searches resolve it |
ontology.delete_node | app · mcp · api | 2 | Soft-delete a node |
ontology.delete_edge | app · mcp · api | 2 | Soft-delete an edge |
ontology.delete_type | app · mcp · api | 2 | Delete a node or edge type definition |
ontology.rename_type | app · mcp · api | 2 | Rename a node or edge type |
ontology.merge_nodes | app · mcp | 5 | Merge two nodes; reassigns edges and aliases |
Graph algorithms
Requires a Neo4j-routed workspace.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
ontology.pagerank | mcp | 3 | Top-k nodes by PageRank centrality |
ontology.communities | mcp | 3 | Partition the graph into communities via Louvain or label propagation |
ontology.traverse | mcp | 3 | Enumerate paths reachable from a node within N hops |
Code graph
Available once a GitHub connection has ingested code into the workspace.
These tools traverse the typed code graph (File, Function, Class,
Module, plus CALLS, IMPORTS, DEFINES, READS, WRITES edges)
and are how the agent answers questions like "what calls
processPayment and what tests cover it?".
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
code.find_symbol | app · mcp | 1 | Locate the canonical node for a symbol by name |
code.read_symbol | app · mcp | 1 | Return the source body and metadata for a symbol |
code.describe_symbol | app · mcp | 1 | Compose a short description of a symbol from graph context |
code.callers_of | app · mcp | 1 | List functions that call a target symbol |
code.callees_of | app · mcp | 1 | List functions called by a target symbol |
code.references_to | app · mcp | 1 | List every reference to a symbol (calls, imports, attribute reads) |
code.dependencies | app · mcp | 1 | Direct dependencies (calls + imports) of a symbol |
code.dependency_graph | app · mcp | 2 | Bidirectional dependency graph rooted at a symbol |
code.dependency_path | app · mcp | 2 | Shortest dependency path between two symbols |
code.affected_by | app · mcp | 2 | Reverse traversal — every symbol affected by a change to the target |
code.module_tree | app · mcp | 1 | Directory / module hierarchy of the workspace |
code.repo_overview | app · mcp | 1 | High-level summary of a repository — primary languages, top modules, hotspots |
code.find_pattern | app · mcp | 1 | Find symbols matching a structural pattern |
code.find_issues | app · mcp | 1 | Detect dead code, cycles, unused exports, missing tests |
code.expertise | app · mcp | 1 | Who has worked most on a symbol (blame + PR history weighted) |
code.who_knows_about | app · mcp | 1 | Same, indexed by domain rather than symbol |
code.co_changes_with | app · mcp | 1 | Symbols that historically change in the same commits |
code.blame_enriched | app · mcp | 1 | Blame info with author + PR + issue context attached |
code.recent_changes | app · mcp | 1 | Recent commits touching a path or symbol |
code.pr_context | app · mcp | 1 | PR title, body, reviewers, and CI status for the commit that introduced a symbol |
code.pr_history | app · mcp | 1 | Every PR that touched a symbol or path |
code.issue_context | app · mcp | 1 | Linked issues / tickets discovered via PR description scrape |
code.discussion_context | app · mcp | 1 | Inline review comments and PR discussion attached to a symbol |
ontology.explain_function | app · mcp · api | 2 | Full signature + callees + exception types + tests in one call |
ontology.impact_of | app · mcp · api | 2 | Reverse traversal — what reads/writes/depends on a symbol |
ontology.symbol_context | app · mcp · api | 3 | One-call laser context: definition, callers, tests, recent changes |
CI / test layer
Available when the workspace has a CI integration connected.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
code.last_run | mcp | 1 | Most recent CI run for a branch or PR |
code.run_failures | mcp | 1 | Failing steps in a given run |
code.tests_for | mcp | 1 | Tests that cover a target symbol |
code.coverage_for | mcp | 1 | Line / branch coverage for a target |
code.failing_tests | mcp | 1 | Currently failing tests on a branch |
code.flaky_tests | mcp | 1 | Tests with high pass/fail flip rate |
code.find_dead_code | mcp | 1 | Symbols with no inbound references — focused single-concern list, unlike the mixed report from code.find_issues |
code.find_cycles | mcp | 1 | Circular dependency chains — focused single-concern list, unlike the mixed report from code.find_issues |
Code — write
The single primitive that lets an agent propose a code change rather than describe one. The agent opens a draft pull request against the target repo; nothing merges automatically.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
code.apply_patch | app · mcp | 10 | Open a draft PR carrying a unified diff or list of (path, old, new) patches. Returns the PR URL and head SHA. Requires user confirmation in the chat UI. |
Memory
Durable agent memory — patterns the agent has learned, procedures it has been taught, and recent work it should remember. See Agent Memory for the deeper model.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
memory.recall | app · mcp · api | 1 | Hybrid retrieval of memory nodes for a prompt |
memory.list_recent | app · mcp | 0 | Most recent work-memory nodes attached to a target |
memory.write | app · mcp | 1 | Persist a new memory node from the agent's working context |
memory.remember | app · mcp · api | 2 | Explicit "remember this" — promotes a finding to a durable memory node |
memory.forget | app · mcp · api | 2 | Erase a memory node (soft-delete, audit-logged) |
memory.procedure_for | app · mcp · api | 1 | Retrieve a stored procedure by trigger pattern |
memory.search | mcp | 1 | Semantic search across _mem:* action and pattern nodes |
memory.context | mcp | 1 | Memory context for a given prompt (pre-execution injection) |
memory.annotate | mcp | 1 | Attach a manual annotation to a memory node |
Agent sessions
Multi-agent coordination primitives. When two agents work the same workspace concurrently, these tools prevent them from stepping on each other's writes.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
agent.start_session | app · mcp · api | 1 | Open a named session and return a session_id |
agent.heartbeat | app · mcp · api | 0 | Keep a session alive; the reaper abandons sessions idle >60 min |
agent.end_session | app · mcp · api | 1 | Close a session and cascade active claims to abandoned |
agent.claim_work | app · mcp · api | 1 | Exclusive claim on a node + ancestors + descendants up to depth 5 |
agent.release_claim | app · mcp · api | 1 | Release a claim so another agent can pick the node up |
agent.list_active_claims | app · mcp · api | 0 | List active claims in the workspace |
agent.record_finding | app · mcp · api | 1 | Attach a typed finding (severity, category, evidence) to a node |
agent.get_findings | app · mcp · api | 0 | List findings on a node, optionally filtered by severity |
agent.schedule_create | app · mcp | 0 | Schedule a future agent run (requires user confirmation) |
agent.schedule_list | app · mcp | 0 | List scheduled runs in the workspace |
agent.schedule_delete | app · mcp | 0 | Cancel a scheduled run (requires user confirmation) |
Workspace + tenant
Light-touch tools the agent uses to read or update workspace-level configuration.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
workspace.list_labels | app · mcp | 1 | List labels defined in the workspace |
workspace.set_label | app · mcp | 2 | Apply a label to a node |
tenant.get_settings | app · mcp | 1 | Read tenant-level settings the agent is allowed to see |
tenant.update_settings | app · mcp | 3 | Update tenant settings (requires owner role) |
billing.credits_balance | mcp · api | 0 | Check the workspace credit balance |
Web
A narrow outbound surface so the agent can pull in external context when answering a question.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
web.search | app · mcp | 1 | Public web search |
web.fetch_url | app · mcp | 2 | Fetch and clean the body of a URL |
Notify
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
notify.dispatch | app · mcp | 1 | Send a structured notification to a pre-configured channel (webhook / Slack / email). Uses your existing signed-webhook config; idempotent by dedupe_key. |
Visualization (app surface only)
Used by the chat agent to render an inline visualization inside an assistant message. Not available on MCP — your IDE renders its own UI.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
viz.render_graph | app | 1 | Render an interactive graph (Cytoscape.js) |
viz.render_table | app | 0 | Render a sortable, paginated table |
viz.render_chart | app | 1 | Render a chart (line / bar / scatter, Recharts) |
Security
Available when GitHub code scanning, Dependabot, or Semgrep is connected to the workspace.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
security.open_alerts | app · mcp | 0 | List currently open security alerts |
security.alert_context | app · mcp | 0 | Full context for an alert — affected symbol, blame, related PRs |
Tool policies
Every tool carries a policy that determines whether it can run
silently or must prompt the user first. The chat UI surfaces a
confirmation card for anything stricter than auto.
| Policy | Meaning |
|---|---|
read_only | No side effects. Always runs silently. |
auto | Has side effects but the workspace owner has opted into auto-execution. Runs silently. |
confirm_maybe | Runs silently when the action is unambiguous (exact-match dedupe hit). Prompts for confirmation when ambiguous. ontology.create_node is the canonical example. |
confirm | Always prompts for confirmation before running. Used by destructive writes, scheduling, and code.apply_patch. |
write | Explicit write that is gated by the workspace's write permission, but doesn't necessarily prompt — the agent has to declare intent in the assistant turn. |
Confirmation cards arrive in the chat as a structured oxagen_confirm
part — the user clicks Approve or Decline in-thread and the
server executes the pending tool call.
Credits
Credits are reserved before a tool runs and refunded automatically if the handler errors. A failed call costs nothing; a successful call deducts the cost shown in the table.
Buy credits from the Oxagen web app at Settings → Billing. The Pro plan includes a monthly credit allowance; overage is billed month-to-month. Enterprise plans include configurable credit budgets, per-user caps, and a real-time spend dashboard.
Calling tools yourself
If you want to invoke a tool outside the agent loop — say from a Celery job that needs the same dedupe semantics as the agent — every capability is also a REST endpoint.
curl -X POST https://api.oxagen.ai/v1/cap/ontology.search \
-H "Authorization: Bearer $OXAGEN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "validateCard",
"top_k": 20
}'The full schema for every capability is published at
https://api.oxagen.ai/openapi.json and rendered in the
API Explorer.
Documents, slides, sheets
Agent-authored artifacts in Google Workspace. The
connection_kind="google_workspace" binding resolves the workspace's
active OAuth grant; calls in workspaces without a connected Google
account return a 409 with the missing-connection details.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
docs.create_from_spec | app · mcp · api | 5 | Create a Google Doc from a typed DocumentSpec — headings, paragraphs, lists, tables, images. Returns the doc URL and external id. See Document generation. |
docs.append | app · mcp · api | 2 | Append validated blocks to an existing doc. |
docs.replace_placeholders | app · mcp · api | 2 | Fill {{placeholder}} tokens inside a doc — used by the agent to expand a templated brief. |
docs.share | app · mcp · api | 1 | Grant a list of emails reader / commenter / writer access. |
sheets.create_from_spec | app · mcp · api | 5 | Create a Google Sheet from a SheetSpec — typed headers, formatted columns, freeze panes. See Spreadsheets. |
sheets.append_rows | app · mcp · api | 2 | Append rows to the first sheet. |
sheets.write_range | app · mcp · api | 2 | Write a 2-D value matrix into an A1 range (e.g. Sheet1!A1:C3). |
sheets.insert_chart | app · mcp · api | 2 | Insert a chart from a typed ChartSpec. |
sheets.share | app · mcp · api | 1 | Grant access at the chosen role. |
slides.create_from_spec | app · mcp · api | 5 | Create a Google Slides deck from a SlideDeckSpec — layouts, body content, speaker notes. See Slides. |
slides.append_slide | app · mcp · api | 2 | Append one slide to an existing deck. |
slides.replace_placeholders | app · mcp · api | 2 | Fill {{placeholder}} tokens across the deck. |
slides.share | app · mcp · api | 1 | Grant access at the chosen role. |
PDF export
Generic LibreOffice-backed PDF conversion. Accepts any office document (Google Docs / Slides / Sheets export, Word, PowerPoint, Excel, ODT) and returns PDF bytes plus page count. See PDF generation.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
docs.export_pdf | app · mcp · api | 3 | Render a generated Google Doc to PDF. |
sheets.export_pdf | app · mcp · api | 3 | Render a generated Google Sheet to PDF. |
slides.export_pdf | app · mcp · api | 3 | Render a generated Google Slides deck to PDF. |
pdf.convert | app · mcp · api | 2 | Convert a workspace document (uploaded or generated) to PDF via LibreOffice. Bytes land in app.documents with source='agent_generated'. |
Branding
Per-workspace brand kits — palette, typography, spacing, logo, favicon, watermark, voice doc, footer. Every artifact tool above picks up the active kit automatically when present. See Brand kits.
| Tool | Surfaces | Credits | What it does |
|---|---|---|---|
branding.list_kits | app · mcp · api | 0 | List every brand kit in the workspace. |
branding.get_active_kit | app · mcp · api | 0 | Return the active default kit, including palette / typography / spacing tokens and asset references. |
branding.set_active_kit | app · mcp · api | 1 | Mark a brand kit as the active default (requires owner role). |
Agent Overview
How the Oxagen agent reaches your workspace — one tool registry, three call sites (in-app chat, MCP, and the REST API) — and a map of every capability surface.
Agent Memory
How Oxagen's agent memory layer works — durable, self-improving memory built into the workspace graph so agents stop repeating mistakes and get measurably better over time.