mimo-v2.5-pro @ low · api
apilow
- config
- mimo-v2.5-pro-eff-low--api--official--dev
- batch
- 2026-07-19--unified
- transport
- xiaomi-mimo-official-api
- protocol
- api · metered
- served model
- mimo-v2.5-pro
- captured
- Jul 18, 2026, 11:54 AM · N=4
variant
live
slot 0 · P-q · sandboxed iframe

The screenshot is the exact frozen pixels the similarity channels measured. Run live re-executes the raw output in a sandboxed iframe; its rendering depends on your browser and fonts and is not guaranteed to match the measured pixels.
similarity neighbors
nearest
claude-sonnet-5 @medium · kiro0.64doubao-seed-2-1-pro-260628 @disabled · api0.64claude-haiku-4-5 @low · CC0.63claude-opus-4-8 @medium · kiro0.63claude-opus-4-6 @medium · kiro0.61farthest
claude-sonnet-5 @xhigh · CC0.45minimax-m2.7 · go0.47gpt-5.4 @xhigh · codex-oauth0.47gpt-5.4 @low · codex-oauth0.47claude-sonnet-5 @max · CC0.47within session 2026-07-19--unified
similarity measures convergence within this session — not quality.
Fidelity — does the card show the right data?
- namematch
- conditionmatch
- datematch
- max tempmatchshown: 25.3
- min tempmatchshown: 16
- hourlymismatchcoverage 0/24 · 0 match · 5 mismatch · 19 not shown
- request sidematch0 violation(s)
extractor fidelity-extractor-v1+Berlin-2026-07-15
Source — raw model output, one byte unchanged
download card.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=1280,height=800">
<title>Weather Card</title>
<style>
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
body{
font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
background:linear-gradient(135deg,#0f0c29,#302b63,#24243e);
min-height:100vh;
display:flex;
align-items:center;
justify-content:center;
padding:20px;
}
.card{
background:rgba(255,255,255,0.08);
backdrop-filter:blur(24px);
-webkit-backdrop-filter:blur(24px);
border:1px solid rgba(255,255,255,0.12);
border-radius:28px;
width:680px;
max-width:100%;
padding:48px;
color:#fff;
box-shadow:0 24px 80px rgba(0,0,0,0.35),0 0 0 1px rgba(255,255,255,0.05) inset;
position:relative;
overflow:hidden;
}
.card::before{
content:'';position:absolute;top:-60%;left:-60%;width:200%;height:200%;
background:radial-gradient(circle at 30% 20%,rgba(120,140,255,0.12) 0%,transparent 50%),
radial-gradient(circle at 70% 80%,rgba(255,120,200,0.08) 0%,transparent 50%);
pointer-events:none;z-index:0;
}
.card>*{position:relative;z-index:1}
.error-card{text-align:center;padding:60px 48px}
.error-icon{font-size:64px;margin-bottom:20px;display:block}
.error-msg{font-size:18px;font-weight:400;color:rgba(255,255,255,0.7);line-height:1.6}
.header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:32px}
.location-info h1{
font-size:32px;font-weight:700;letter-spacing:-0.5px;
background:linear-gradient(135deg,#fff,rgba(255,255,255,0.8));
-webkit-background-clip:text;-webkit-text-fill-color:transparent;
background-clip:text;
}
.location-info .date{
font-size:15px;font-weight:400;color:rgba(255,255,255,0.55);
margin-top:6px;letter-spacing:0.3px;
}
.weather-icon-block{text-align:center;min-width:120px}
.weather-icon{font-size:64px;line-height:1;filter:drop-shadow(0 4px 12px rgba(0,0,0,0.2))}
.weather-desc{
font-size:13px;font-weight:500;color:rgba(255,255,255,0.7);
margin-top:8px;text-transform:capitalize;letter-spacing:0.2px;
}
.temps{
display:flex;align-items:flex-end;gap:32px;
margin-bottom:36px;
padding-bottom:36px;
border-bottom:1px solid rgba(255,255,255,0.08);
}
.temp-big{
font-size:72px;font-weight:200;line-height:1;letter-spacing:-3px;
}
.temp-big .unit{font-size:28px;font-weight:300;vertical-align:super;letter-spacing:0}
.temp-range{display:flex;flex-direction:column;gap:10px}
.temp-range-item{
display:flex;align-items:center;gap:10px;
background:rgba(255,255,255,0.06);
padding:10px 18px;border-radius:14px;
}
.temp-range-item .label{
font-size:11px;font-weight:600;text-transform:uppercase;
letter-spacing:1px;color:rgba(255,255,255,0.4);width:36px;
}
.temp-range-item .value{font-size:22px;font-weight:500;letter-spacing:-0.5px}
.temp-range-item.high .value{color:#ffb347}
.temp-range-item.low .value{color:#7ec8e3}
.section-title{
font-size:12px;font-weight:600;text-transform:uppercase;
letter-spacing:1.5px;color:rgba(255,255,255,0.35);margin-bottom:20px;
}
.hourly-chart{
display:flex;align-items:flex-end;gap:4px;
height:180px;padding:0 4px;
position:relative;
}
.hour-col{
flex:1;display:flex;flex-direction:column;align-items:center;
gap:8px;height:100%;
justify-content:flex-end;
}
.bar-wrapper{
flex:1;width:100%;display:flex;align-items:flex-end;justify-content:center;
position:relative;
}
.bar{
width:100%;max-width:28px;border-radius:8px 8px 4px 4px;
transition:all 0.3s ease;
position:relative;cursor:default;
min-height:4px;
}
.bar:hover{
filter:brightness(1.3);
transform:scaleX(1.15);
}
.bar-tooltip{
position:absolute;top:-28px;left:50%;transform:translateX(-50%);
background:rgba(0,0,0,0.75);color:#fff;
font-size:11px;font-weight:600;padding:3px 8px;
border-radius:6px;white-space:nowrap;
opacity:0;pointer-events:none;transition:opacity 0.2s;
backdrop-filter:blur(8px);
}
.bar:hover .bar-tooltip{opacity:1}
.hour-label{
font-size:10px;font-weight:500;color:rgba(255,255,255,0.35);
letter-spacing:0.2px;
min-height:16px;
}
.y-axis{
position:absolute;left:-40px;top:0;bottom:0;
display:flex;flex-direction:column;justify-content:space-between;
pointer-events:none;
}
.y-tick{font-size:10px;color:rgba(255,255,255,0.25);font-weight:400}
.chart-area{position:relative;margin-left:44px;flex:1}
.grid-line{
position:absolute;left:0;right:0;
border-top:1px dashed rgba(255,255,255,0.06);
pointer-events:none;
}
@media(max-width:720px){
.card{padding:32px 24px;width:100%}
.temp-big{font-size:56px}
.hourly-chart{height:140px}
.header{flex-direction:column;gap:16px}
.temps{flex-direction:column;gap:16px;align-items:flex-start}
}
</style>
</head>
<body>
<div class="card" id="card"></div>
<script>
(function(){
const params = new URLSearchParams(window.location.search);
const lat = parseFloat(params.get('lat')) || 52.52;
const lon = parseFloat(params.get('lon')) || 13.405;
const name = params.get('name') || 'Berlin';
let dateParam = params.get('date');
let dateStr;
if(dateParam && /^\d{4}-\d{2}-\d{2}$/.test(dateParam)){
dateStr = dateParam;
} else {
const now = new Date();
dateStr = now.toISOString().slice(0,10);
}
const todayStr = new Date().toISOString().slice(0,10);
const isPast = dateStr < todayStr;
const basePath = isPast ? '/api/om/archive' : '/api/om/forecast';
const url = basePath + '?' + new URLSearchParams({
latitude: lat,
longitude: lon,
daily: 'temperature_2m_max,temperature_2m_min,weather_code',
hourly: 'temperature_2m',
timezone: 'UTC',
temperature_unit: 'celsius',
start_date: dateStr,
end_date: dateStr
}).toString();
const WMO = {
0:['Clear sky','☀️'],1:['Mainly clear','🌤️'],2:['Partly cloudy','⛅'],3:['Overcast','☁️'],
45:['Fog','🌫️'],48:['Rime fog','🌫️'],
51:['Light drizzle','🌦️'],53:['Moderate drizzle','🌦️'],55:['Dense drizzle','🌧️'],
56:['Freezing drizzle','🌧️'],57:['Dense freezing drizzle','🌧️'],
61:['Slight rain','🌧️'],63:['Moderate rain','🌧️'],65:['Heavy rain','🌧️'],
66:['Freezing rain','🌧️'],67:['Heavy freezing rain','🌧️'],
71:['Slight snow','🌨️'],73:['Moderate snow','🌨️'],75:['Heavy snow','❄️'],
77:['Snow grains','🌨️'],
80:['Slight showers','🌦️'],81:['Moderate showers','🌧️'],82:['Violent showers','⛈️'],
85:['Slight snow showers','🌨️'],86:['Heavy snow showers','❄️'],
95:['Thunderstorm','⛈️'],96:['Thunderstorm w/ hail','⛈️'],99:['Thunderstorm w/ heavy hail','⛈️']
};
const card = document.getElementById('card');
function formatDate(d){
const dt = new Date(d+'T00:00:00Z');
const opts = {weekday:'long',year:'numeric',month:'long',day:'numeric',timeZone:'UTC'};
return dt.toLocaleDateString('en-US',opts);
}
function showError(msg){
card.innerHTML = '<div class="error-card"><span class="error-icon">⚠️</span><p class="error-msg">'+msg+'</p></div>';
}
function getBarColor(temp,minT,maxT){
const range = maxT - minT || 1;
const t = (temp - minT)/range;
const r = Math.round(120 + t * 135);
const g = Math.round(180 - t * 40);
const b = Math.round(255 - t * 180);
return `rgb(${r},${g},${b})`;
}
function render(data){
const daily = data.daily;
const hourly = data.hourly;
if(!daily || !daily.weather_code || daily.weather_code.length === 0){
showError('No weather data available for <strong>'+name+'</strong> on <strong>'+formatDate(dateStr)+'</strong>.');
return;
}
const maxT = daily.temperature_2m_max[0];
const minT = daily.temperature_2m_min[0];
const code = daily.weather_code[0];
const wmo = WMO[code] || ['Unknown','❓'];
const cond = wmo[0];
const icon = wmo[1];
const dateLabel = formatDate(dateStr);
// find hourly temps for this date
const hourlyTemps = [];
const hourlyTimes = hourly.time || [];
for(let i=0;i<hourlyTimes.length;i++){
if(hourlyTimes[i].startsWith(dateStr)){
hourlyTemps.push(hourly.temperature_2m[i]);
}
}
// Build hourly chart
let chartHTML = '';
if(hourlyTemps.length > 0){
const allMin = Math.min(...hourlyTemps);
const allMax = Math.max(...hourlyTemps);
const range = allMax - allMin || 1;
const chartHeight = 130; // px for bar area
// Compute grid ticks
const tickCount = 4;
const ticks = [];
for(let i=0;i<=tickCount;i++){
ticks.push(Math.round(allMin + (range * i / tickCount)));
}
let barsHTML = '';
for(let h=0;h<hourlyTemps.length;h++){
const t = hourlyTemps[h];
const pct = ((t - allMin)/range) * 0.85 + 0.15;
const barH = pct * chartHeight;
const color = getBarColor(t, allMin, allMax);
const showLabel = h % 3 === 0;
barsHTML += '<div class="hour-col">' +
'<div class="bar-wrapper">' +
'<div class="bar" style="height:'+barH+'px;background:linear-gradient(to top,rgba(0,0,0,0.3),'+color+')">' +
'<span class="bar-tooltip">'+t.toFixed(1)+'°</span>' +
'</div>' +
'</div>' +
'<span class="hour-label">'+(showLabel ? String(h).padStart(2,'0')+':00' : '')+'</span>' +
'</div>';
}
let gridHTML = '';
for(let i=0;i<=tickCount;i++){
const pct = (i/tickCount)*100;
gridHTML += '<div class="grid-line" style="bottom:'+pct+'%"></div>';
}
let yAxisHTML = '';
for(let i=ticks.length-1;i>=0;i--){
yAxisHTML += '<span class="y-tick">'+ticks[i]+'°</span>';
}
chartHTML = '<div class="section-title">Hourly Temperatures</div>' +
'<div class="hourly-chart">' +
'<div class="y-axis">'+yAxisHTML+'</div>' +
'<div class="chart-area">'+gridHTML+barsHTML+'</div>' +
'</div>';
}
card.innerHTML =
'<div class="header">' +
'<div class="location-info">' +
'<h1>'+name+'</h1>' +
'<div class="date">'+dateLabel+'</div>' +
'</div>' +
'<div class="weather-icon-block">' +
'<span class="weather-icon">'+icon+'</span>' +
'<div class="weather-desc">'+cond+'</div>' +
'</div>' +
'</div>' +
'<div class="temps">' +
'<div class="temp-big">'+Math.round(maxT)+'<span class="unit">°C</span></div>' +
'<div class="temp-range">' +
'<div class="temp-range-item high">' +
'<span class="label">High</span>' +
'<span class="value">'+maxT.toFixed(1)+'°C</span>' +
'</div>' +
'<div class="temp-range-item low">' +
'<span class="label">Low</span>' +
'<span class="value">'+minT.toFixed(1)+'°C</span>' +
'</div>' +
'</div>' +
'</div>' +
chartHTML;
// Dynamic background based on weather
const b = document.body;
if(code <= 1){
b.style.background = 'linear-gradient(135deg,#1a1a2e,#16213e,#0f3460)';
} else if(code <= 3){
b.style.background = 'linear-gradient(135deg,#2d3436,#636e72,#b2bec3)';
} else if(code >= 61 || (code >= 80)){
b.style.background = 'linear-gradient(135deg,#0c0c1d,#1a1a3e,#2d2d5e)';
} else if(code >= 71 && code <= 77){
b.style.background = 'linear-gradient(135deg,#dfe6e9,#b2bec3,#636e72)';
}
}
fetch(url)
.then(function(r){
if(!r.ok) throw new Error('HTTP '+r.status);
return r.json();
})
.then(render)
.catch(function(){
showError('Could not load weather data for <strong>'+name+'</strong>. Please check that the API is available and try again.');
});
})();
</script>
</body>
</html>L1 — cheap deterministic descriptors
| bytes total | 11,920 | html / css / js | 246 / 4,678 / 6,996 |
|---|---|---|---|
| dom nodes | 9 | dom depth | 3 |
| css rules | 42 | js present | yes |
| brightness | 52.5 | contrast | 19.5 |
| colorfulness | 21.4 | whitespace | 58.4% |
This slot's telemetry
| prompt tokens | 566 | completion tokens | 4,007 |
|---|---|---|---|
| total tokens | 4,573 | wall | 60.6 s |
| cost | — | request id | — |
config.json566 B
{
"N": 4,
"auth": {
"credential_ref": "WCB_MIMO_KEY",
"method": "api-key"
},
"billing": "metered",
"config_id": "mimo-v2.5-pro-eff-low--api--official--dev",
"effort": "low",
"family": "mimo",
"m": {
"min": 4,
"q": 4
},
"model_id": "mimo-v2.5-pro",
"protocol": "api",
"served_model": "mimo-v2.5-pro",
"telemetry": {
"completion_tokens": 32881,
"cost_usd": null,
"prompt_tokens": 4496,
"total_tokens": 37377,
"wall_ms": 513889
},
"transport": "xiaomi-mimo-official-api",
"vendor_sanction_ref": null
}send-log4.7 KB
{
"N": 4,
"batch_id": "2026-07-19--official-mimo",
"config_id": "mimo-v2.5-pro-eff-low--api--official--dev",
"positions": [
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:33:05.454359+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:32:25.007447+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:34:09.751382+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:33:09.173302+00:00"
}
],
"block_index": 0,
"model_reaching_attempt_index": 0,
"slot_index": 0,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:35:42.754668+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:34:14.147021+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:36:29.369105+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:35:46.642990+00:00"
}
],
"block_index": 1,
"model_reaching_attempt_index": 0,
"slot_index": 1,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:37:20.850106+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:36:33.094167+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-min"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:39:43.430565+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:37:24.699280+00:00"
}
],
"block_index": 2,
"model_reaching_attempt_index": 0,
"slot_index": 2,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:40:43.190309+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:39:48.699618+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-q"
},
{
"attempts": [
{
"attempt_index": 0,
"backoff_ms": null,
"charged": true,
"ended_at": "2026-07-19T07:41:27.587849+00:00",
"http_status": 200,
"outcome": "valid",
"reached_model": true,
"reason": "ok",
"request_id": null,
"started_at": "2026-07-19T07:40:47.027777+00:00"
}
],
"block_index": 3,
"model_reaching_attempt_index": 0,
"slot_index": 3,
"terminal_state": "valid",
"variant": "P-min"
}
],
"retry_policy": {
"max_unreachable_retries": 5,
"rate_limit_backoff": {
"max_attempts": 4,
"max_total_ms": 60000
}
}
}