diff --git a/packages/app/src/components/chat/ChatHeader.vue b/packages/app/src/components/chat/ChatHeader.vue
index 80bea125..0a00508f 100644
--- a/packages/app/src/components/chat/ChatHeader.vue
+++ b/packages/app/src/components/chat/ChatHeader.vue
@@ -149,13 +149,30 @@
@@ -265,6 +282,22 @@ defineEmits<{
const { activeProvider, activeModel, availableProviders, setProvider, setModel } = useAI()
const comparison = useComparisonMode()
+
+// Model capabilities map
+const MODEL_CAPS: Record = {
+ 'claude-haiku-4.5': { vision: true, tools: true, longContext: true },
+ 'claude-sonnet-4': { vision: true, tools: true, longContext: true },
+ 'claude-opus-4': { vision: true, tools: true, longContext: true },
+ 'meta-llama/llama-4-maverick': { vision: true, tools: true, longContext: true },
+ 'qwen/qwen3-235b-a22b-thinking-2507': { vision: false, tools: false, longContext: true },
+ 'mistralai/mistral-small-3.1-24b-instruct:free': { vision: true, tools: true, longContext: false },
+ 'google/gemma-3-27b-it:free': { vision: true, tools: false, longContext: false },
+ 'echo': { vision: false, tools: false, longContext: false },
+}
+
+function getModelCaps(modelId: string) {
+ return MODEL_CAPS[modelId] ?? { vision: false, tools: false, longContext: false }
+}
const chatStore = useChatStore()
const webSearchEnabled = computed(() => chatStore.webSearchEnabled)
const showModelPicker = ref(false)