The manifest

The running jobjob_7Hq2 · working · $49.00 held

The whole definition as JSON, every default written and money in cents. Every surface reads it, and nothing else.

manifest(), from services.dev/manifest, turns a Service into JSON. Every surface renders it: the API, the CLI, the MCP server, the SDK, the Site, the docs and the apps. GET /manifest.json serves every Service's.

magic values: none
{
  "id": "translation",
  "name": "Translation",
  "description": "Translation: send a document and a language; get a document back.",
  "input": {"type":"object","properties":{"document":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"}},"required":["url","name"],"x-word":"file"},"to":{"type":"string","description":"a BCP 47 tag, such as fr-CA","x-word":"language"}},"required":["document","to"]},
  "output": {"type":"object","properties":{"document":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"}},"required":["url","name"],"x-word":"file"}},"required":["document"]},
  "deliver": [{"step":"draft","by":"ai","brief":"services/translation.md"}],
  "review": "adversarial",
  "human": {"sentence":"AI delivers every job."},
  "price": {"per":"job","cents":4900,"within":"48h","ai_cap":"20%","final_after":"7d","charged":"on delivery","sentence":"$49 per job, within 48 hours, charged on delivery."},
  "surfaces": {"site":"/translation","route":"POST /jobs {\"service\":\"translation\"}","tool":"order_translation","description":"Translation: send a document and a language; get a document back. $49 per job, within 48 hours, charged on delivery. AI delivers every job.","cli":"npx services.dev translation k=v …","sdk":"connect({ origin }).translation.order(input)","docs":"/llms.txt","apps":[{"name":"customer portal","path":"/portal"},{"name":"owner console","path":"/console"}]}
}
magic values: none
$ curl http://localhost:8787/manifest.json   # checked-translation
{
  "id": "checked-translation",
  "name": "Checked Translation",
  "description": "Checked Translation: send a document and a language; get a document and a match back.",
  "input": {"type":"object","properties":{"document":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"}},"required":["url","name"],"x-word":"file"},"to":{"type":"string","description":"such as de","x-word":"language"}},"required":["document","to"]},
  "output": {"type":"object","properties":{"document":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string"}},"required":["url","name"],"x-word":"file"},"match":{"type":"number","x-word":"number"}},"required":["document","match"]},
  "deliver": [{"step":"translate","by":"ai","brief":"services/checked-translation.md","guard":["match"]},{"step":"proof","by":"person","role":"proofreader","guard":["match"]}],
  "review": "adversarial",
  "human": {"sentence":"A proofreader does the proof step."},
  "portal": "proofreaders",
  "policy": {"match":{"word":"number","default":0,"min":0,"max":1,"binds":"merits","note":"the least back-translation match the client accepts"},"turnaround":{"word":"number","default":2,"min":1,"max":10,"note":"days the work may take"}},
  "price": {"per":"job","cents":7900,"payout_cents":2500,"within":"48h","ai_cap":"20%","final_after":"7d","charged":"on delivery","sentence":"$79 per job, within 48 hours, charged on delivery."},
  "surfaces": {"site":"/checked-translation","route":"POST /jobs {\"service\":\"checked-translation\"}","tool":"order_checked_translation","description":"Checked Translation: send a document and a language; get a document and a match back. $79 per job, within 48 hours, charged on delivery. A proofreader does the proof step.","cli":"npx services.dev checked-translation k=v …","sdk":"connect({ origin }).checkedTranslation.order(input)","docs":"/llms.txt","apps":[{"name":"customer portal","path":"/portal"},{"name":"delivery portal","path":"/proofreaders"},{"name":"owner console","path":"/console"}]}
}
KeyIn the four linesIn Checked Translation
idyesyes
nameyesyes
descriptionyesyes
inputyesyes
outputyesyes
deliveryesyes
reviewyesyes
humanyesyes
priceyesyes
surfacesyesyes
portalyes
policyyes

input and output are JSON Schema, each field marked with its type word as x-word. An option you didn't set is left out. Money is integer cents.