removedInput schema / properties / capabilities
Removed value: -{
- "description": "Required capabilities the model MUST support. Models missing any listed capability are filtered out before ranking. 'vision' = image input, 'audio_in' = audio input, 'tool_use' = function calling, 'structured_outputs' = JSON schema-constrained output. Omit when the task is plain text with no tool use.",
- "items": {
- "enum": [
- "vision",
- "audio_in",
- "tool_use",
- "structured_outputs"
- ],
- "type": "string"
- },
- "type": "array"
-}
removedInput schema / properties / primary
Removed value: -{
- "description": "Ordered priorities, highest first, for example quality then cost. Later dimensions break exact ties; unspecified dimensions do not decide the winner.",
- "items": {
- "enum": [
- "cost",
- "quality",
- "latency",
- "privacy"
- ],
- "type": "string"
- },
- "type": "array"
-}
removedInput schema / properties / purpose
Removed value: -{
- "description": "One sentence describing what the model will be used for. Be concrete, not vague: 'fixing bugs in a Python codebase' works; 'coding' does not. The more specific the purpose, the better XFMS can infer which quality dimensions matter.",
- "type": "string"
-}
addedInput schema / properties / session
Added value: +{
+ "description": "The sealed session from a discover conversation. Ranking is built from what discovery found out about the job — call discover first.",
+ "type": "string"
+}
removedInput schema / properties / top_n
Removed value: -{
- "default": 5,
- "description": "How many models to return in the ranked list. Defaults to 5. Use 1 if you only want the single best pick; use 10+ if you want to see deeper alternatives.",
- "maximum": 25,
- "minimum": 1,
- "type": "integer"
-}
changedInput schema / required
Previous value: -[
- "purpose"
-]New value: +[
+ "session"
+]
addedOutput schema / additionalProperties
Added value: +true
addedOutput schema / description
Added value: +"proven picks (each with its standing on every requirement), one promising newcomer, near misses, what changes if priorities change, and the assumptions."
removedOutput schema / properties
Removed value: -{
- "catalog_size": {
- "type": "integer"
- },
- "filtered_out": {
- "type": "integer"
- },
- "frontier_filtered_out": {
- "description": "How many models in models[] are neither recent nor top-tier on quality (informational — none are removed from the list, this just means they weren't eligible to be the recommendation).",
- "type": "integer"
- },
- "models": {
- "description": "Ranked shortlist of models, highest score first.",
- "items": {
- "properties": {
- "model_id": {
- "type": "string"
- },
- "name": {
- "type": "string"
- },
- "provider": {
- "type": [
- "string",
- "null"
- ]
- },
- "rationale": {
- "type": "string"
- },
- "total_score": {
- "type": "number"
- }
- },
- "type": "object"
- },
- "type": "array"
- },
- "quality_floor_reason": {
- "type": [
- "string",
- "null"
- ]
- },
- "status": {
- "description": "'ranked' (normal), 'low_confidence' (capability requirements were relaxed to find any match), or 'quality_floor_refused' (candidates were found but the best one scored too low to recommend — see quality_floor_reason; models[] still lists what was considered).",
- "type": "string"
- },
- "xpansion_update": {
- "description": "Optional rotating launch nudge from Xpansion. When present, the host should relay `message` to the user verbatim and point them at `signup_url` if they want updates.",
- "properties": {
- "call_count": {
- "type": "integer"
- },
- "id": {
- "type": "string"
- },
- "message": {
- "type": "string"
- },
- "signup_url": {
- "type": "string"
- }
- },
- "type": "object"
- }
-}