ImageGen-Studio / mcp_tools /get_chain_schema.py
BlueSkyXN's picture
Deploy GitHub a51e6f6df2b2d5093fd2526a7953c2ee6a422e37
8a28a8d verified
Raw
History Blame Contribute Delete
1.51 kB
"""Fluxus-compatible feature schema endpoint."""
from .common import _CHAIN_FEATURES_PATH, _load_yaml
from .error_schema import make_not_found_error, make_validation_error
def handle_get_chain_schema(chain_type: str) -> dict:
if not chain_type:
return make_validation_error(
"Parameter 'chain_type' is required.",
missing_fields=["chain_type"],
)
chain_features = _load_yaml(_CHAIN_FEATURES_PATH)
resolved = chain_type if chain_type in chain_features else None
if resolved is None:
for feature_name, feature_data in chain_features.items():
aliases = feature_data.get("chains")
if aliases == chain_type or (
isinstance(aliases, list) and chain_type in aliases
):
resolved = feature_name
break
if resolved is None:
return make_not_found_error("chain_type", chain_type)
chain_data = chain_features[resolved]
return {
"feature_name": chain_type,
"canonical_feature_name": resolved,
"chains": chain_data.get("chains", resolved),
"display_name": chain_data.get("display_name", resolved),
"description": chain_data.get("description", ""),
"supported_tasks": chain_data.get("supported_tasks", []),
"max_count": chain_data.get("max_count", 1),
"usage_guideline": chain_data.get("usage_guideline", ""),
"parameters_schema": chain_data.get("parameters_schema", {}),
}