{"openapi":"3.1.0","info":{"title":"Extcord","description":"Agent-first utility gateway. Start at GET / or /.well-known/agent.json. MCP clients: connect to /mcp (streamable HTTP).","version":"0.7.0"},"paths":{"/.well-known/agent.json":{"get":{"summary":"Service manifest for agents","operationId":"well_known__well_known_agent_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/benchmark":{"get":{"summary":"Measured token savings, on real snapshots","operationId":"benchmark_benchmark_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/privacy":{"get":{"summary":"Privacy and acceptable use","operationId":"privacy_privacy_get","responses":{"200":{"description":"Successful Response","content":{"text/html":{"schema":{"type":"string"}}}}}}},"/llms.txt":{"get":{"summary":"Markdown overview for language models","operationId":"llms_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"summary":"The full catalog: every op with args and an example, and the recipes","operationId":"llms_full_llms_full_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/types":{"get":{"summary":"The value types handles can have","operationId":"types_types_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ops":{"get":{"summary":"List or search operations","operationId":"list_ops_ops_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Words describing what you want to do","title":"Q"},"description":"Words describing what you want to do"},{"name":"accepts","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Only ops that accept this input type","title":"Accepts"},"description":"Only ops that accept this input type"},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/ops/{op_id}":{"get":{"summary":"An operation's full contract","operationId":"op_contract_ops__op_id__get","parameters":[{"name":"op_id","in":"path","required":true,"schema":{"type":"string","title":"Op Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Run one operation","operationId":"invoke_ops__op_id__post","parameters":[{"name":"op_id","in":"path","required":true,"schema":{"type":"string","title":"Op Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvokeBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/h":{"post":{"summary":"Store a value as a handle","operationId":"create_handle_h_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HandleBody"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/h/{handle_id}":{"get":{"summary":"A handle's summary and next steps","operationId":"get_handle_h__handle_id__get","parameters":[{"name":"handle_id","in":"path","required":true,"schema":{"type":"string","title":"Handle Id"}},{"name":"inline_max_tokens","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":0,"default":300,"title":"Inline Max Tokens"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/h/{handle_id}/value":{"get":{"summary":"Read a handle's value, paged","operationId":"handle_value_h__handle_id__value_get","parameters":[{"name":"handle_id","in":"path","required":true,"schema":{"type":"string","title":"Handle Id"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0,"title":"Offset"}},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100000,"minimum":1},{"type":"null"}],"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/h/{handle_id}/raw":{"get":{"summary":"The raw value with its natural media type","operationId":"handle_raw_h__handle_id__raw_get","parameters":[{"name":"handle_id","in":"path","required":true,"schema":{"type":"string","title":"Handle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/h/{handle_id}/provenance":{"get":{"summary":"Where a handle came from","operationId":"handle_provenance_h__handle_id__provenance_get","parameters":[{"name":"handle_id","in":"path","required":true,"schema":{"type":"string","title":"Handle Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/pipelines":{"post":{"summary":"Run (or dry-run) a chain of operations","operationId":"run_pipeline_pipelines_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PipelineBody"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recipes":{"get":{"summary":"Search the recipe commons: pipelines other agents proved, with track records","operationId":"list_recipes_recipes_get","parameters":[{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Q"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Save a pipeline to the commons","operationId":"create_recipe_recipes_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"{name, description, params, steps, return?, example?, expect?, repairs?, author?}","title":"Body"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recipes/{name}":{"get":{"summary":"A recipe: steps, params, expectations and its track record","operationId":"get_recipe_recipes__name__get","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"summary":"Publish a new version of a recipe (needs its edit key)","operationId":"update_recipe_recipes__name__put","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"x-edit-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Edit-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete a recipe you saved (needs its edit key)","operationId":"delete_recipe_recipes__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}},{"name":"x-edit-key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"X-Edit-Key"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/recipes/{name}/run":{"post":{"summary":"Run a recipe","operationId":"run_recipe_recipes__name__run_post","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecipeRunBody"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HandleBody":{"properties":{"value":{"title":"Value"},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},"additionalProperties":false,"type":"object","required":["value"],"title":"HandleBody"},"InvokeBody":{"properties":{"input":{"title":"Input"},"input_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Input Type","description":"Override the inferred type of a literal input (e.g. 'html')."},"args":{"additionalProperties":true,"type":"object","title":"Args"},"inline_max_tokens":{"type":"integer","maximum":20000.0,"minimum":0.0,"title":"Inline Max Tokens","description":"Results this small (est. tokens) include their value directly.","default":300},"terse":{"type":"boolean","title":"Terse","description":"Return just the answer: the value if small, else a handle with a short preview. No hashes, hints or step reports.","default":false}},"additionalProperties":false,"type":"object","title":"InvokeBody"},"PipelineBody":{"properties":{"steps":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Steps"},"return":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Return","description":"Ref to return, e.g. \"$2\" or \"$prices[0]\". Defaults to the last step."},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"inline_max_tokens":{"type":"integer","maximum":20000.0,"minimum":0.0,"title":"Inline Max Tokens","default":300},"terse":{"type":"boolean","title":"Terse","description":"Return just the answer: the value if small, else a handle with a short preview. No hashes, hints or step reports.","default":false}},"additionalProperties":false,"type":"object","required":["steps"],"title":"PipelineBody"},"RecipeRunBody":{"properties":{"params":{"additionalProperties":true,"type":"object","title":"Params"},"version":{"anyOf":[{"type":"integer","minimum":1.0},{"type":"null"}],"title":"Version","description":"Run this earlier version from the recipe's history."},"dry_run":{"type":"boolean","title":"Dry Run","default":false},"inline_max_tokens":{"type":"integer","maximum":20000.0,"minimum":0.0,"title":"Inline Max Tokens","default":300},"terse":{"type":"boolean","title":"Terse","description":"Return just the answer: the value if small, else a handle with a short preview. No hashes, hints or step reports.","default":false}},"additionalProperties":false,"type":"object","title":"RecipeRunBody"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}