waterr-ai · Schema
CustomFunction
A tool the LLM can call mid-meeting. Defined once on your account, attached to one or more scenarios.
CompanyArtificial IntelligenceMeetingsVideoAutomation
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Tool UUID. Generated by the server. |
| membership_id | string | Account that owns the tool. |
| name | string | Function name the LLM calls. Letters, digits, `_`, `-`. Max 64. Unique per account. |
| description | string | One-sentence prompt that tells the LLM when to call this tool. Shown verbatim to the model. |
| parameters_schema | object | JSON Schema for the arguments. Top-level type must be `"object"`. |
| execution_mode | string | `webhook` — we POST the call to `webhook_url` and use the response. `client` — your frontend handles the call. |
| webhook_url | stringnull | Where we POST the tool call. Required when `execution_mode = "webhook"`. |
| has_webhook_secret | boolean | True if a signing secret is set. The secret itself is returned once — on create (when we mint it) and on rotate — and never again. |
| webhook_secret_rotated_at | stringnull | When the signing secret was last rotated. `null` if never. |
| timeout_ms | integer | Max wait for your webhook to respond, in ms. Range 1000–30000. |
| on_call | string | What the persona does WHILE the tool runs. `silent` (default) — go quiet. `static_filler` — speak the exact `static_filler` phrase. `generate_filler` — pick from a generic pool ("let me check on that" |
| static_filler | stringnull | Phrase the persona speaks while the tool runs. Required when `on_call = "static_filler"`. Must be null otherwise. |
| on_resolve | string | What to do with the tool result AFTER it returns. `generate_response` (default) — feed to LLM, persona speaks about it. `add_to_context` — stash silently, no follow-up turn. `response_in_result` — spe |
| tool_spec | object | Read-only. The OpenAI-shaped spec the LLM sees: `{ type, function: { name, description, parameters } }`. |
| created_at | string | |
| updated_at | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/waterr-ai/json-schema/waterr-ai-custom-function-schema.json",
"title": "CustomFunction",
"description": "A tool the LLM can call mid-meeting. Defined once on your account, attached to one or more scenarios.",
"x-generated": "2026-10-31",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/waterr-ai-api-openapi.yml#/components/schemas/CustomFunction",
"type": "object",
"required": [
"id",
"name",
"description",
"parameters_schema",
"execution_mode",
"has_webhook_secret",
"timeout_ms",
"tool_spec"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"description": "Tool UUID. Generated by the server."
},
"membership_id": {
"type": "string",
"format": "uuid",
"description": "Account that owns the tool."
},
"name": {
"type": "string",
"maxLength": 64,
"pattern": "^[a-zA-Z0-9_-]{1,64}$",
"description": "Function name the LLM calls. Letters, digits, `_`, `-`. Max 64. Unique per account."
},
"description": {
"type": "string",
"description": "One-sentence prompt that tells the LLM when to call this tool. Shown verbatim to the model."
},
"parameters_schema": {
"type": "object",
"description": "JSON Schema for the arguments. Top-level type must be `\"object\"`.",
"default": {
"type": "object",
"properties": {},
"required": []
}
},
"execution_mode": {
"type": "string",
"enum": [
"webhook",
"client"
],
"default": "webhook",
"description": "`webhook` — we POST the call to `webhook_url` and use the response. `client` — your frontend handles the call."
},
"webhook_url": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "Where we POST the tool call. Required when `execution_mode = \"webhook\"`."
},
"has_webhook_secret": {
"type": "boolean",
"description": "True if a signing secret is set. The secret itself is returned once — on create (when we mint it) and on rotate — and never again."
},
"webhook_secret_rotated_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "When the signing secret was last rotated. `null` if never."
},
"timeout_ms": {
"type": "integer",
"minimum": 1000,
"maximum": 30000,
"default": 10000,
"description": "Max wait for your webhook to respond, in ms. Range 1000–30000."
},
"on_call": {
"type": "string",
"enum": [
"generate_filler",
"static_filler",
"silent",
"passthrough"
],
"default": "silent",
"description": "What the persona does WHILE the tool runs. `silent` (default) — go quiet. `static_filler` — speak the exact `static_filler` phrase. `generate_filler` — pick from a generic pool (\"let me check on that\"). `passthrough` — silent + skip LLM follow-up on the result."
},
"static_filler": {
"type": [
"string",
"null"
],
"description": "Phrase the persona speaks while the tool runs. Required when `on_call = \"static_filler\"`. Must be null otherwise."
},
"on_resolve": {
"type": "string",
"enum": [
"generate_response",
"response_in_result",
"add_to_context",
"fire_and_forget"
],
"default": "generate_response",
"description": "What to do with the tool result AFTER it returns. `generate_response` (default) — feed to LLM, persona speaks about it. `add_to_context` — stash silently, no follow-up turn. `response_in_result` — speak the result verbatim (Gemini Live: degrades to add_to_context). `fire_and_forget` — don't wait for the result at all."
},
"tool_spec": {
"type": "object",
"description": "Read-only. The OpenAI-shaped spec the LLM sees: `{ type, function: { name, description, parameters } }`."
},
"created_at": {
"type": "string",
"format": "date-time"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/waterr-ai-custom-function"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.