update_model
Modify an existing data model's configuration, name, identifier, or tracking columns in Polytomic to adapt to evolving data requirements.
Instructions
Update an existing data model in Polytomic.
Args: id: The model ID to update name: Optional new name for the model configuration: Optional JSON string with model config (e.g. {"query": "SELECT * FROM users"}) identifier: Optional field name to use as unique identifier tracking_columns: Optional JSON array of column names for change tracking
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| configuration | No | ||
| identifier | No | ||
| tracking_columns | No |
Implementation Reference
- src/polytomic_mcp/server.py:189-225 (handler)The `update_model` function acts as an MCP tool handler to update an existing data model in Polytomic. It fetches the current model state, merges it with new parameters, and performs a PUT request to the API.
@mcp.tool() async def update_model( id: str, name: str | None = None, configuration: str | None = None, identifier: str | None = None, tracking_columns: str | None = None, ) -> str: """Update an existing data model in Polytomic. Args: id: The model ID to update name: Optional new name for the model configuration: Optional JSON string with model config (e.g. {"query": "SELECT * FROM users"}) identifier: Optional field name to use as unique identifier tracking_columns: Optional JSON array of column names for change tracking """ current = await polytomic_request(f"/models/{id}") current_data = current.get("data", current) body = { "name": name or current_data.get("name"), "connection_id": current_data.get("connection_id"), "configuration": json.loads(configuration) if configuration else current_data.get("configuration"), } if identifier: body["identifier"] = identifier elif current_data.get("identifier"): body["identifier"] = current_data.get("identifier") if tracking_columns: body["tracking_columns"] = json.loads(tracking_columns) elif current_data.get("tracking_columns"): body["tracking_columns"] = current_data.get("tracking_columns") result = await polytomic_request(f"/models/{id}", method="PUT", body=body) return json.dumps(result, indent=2)