Skip to main content
Glama

oto_function

FUNCTIONS: pure code stored and run by Oto for an exact, deterministic calculation (JSON in → JSON result, warnings and files out). A function reads nothing from Oto, calls no network and sees no secret: pass it everything it needs in input. op=run (slug, input, project = where to store the files it produces → result, warnings, files with a signed download_url) runs the PUBLISHED version only · op=list · op=get (slug, optional version: default the published one, else the latest) · op=versions (history, without code) · op=create (slug, title, description, sources, entrypoint, requirements, note → version 1, PROPOSED) · op=propose (slug, expected_version = the latest version you read, sources, entrypoint, requirements, note → next version, PROPOSED). sources is {filename: content} — flat .py modules (tests are test_*.py, plain functions named test_*) and .json data. A proposed version never runs until it is tested and published (op=test/publish/refuse, by a person in scope: never from a hosted agent). Scope: your active org (default) or scope='user'. PROVISIONAL surface.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "op": "<op>"
    },
    "name": "oto_function"
  }
}

Input Schema

NameRequiredDescriptionDefault
opYes
orgNo
_orgNo
noteNo
slugNo
inputNo
scopeNo
titleNo
projectNo
sourcesNoFiles of this version, {filename: content}: flat `.py` modules (tests are `test_*.py`) and `.json` data files.
versionNo
entrypointNo`module:function`, called with the input and returning {result, warnings, files}.
descriptionNo
requirementsNo
expected_versionNo

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full behavioral burden and does it well: discloses the sandbox guarantees (reads nothing from Oto, no network, no secrets, everything must arrive via `input`), that op=run only executes the PUBLISHED version, the proposed→tested→published lifecycle, and that publish/refuse must be performed by a person, never a hosted agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the concept in the first sentence and then enumerates ops with a consistent '·' delimiter, so every clause carries information. It is extremely dense — a single packed paragraph with heavy parenthetical asides — which costs some scannability but not correctness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the mutation and run semantics thoroughly for a 15-parameter multiplexer, including the shape of run's return values (result, warnings, files with signed download_url). However, return shapes for the other ops (get, versions, list) are not described and there is no output schema, leaving the read-side behavior partly unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 13%, so the description must compensate and largely does: it defines the meaning of slug, input, project (where produced files land), version (defaults to published, else latest), sources (flat .py plus test_*.py and .json), entrypoint, requirements, note, expected_version and scope (org default vs user). Only minor gaps remain, such as org/_org and title not being explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('pure code stored and run by Oto for an exact, deterministic calculation') plus the contract (JSON in → JSON result, warnings and files out). This clearly separates it from siblings like oto_shell or oto_recipe without requiring the schema to be opened.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Effectively routes the agent across all nine ops with terse definitions (run/list/get/versions/create/propose/test/publish/refuse) and states the hard gate that a proposed version never runs until tested and published by a person in scope. It does not explicitly compare against alternative siblings (e.g. oto_shell or oto_recipe) for similar calculation tasks, so the exclusion guidance is implicit rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources