Weekly new-model watcher as a Sume schedule: schema without links
A scheduled watcher that lists new AI models fails if its output schema holds vendor page URLs. Use host-only fields and read each run with the actions API.

A weekly Sume schedule can watch for new model launches and return them as a typed list, but its output schema must not ask for vendor page URLs. Sume checks every URL in output against media the run actually produced, so a link to a vendor blog fails the projection. Use a source_host field with no scheme instead.
What a schedule gives you
A schedule is a saved Agents automation with instructions, a model, a 5-field cron expression with an IANA timezone, and a spend cap. You create it in the dashboard, because the Developer API can list, read and start schedules but not create or edit them. The cadence runs a fresh thread each time and returns a run receipt.
The trap in a watcher schema
Say the instructions tell the agent to look for model launches in the last seven days, such as Microsoft's MAI-Voice-2.1 and MAI-Voice-2.1-Flash. The natural schema asks for a source_url. That field is the trap. The URL gate collects every http(s) string at any depth and rejects any not produced by the run, so the whole output becomes null with output_schema_unsatisfied.
A schema that passes the gate
Bind this schema in the dashboard and name the primary key new_models. Every property is in required, optional values are nullable, and the host replaces the link. Add no minItems, because a quiet week should return an empty list, not a failure.
| Field | Type | Example |
|---|---|---|
| vendor | string | Microsoft AI |
| model | string | MAI-Voice-2.1-Flash |
| kind | enum: video, image, audio, agent, other | audio |
| summary | string | Low-latency text to speech |
| source_host | string or null | microsoft.ai |
| checked_on | string | 2026-10-05 |
{
"name": "acme/model-watch/v1", "strict": true,
"schema": {
"type": "object", "additionalProperties": false,
"required": ["new_models"],
"properties": {"new_models": {"type": "array", "items": {
"type": "object", "additionalProperties": false,
"required": ["vendor", "model", "kind", "summary", "source_host"],
"properties": {
"vendor": {"type": "string"}, "model": {"type": "string"},
"kind": {"type": "string", "enum": ["video", "image", "audio", "agent", "other"]},
"summary": {"type": "string"},
"source_host": {"type": ["string", "null"]}}}}}
}
}Read the runs
Run history is one call. GET /v1/actions/{action_id}/runs pages newest first, and each receipt carries status, output and output_error. The script prints new models from completed runs and reports any run whose projection failed, so a schema problem never hides as an empty week.
import json, os, urllib.request
def get(path):
req = urllib.request.Request("https://api.sume.com" + path,
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]})
with urllib.request.urlopen(req) as r:
return json.load(r)
def main():
action_id = os.environ["ACTION_ID"]
runs = get("/v1/actions/" + action_id + "/runs?limit=5")["data"]
for run in runs:
if run["output_error"]:
print(run["id"], "projection failed:", run["output_error"]["code"])
elif run["status"] == "completed" and run["output"]:
for m in run["output"]["new_models"]:
print(m["vendor"], m["model"], m["kind"])
main()Cost and cap
The default generation cap for a schedule is $1.00 per run if you set none, and an API caller can only lower it. That cap covers generation spend, not the agent's own LLM turn, which bills a separate wallet. A watcher that only reads and writes text generates no media, so its receipt cost is the number to watch, not a video bill.
Sources
Related posts
More in Agents
- Weekly trend video schedule stops early: the $1.00 default cap
A Sume schedule with no spend cap runs with $1.00 of generation per run, so a weekly video run can stop after a clip. Set the cap to fit the plan.
- Which Sume key scope starts a Format, schedule or agent run
formats:write starts a Format run, actions:write a schedule run, agent_completions:write an agent run. Older keys lack them, and service keys can't start some.
- Why the Sume API hides a schedule's instructions text
GET /v1/actions returns the cron, model, cap and schema of a Sume schedule but not its instructions text. Read and edit instructions in the dashboard.
- Run the Sume video agent from your backend with Agent Completions
POST /v1/agent/completions runs the same agent as the Sume Agents chat, with tools and media generation, and returns an async run receipt you poll or webhook.
Written by Sume