Skip to main content
Glama
krmisystems

fantasy-football-manager

update_manager_config

Destructive

Replace the saved configuration safely with the expected revision to prevent overwriting concurrent changes.

Instructions

Replace the saved configuration using its current configuration revision.

Read get_manager_config first to preserve settings that you do not intend to change. Omitted fields use model defaults rather than existing values, including when config is an empty object. Validates strategies and limits, records the change, and invalidates unexecuted proposals and monitor results. Returns status='updated' and the new config_revision, or a revision conflict without changing configuration. This tool does not execute actions or start a monitor.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
configYesReplacement configuration using fantasy://schema/config. Omitted fields reset to model defaults. Existing values are not merged.
expected_revisionYesCurrent config_revision from get_manager_config. This is the configuration revision, not the snapshot revision.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.1.2
    • addedInput schema / properties / config / properties / limits / properties / coverage_repair_add_ids
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "title": "Coverage Repair Add Ids",
      +  "type": "array"
      +}
    • addedInput schema / properties / config / properties / limits / properties / coverage_repair_ids
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "title": "Coverage Repair Ids",
      +  "type": "array"
      +}
  2. Changed5 schema fields changedv0.1.1
    • changedInput schema / properties / config / additionalProperties
      Previous value: -trueNew value: +false
    • addedInput schema / properties / config / description
      Added value: +"Replacement configuration using fantasy://schema/config. Omitted fields reset to model defaults. Existing values are not merged."
    • addedInput schema / properties / config / properties
      Added value: +{
      +  "automation": {
      +    "additionalProperties": false,
      +    "description": "Preset, pause state, and action modes. Only custom uses the per-action map, which must include every supported action.",
      +    "properties": {
      +      "actions": {
      +        "additionalProperties": {
      +          "enum": [
      +            "disabled",
      +            "advisory",
      +            "review",
      +            "automatic"
      +          ],
      +          "type": "string"
      +        },
      +        "title": "Actions",
      +        "type": "object"
      +      },
      +      "paused": {
      +        "default": false,
      +        "title": "Paused",
      +        "type": "boolean"
      +      },
      +      "preset": {
      +        "default": "advisory",
      +        "enum": [
      +          "advisory",
      +          "review",
      +          "bounded_automation",
      +          "custom"
      +        ],
      +        "title": "Preset",
      +        "type": "string"
      +      }
      +    },
      +    "title": "Automation",
      +    "type": "object"
      +  },
      +  "limits": {
      +    "additionalProperties": false,
      +    "description": "User limits on freshness, simulation batches, roster moves, protected players, drops, and FAAB spending.",
      +    "properties": {
      +      "allowed_drop_ids": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Allowed Drop Ids",
      +        "type": "array"
      +      },
      +      "batch_trials": {
      +        "default": 40,
      +        "maximum": 500,
      +        "minimum": 1,
      +        "title": "Batch Trials",
      +        "type": "integer"
      +      },
      +      "drop_mode": {
      +        "default": "listed_only",
      +        "enum": [
      +          "listed_only",
      +          "any_unprotected"
      +        ],
      +        "title": "Drop Mode",
      +        "type": "string"
      +      },
      +      "faab_per_claim": {
      +        "default": 10,
      +        "minimum": 0,
      +        "title": "Faab Per Claim",
      +        "type": "integer"
      +      },
      +      "faab_per_season": {
      +        "default": 70,
      +        "minimum": 0,
      +        "title": "Faab Per Season",
      +        "type": "integer"
      +      },
      +      "faab_per_week": {
      +        "default": 20,
      +        "minimum": 0,
      +        "title": "Faab Per Week",
      +        "type": "integer"
      +      },
      +      "faab_reserve": {
      +        "default": 30,
      +        "minimum": 0,
      +        "title": "Faab Reserve",
      +        "type": "integer"
      +      },
      +      "max_adp_reach": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "default": null,
      +        "title": "Max Adp Reach"
      +      },
      +      "max_draft_age_seconds": {
      +        "default": 15,
      +        "maximum": 300,
      +        "minimum": 1,
      +        "title": "Max Draft Age Seconds",
      +        "type": "integer"
      +      },
      +      "max_projection_age_seconds": {
      +        "default": 3600,
      +        "maximum": 604800,
      +        "minimum": 1,
      +        "title": "Max Projection Age Seconds",
      +        "type": "integer"
      +      },
      +      "max_season_age_seconds": {
      +        "default": 300,
      +        "maximum": 86400,
      +        "minimum": 1,
      +        "title": "Max Season Age Seconds",
      +        "type": "integer"
      +      },
      +      "max_weekly_moves": {
      +        "default": 3,
      +        "maximum": 100,
      +        "minimum": 0,
      +        "title": "Max Weekly Moves",
      +        "type": "integer"
      +      },
      +      "min_lineup_improvement": {
      +        "default": 1.5,
      +        "minimum": 0,
      +        "title": "Min Lineup Improvement",
      +        "type": "number"
      +      },
      +      "protected_ids": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "title": "Protected Ids",
      +        "type": "array"
      +      }
      +    },
      +    "title": "Limits",
      +    "type": "object"
      +  },
      +  "schema_version": {
      +    "const": 1,
      +    "default": 1,
      +    "title": "Schema Version",
      +    "type": "integer"
      +  },
      +  "strategy": {
      +    "additionalProperties": false,
      +    "description": "Draft, season, and waiver objectives. Strategy preferences never override user limits.",
      +    "properties": {
      +      "draft": {
      +        "default": "balanced_value",
      +        "enum": [
      +          "balanced_value",
      +          "rb_priority",
      +          "wr_priority",
      +          "hero_rb",
      +          "zero_rb"
      +        ],
      +        "title": "Draft",
      +        "type": "string"
      +      },
      +      "season": {
      +        "default": "projected_points",
      +        "enum": [
      +          "projected_points",
      +          "floor",
      +          "upside"
      +        ],
      +        "title": "Season",
      +        "type": "string"
      +      },
      +      "waiver": {
      +        "default": "immediate_starter",
      +        "enum": [
      +          "immediate_starter",
      +          "bench_upside",
      +          "conserve_faab"
      +        ],
      +        "title": "Waiver",
      +        "type": "string"
      +      }
      +    },
      +    "title": "Strategy",
      +    "type": "object"
      +  }
      +}
    • changedInput schema / properties / config / title
      Previous value: -"Config"New value: +"ManagerConfig"
    • addedInput schema / properties / expected_revision / description
      Added value: +"Current config_revision from get_manager_config. This is the configuration revision, not the snapshot revision."
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations, disclosing that omitted fields reset to model defaults, that empty config is treated as all-defaults, that validation and recording occur, that unexecuted proposals and monitor results are invalidated, and that a revision conflict leaves configuration unchanged. This is rich behavioral context complementing destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: the core action, the prerequisite, the omission semantics, side effects, return behavior, and exclusions. The most important caveat is front-loaded, and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the nested config schema, output schema, and destructive annotations, the description covers the full call contract: prerequisite read, omission behavior, validation/side effects, return status, conflict behavior, and what it does not do. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes expected_revision and config semantics. The tool description adds value by highlighting the 'read first to preserve settings' workflow and explicitly calling out the empty-object case, which reinforces and slightly extends the schema's 'existing values are not merged' warning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Replace the saved configuration using its current configuration revision' – a specific verb, resource, and mechanism. This clearly distinguishes the tool from read-only siblings like get_manager_config and from action-execution tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly instructs to read get_manager_config first to preserve settings, and states what the tool does not do ('does not execute actions or start a monitor'). It does not explicitly name the action-execution siblings (e.g., execute_demo_action), but the prerequisite and exclusions provide clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.