Last active
September 11, 2026 17:08
-
-
Save EdwardIrby/53fb0ed04c6c3800c79b0c6399597216 to your computer and use it in GitHub Desktop.
Measure You.com MCP you-search callTool result size: 100 jittered calls (~25 min) + clickhouse-local analysis + hash-batch content confirmation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- ClickHouse-local analysis for the You.com MCP you-search size probe. | |
| -- | |
| -- Run with the clickhouse-local binary (v26.9 tested): | |
| -- | |
| -- clickhouse local --multiquery < analyze.sql | |
| -- clickhouse local --multiquery --queries-file=analyze.sql | |
| -- | |
| -- # or, with clickhousectl: | |
| -- clickhousectl local use latest | |
| -- "$(clickhousectl local which --json | jq -r .binary_path)" local --multiquery < analyze.sql | |
| -- | |
| -- Expects these files in the working directory: | |
| -- results.jsonl -- 100-call timed run (search-size.ts) [one JSON line per call] | |
| -- hash-batch.jsonl -- 30-call hash confirmation (hash-batch.ts) [one JSON line per call] | |
| -- | |
| -- See the gist for the scripts that produced them. | |
| SET format = 'PrettyCompact'; | |
| SET max_block_size = 1; | |
| -- --------------------------------------------------------------------------- | |
| -- 1. Timed run overview (results.jsonl) | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| count() AS n, | |
| countIf(isError) AS errors, | |
| min(bytes) AS min_bytes, | |
| max(bytes) AS max_bytes, | |
| max(bytes) - min(bytes) AS byte_range, | |
| round(avg(bytes), 2) AS avg_bytes, | |
| round(stddevPop(bytes), 4) AS sd_bytes, | |
| round(quantile(0.5)(bytes), 0) AS p50_bytes, | |
| round(quantile(0.9)(bytes), 0) AS p90_bytes, | |
| round(quantile(0.99)(bytes), 0) AS p99_bytes, | |
| round(min(actualOffsetMs) / 60000, 2) AS first_min, | |
| round(max(actualOffsetMs) / 60000, 2) AS last_min, | |
| round((max(actualOffsetMs) - min(actualOffsetMs)) / 60000, 2) AS span_min, | |
| round(avg(durationMs), 0) AS avg_duration_ms, | |
| max(durationMs) AS max_duration_ms | |
| FROM file('results.jsonl', JSONEachRow) | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 2. Per-field byte distribution (which field wobbles, which is constant) | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| perField.content AS content_bytes, | |
| perField.structuredContent AS sc_bytes, | |
| perField._meta AS meta_bytes, | |
| count() AS n | |
| FROM file('results.jsonl', JSONEachRow) | |
| GROUP BY content_bytes, sc_bytes, meta_bytes | |
| ORDER BY content_bytes, sc_bytes | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 3. Timing / spacing correlation with size (does the gap matter?) | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| round(corr(actualOffsetMs, bytes), 4) AS corr_time_bytes, | |
| round(corr(actualOffsetMs, durationMs), 4) AS corr_time_dur, | |
| round(corr(delayBeforeMs, durationMs), 4) AS corr_gap_dur, | |
| round(corr(delayBeforeMs, bytes), 4) AS corr_gap_bytes, | |
| round(corr(index, bytes), 4) AS corr_index_bytes | |
| FROM file('results.jsonl', JSONEachRow) | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 4. Gap histogram (minutes between successive calls) — jitter check | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| round(gap_min, 2) AS gap_min, | |
| count() AS n | |
| FROM ( | |
| SELECT | |
| (actualOffsetMs - lagInFrame(actualOffsetMs) OVER (ORDER BY index)) / 60000 AS gap_min | |
| FROM file('results.jsonl', JSONEachRow) | |
| ) | |
| WHERE gap_min >= 0 | |
| GROUP BY gap_min | |
| ORDER BY gap_min | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 5. Definitive 'same data?' answer (hash-batch.jsonl) | |
| -- 1 distinct webResultsHash => the actual search results are identical | |
| -- every call; only per-request metadata (search_uuid, latency) changes. | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| count() AS n, | |
| uniqExact(webResultsHash) AS distinct_web_hashes, | |
| uniqExact(textHash) AS distinct_text_hashes, | |
| uniqExact(searchUuid) AS distinct_uuids, | |
| uniqExact(latency) AS distinct_latencies, | |
| uniqExact(webHitCount) AS distinct_hit_counts, | |
| any(webHitCount) AS hits_per_call, | |
| min(bytes) AS min_bytes, | |
| max(bytes) AS max_bytes | |
| FROM file('hash-batch.jsonl', JSONEachRow) | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 6. The single web-results hash that every call produced | |
| -- --------------------------------------------------------------------------- | |
| SELECT webResultsHash, count() AS n | |
| FROM file('hash-batch.jsonl', JSONEachRow) | |
| GROUP BY webResultsHash | |
| ORDER BY n DESC | |
| ; | |
| -- --------------------------------------------------------------------------- | |
| -- 7. Why textHash varies while webResultsHash doesn't: the only | |
| -- per-request variance inside the text payload is the latency float's | |
| -- serialized length (the search_uuid is a fixed-length UUID). | |
| -- --------------------------------------------------------------------------- | |
| SELECT | |
| count() AS n, | |
| uniqExact(webBytes) AS distinct_webBytes, | |
| min(webBytes) AS min_webBytes, | |
| max(webBytes) AS max_webBytes, | |
| uniqExact(textBytes) AS distinct_textBytes, | |
| min(textBytes) AS min_textBytes, | |
| max(textBytes) AS max_textBytes | |
| FROM file('hash-batch.jsonl', JSONEachRow) | |
| ; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {"index":0,"iso":"2026-09-11T17:07:11.308Z","durationMs":1697,"bytes":62449,"textHash":"b1e326360d294714","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"96c80730-e4b0-486c-b346-c2a379b1dd2b","latency":0.001692911027930677,"textBytes":30641,"webBytes":30399} | |
| {"index":1,"iso":"2026-09-11T17:07:11.735Z","durationMs":425,"bytes":62451,"textHash":"03992a0521ed670d","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"30165275-063a-4d90-813c-77071f2b2253","latency":0.0015743750846013427,"textBytes":30642,"webBytes":30399} | |
| {"index":2,"iso":"2026-09-11T17:07:12.238Z","durationMs":503,"bytes":62451,"textHash":"3b1bbbb1e30fd668","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"c24ac149-1ac6-4655-9dba-3532b977f86d","latency":0.0014118379913270473,"textBytes":30642,"webBytes":30399} | |
| {"index":3,"iso":"2026-09-11T17:07:12.640Z","durationMs":401,"bytes":62451,"textHash":"c1d7d53239c3e255","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"d20a8dea-1099-4f33-960b-e2b3265453bc","latency":0.0015834909863770008,"textBytes":30642,"webBytes":30399} | |
| {"index":4,"iso":"2026-09-11T17:07:13.060Z","durationMs":420,"bytes":62449,"textHash":"c817f968230bb258","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"b01d9006-f33a-4a47-bc0a-1ffd340e0f5d","latency":0.002005817979807034,"textBytes":30641,"webBytes":30399} | |
| {"index":5,"iso":"2026-09-11T17:07:13.445Z","durationMs":385,"bytes":62451,"textHash":"6c0b6e4166d5fd98","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"89c454bd-d633-4eef-b366-668dafcd3e1b","latency":0.0011766139650717378,"textBytes":30642,"webBytes":30399} | |
| {"index":6,"iso":"2026-09-11T17:07:13.832Z","durationMs":386,"bytes":62451,"textHash":"905d698208ba5c9a","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"491bea03-3d76-44d3-9467-cf7c7cabdb19","latency":0.0017678949516266584,"textBytes":30642,"webBytes":30399} | |
| {"index":7,"iso":"2026-09-11T17:07:14.229Z","durationMs":396,"bytes":62451,"textHash":"9f9d6a9341412a27","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"b029df20-f98b-4a06-a774-1f05cf1a1887","latency":0.0014917760854586959,"textBytes":30642,"webBytes":30399} | |
| {"index":8,"iso":"2026-09-11T17:07:14.585Z","durationMs":356,"bytes":62451,"textHash":"6619c090bae360dd","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"b8f7dee2-f5c9-4551-99de-49b2b5d625cb","latency":0.0017554599326103926,"textBytes":30642,"webBytes":30399} | |
| {"index":9,"iso":"2026-09-11T17:07:15.022Z","durationMs":436,"bytes":62451,"textHash":"2979f09fb6990189","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"ce088de9-e4f5-44d1-8072-6aa8a360caf5","latency":0.0015400709817185998,"textBytes":30642,"webBytes":30399} | |
| {"index":10,"iso":"2026-09-11T17:07:15.430Z","durationMs":406,"bytes":62449,"textHash":"392fe7fc93235e61","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"b0f3c8fc-7a38-4684-85a5-f11efccb7dc2","latency":0.001549395965412259,"textBytes":30641,"webBytes":30399} | |
| {"index":11,"iso":"2026-09-11T17:07:15.776Z","durationMs":345,"bytes":62451,"textHash":"8881315e90a90aed","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"eda46713-1e18-46f5-b872-6f4ad7a20db7","latency":0.0014544569421559572,"textBytes":30642,"webBytes":30399} | |
| {"index":12,"iso":"2026-09-11T17:07:16.146Z","durationMs":369,"bytes":62451,"textHash":"716ff4fccc342027","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"9d802fc5-a569-4b6d-94eb-3ce418c53c52","latency":0.0011207719799131155,"textBytes":30642,"webBytes":30399} | |
| {"index":13,"iso":"2026-09-11T17:07:16.482Z","durationMs":336,"bytes":62451,"textHash":"1cb1efa838a1ed2d","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"2c93a252-0f78-4e49-97c9-01c48ee6f20c","latency":0.0015484309988096356,"textBytes":30642,"webBytes":30399} | |
| {"index":14,"iso":"2026-09-11T17:07:16.886Z","durationMs":403,"bytes":62451,"textHash":"172cb8614e2bb6da","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"44b97129-d9c9-45f3-9f6f-d8e850178027","latency":0.0011315519222989678,"textBytes":30642,"webBytes":30399} | |
| {"index":15,"iso":"2026-09-11T17:07:17.315Z","durationMs":428,"bytes":62451,"textHash":"1f9a9f99b54415df","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"10a772d5-6a76-4766-9151-87d437123e48","latency":0.0016508489934494719,"textBytes":30642,"webBytes":30399} | |
| {"index":16,"iso":"2026-09-11T17:07:17.750Z","durationMs":434,"bytes":62451,"textHash":"28f06e21a72af22f","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"083f8a55-10c7-46d4-8686-81884fee739f","latency":0.0015790869947522879,"textBytes":30642,"webBytes":30399} | |
| {"index":17,"iso":"2026-09-11T17:07:18.114Z","durationMs":363,"bytes":62449,"textHash":"d6e5a252b1154a64","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"4a44687f-ecfe-4d77-a89c-fb329baf3b49","latency":0.001198271056637168,"textBytes":30641,"webBytes":30399} | |
| {"index":18,"iso":"2026-09-11T17:07:18.524Z","durationMs":409,"bytes":62451,"textHash":"3756aa37c084e53b","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"4296caee-6e22-4298-aa3e-5d360ec16fc7","latency":0.0017938660457730293,"textBytes":30642,"webBytes":30399} | |
| {"index":19,"iso":"2026-09-11T17:07:18.897Z","durationMs":373,"bytes":62449,"textHash":"b4c1c6d180e1452b","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"87498986-b7b1-4ace-9ebe-0874949fa23f","latency":0.001545920968055725,"textBytes":30641,"webBytes":30399} | |
| {"index":20,"iso":"2026-09-11T17:07:19.308Z","durationMs":409,"bytes":62451,"textHash":"b0a1fb399600d209","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"e73ff65a-6d5c-4a0e-a5d7-6d37e3b1eb0d","latency":0.0017303430940955877,"textBytes":30642,"webBytes":30399} | |
| {"index":21,"iso":"2026-09-11T17:07:19.758Z","durationMs":449,"bytes":62451,"textHash":"eca25e62f2641334","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"7de136ce-810f-4a16-8086-e32b280f48c7","latency":0.0015693489694967866,"textBytes":30642,"webBytes":30399} | |
| {"index":22,"iso":"2026-09-11T17:07:20.177Z","durationMs":417,"bytes":62449,"textHash":"f11833da998304b6","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"a22954f4-195f-4549-b9b6-2a2b051964b1","latency":0.001969838049262762,"textBytes":30641,"webBytes":30399} | |
| {"index":23,"iso":"2026-09-11T17:07:20.508Z","durationMs":331,"bytes":62451,"textHash":"a36fba5670231ba7","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"2daecdbe-88bb-4fa5-9658-1b10feee9493","latency":0.0015628819819539785,"textBytes":30642,"webBytes":30399} | |
| {"index":24,"iso":"2026-09-11T17:07:20.832Z","durationMs":323,"bytes":62449,"textHash":"b4464c64256626fa","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"70a4e733-9a42-4628-8ae9-d9b3a597fdeb","latency":0.001594342989847064,"textBytes":30641,"webBytes":30399} | |
| {"index":25,"iso":"2026-09-11T17:07:21.137Z","durationMs":304,"bytes":62449,"textHash":"aeeacfe3085a5e39","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"51e04cb0-7d37-485c-99cd-86b3215807bd","latency":0.001038353075273335,"textBytes":30641,"webBytes":30399} | |
| {"index":26,"iso":"2026-09-11T17:07:21.495Z","durationMs":358,"bytes":62451,"textHash":"c23e4c76757f2957","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"b8cc5355-9757-41aa-ac1c-15fde5e40d9b","latency":0.0010949739953503013,"textBytes":30642,"webBytes":30399} | |
| {"index":27,"iso":"2026-09-11T17:07:21.856Z","durationMs":360,"bytes":62451,"textHash":"3f0542eacc531608","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"3d36ebed-6536-401d-8e88-8047c170ee5d","latency":0.0010992190800607204,"textBytes":30642,"webBytes":30399} | |
| {"index":28,"iso":"2026-09-11T17:07:22.215Z","durationMs":359,"bytes":62451,"textHash":"3db4f640af8ec652","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"f01033e3-0b58-406a-b8fb-4d806dd46638","latency":0.0019189330050721765,"textBytes":30642,"webBytes":30399} | |
| {"index":29,"iso":"2026-09-11T17:07:22.609Z","durationMs":394,"bytes":62451,"textHash":"077a132314f07d67","webResultsHash":"d52941ed4617f205","webHitCount":13,"searchUuid":"8a7b59c0-50a0-4ebb-ba49-6f563241205a","latency":0.0019348030909895897,"textBytes":30642,"webBytes":30399} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' | |
| import { createHash } from 'node:crypto' | |
| const SERVER_URL = process.env.YDC_API_URL ?? 'https://api.you.com/mcp' | |
| const API_KEY = process.env.YDC_API_KEY! | |
| const QUERY = 'What is the top story on Hacker News right now? You must use the search tool. Answer with the exact title and URL.' | |
| const N = Number(process.env.HB_N ?? 30) | |
| const call = async () => { | |
| const t = new StreamableHTTPClientTransport(new URL(SERVER_URL), { | |
| requestInit: { headers: { Authorization: `Bearer ${API_KEY}` } }, | |
| }) | |
| const c = new Client({ name: 'hash-batch', version: '1.0.0' }) | |
| try { | |
| await c.connect(t) | |
| return await c.callTool({ name: 'you-search', arguments: { query: QUERY } }) | |
| } finally { await c.close().catch(()=>{}); await t.close().catch(()=>{}) } | |
| } | |
| const sha = (s: string) => createHash('sha256').update(s).digest('hex').slice(0,16) | |
| const textOf = (r:any) => r.content?.find((b:any)=>b.type==='text')?.text ?? '' | |
| const scOf = (r:any) => r.structuredContent ?? {} | |
| const webOf = (r:any) => JSON.stringify(r.structuredContent?.results?.web ?? []) | |
| const metaOf = (r:any) => r.structuredContent?.metadata ?? {} | |
| const lines: string[] = [] | |
| for (let i=0;i<N;i++){ | |
| const t0=Date.now() | |
| try { | |
| const r:any = await call() | |
| const dur=Date.now()-t0 | |
| const txt=textOf(r) | |
| const web=webOf(r) | |
| const meta=metaOf(r) | |
| lines.push(JSON.stringify({ | |
| index:i, iso:new Date().toISOString(), durationMs:dur, | |
| bytes:Buffer.byteLength(JSON.stringify(r),'utf8'), | |
| textHash:sha(txt), | |
| webResultsHash:sha(web), | |
| webHitCount:(r.structuredContent?.results?.web??[]).length, | |
| searchUuid:meta.search_uuid ?? null, | |
| latency:meta.latency ?? null, | |
| textBytes:Buffer.byteLength(txt,'utf8'), | |
| webBytes:Buffer.byteLength(web,'utf8'), | |
| })) | |
| } catch(e){ | |
| lines.push(JSON.stringify({index:i,iso:new Date().toISOString(),durationMs:Date.now()-t0,error:e instanceof Error?e.message:String(e)})) | |
| } | |
| if((i+1)%5===0) console.error(`hash-batch ${i+1}/${N}`) | |
| } | |
| await Bun.write('hash-batch.jsonl', lines.join('\n')+'\n') | |
| console.log(`wrote ${lines.length} records to hash-batch.jsonl`) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| {"index":0,"scheduledOffsetMs":0,"actualOffsetMs":1075,"delayBeforeMs":0,"iso":"2026-09-11T16:18:15.114Z","durationMs":1071,"bytes":62443,"chars":62195,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31680,"structuredContent":30638}} | |
| {"index":1,"scheduledOffsetMs":10145,"actualOffsetMs":10312,"delayBeforeMs":9069,"iso":"2026-09-11T16:18:24.352Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":2,"scheduledOffsetMs":25880,"actualOffsetMs":26077,"delayBeforeMs":15568,"iso":"2026-09-11T16:18:40.117Z","durationMs":194,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":3,"scheduledOffsetMs":40998,"actualOffsetMs":41175,"delayBeforeMs":14921,"iso":"2026-09-11T16:18:55.215Z","durationMs":175,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":4,"scheduledOffsetMs":48299,"actualOffsetMs":48469,"delayBeforeMs":7123,"iso":"2026-09-11T16:19:02.508Z","durationMs":168,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":5,"scheduledOffsetMs":67335,"actualOffsetMs":67514,"delayBeforeMs":18866,"iso":"2026-09-11T16:19:21.554Z","durationMs":178,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":6,"scheduledOffsetMs":81111,"actualOffsetMs":81284,"delayBeforeMs":13596,"iso":"2026-09-11T16:19:35.323Z","durationMs":171,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":7,"scheduledOffsetMs":91159,"actualOffsetMs":91334,"delayBeforeMs":9874,"iso":"2026-09-11T16:19:45.374Z","durationMs":173,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":8,"scheduledOffsetMs":112293,"actualOffsetMs":112467,"delayBeforeMs":20959,"iso":"2026-09-11T16:20:06.507Z","durationMs":172,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":9,"scheduledOffsetMs":122469,"actualOffsetMs":122631,"delayBeforeMs":10001,"iso":"2026-09-11T16:20:16.670Z","durationMs":160,"bytes":62447,"chars":62199,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31682,"structuredContent":30640}} | |
| {"index":10,"scheduledOffsetMs":140407,"actualOffsetMs":140571,"delayBeforeMs":17776,"iso":"2026-09-11T16:20:34.610Z","durationMs":162,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":11,"scheduledOffsetMs":160578,"actualOffsetMs":160735,"delayBeforeMs":20007,"iso":"2026-09-11T16:20:54.775Z","durationMs":155,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":12,"scheduledOffsetMs":178980,"actualOffsetMs":179187,"delayBeforeMs":18245,"iso":"2026-09-11T16:21:13.227Z","durationMs":205,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":13,"scheduledOffsetMs":188100,"actualOffsetMs":188275,"delayBeforeMs":8912,"iso":"2026-09-11T16:21:22.314Z","durationMs":172,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":14,"scheduledOffsetMs":197028,"actualOffsetMs":197205,"delayBeforeMs":8753,"iso":"2026-09-11T16:21:31.245Z","durationMs":175,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":15,"scheduledOffsetMs":219734,"actualOffsetMs":219897,"delayBeforeMs":22527,"iso":"2026-09-11T16:21:53.937Z","durationMs":161,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":16,"scheduledOffsetMs":229395,"actualOffsetMs":229630,"delayBeforeMs":9498,"iso":"2026-09-11T16:22:03.670Z","durationMs":232,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":17,"scheduledOffsetMs":247892,"actualOffsetMs":248271,"delayBeforeMs":18261,"iso":"2026-09-11T16:22:22.311Z","durationMs":378,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":18,"scheduledOffsetMs":255436,"actualOffsetMs":255597,"delayBeforeMs":7164,"iso":"2026-09-11T16:22:29.637Z","durationMs":159,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":19,"scheduledOffsetMs":274747,"actualOffsetMs":274955,"delayBeforeMs":19150,"iso":"2026-09-11T16:22:48.993Z","durationMs":204,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":20,"scheduledOffsetMs":286285,"actualOffsetMs":286498,"delayBeforeMs":11329,"iso":"2026-09-11T16:23:00.537Z","durationMs":211,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":21,"scheduledOffsetMs":298371,"actualOffsetMs":298534,"delayBeforeMs":11873,"iso":"2026-09-11T16:23:12.573Z","durationMs":161,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":22,"scheduledOffsetMs":309241,"actualOffsetMs":309438,"delayBeforeMs":10707,"iso":"2026-09-11T16:23:23.478Z","durationMs":194,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":23,"scheduledOffsetMs":322816,"actualOffsetMs":322994,"delayBeforeMs":13377,"iso":"2026-09-11T16:23:37.034Z","durationMs":177,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":24,"scheduledOffsetMs":328963,"actualOffsetMs":329942,"delayBeforeMs":5968,"iso":"2026-09-11T16:23:43.982Z","durationMs":977,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":25,"scheduledOffsetMs":351531,"actualOffsetMs":351693,"delayBeforeMs":21589,"iso":"2026-09-11T16:24:05.733Z","durationMs":160,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":26,"scheduledOffsetMs":359129,"actualOffsetMs":359279,"delayBeforeMs":7435,"iso":"2026-09-11T16:24:13.319Z","durationMs":149,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":27,"scheduledOffsetMs":374524,"actualOffsetMs":374695,"delayBeforeMs":15244,"iso":"2026-09-11T16:24:28.735Z","durationMs":169,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":28,"scheduledOffsetMs":385292,"actualOffsetMs":385447,"delayBeforeMs":10597,"iso":"2026-09-11T16:24:39.486Z","durationMs":153,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":29,"scheduledOffsetMs":395593,"actualOffsetMs":395758,"delayBeforeMs":10146,"iso":"2026-09-11T16:24:49.798Z","durationMs":164,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":30,"scheduledOffsetMs":414051,"actualOffsetMs":414224,"delayBeforeMs":18292,"iso":"2026-09-11T16:25:08.263Z","durationMs":171,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":31,"scheduledOffsetMs":424082,"actualOffsetMs":424882,"delayBeforeMs":9858,"iso":"2026-09-11T16:25:18.921Z","durationMs":798,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":32,"scheduledOffsetMs":441596,"actualOffsetMs":441761,"delayBeforeMs":16713,"iso":"2026-09-11T16:25:35.801Z","durationMs":163,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":33,"scheduledOffsetMs":465258,"actualOffsetMs":465434,"delayBeforeMs":23497,"iso":"2026-09-11T16:25:59.474Z","durationMs":174,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":34,"scheduledOffsetMs":476507,"actualOffsetMs":476678,"delayBeforeMs":11073,"iso":"2026-09-11T16:26:10.718Z","durationMs":168,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":35,"scheduledOffsetMs":497507,"actualOffsetMs":497696,"delayBeforeMs":20829,"iso":"2026-09-11T16:26:31.735Z","durationMs":186,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":36,"scheduledOffsetMs":512573,"actualOffsetMs":512735,"delayBeforeMs":14876,"iso":"2026-09-11T16:26:46.775Z","durationMs":160,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":37,"scheduledOffsetMs":526886,"actualOffsetMs":527066,"delayBeforeMs":14151,"iso":"2026-09-11T16:27:01.105Z","durationMs":176,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":38,"scheduledOffsetMs":544308,"actualOffsetMs":544478,"delayBeforeMs":17242,"iso":"2026-09-11T16:27:18.518Z","durationMs":168,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":39,"scheduledOffsetMs":560011,"actualOffsetMs":560177,"delayBeforeMs":15533,"iso":"2026-09-11T16:27:34.217Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":40,"scheduledOffsetMs":566413,"actualOffsetMs":566579,"delayBeforeMs":6235,"iso":"2026-09-11T16:27:40.619Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":41,"scheduledOffsetMs":589341,"actualOffsetMs":589506,"delayBeforeMs":22762,"iso":"2026-09-11T16:28:03.545Z","durationMs":162,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":42,"scheduledOffsetMs":611762,"actualOffsetMs":611952,"delayBeforeMs":22256,"iso":"2026-09-11T16:28:25.992Z","durationMs":189,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":43,"scheduledOffsetMs":626922,"actualOffsetMs":627096,"delayBeforeMs":14969,"iso":"2026-09-11T16:28:41.136Z","durationMs":172,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":44,"scheduledOffsetMs":640157,"actualOffsetMs":640309,"delayBeforeMs":13060,"iso":"2026-09-11T16:28:54.349Z","durationMs":151,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":45,"scheduledOffsetMs":650643,"actualOffsetMs":650803,"delayBeforeMs":10333,"iso":"2026-09-11T16:29:04.843Z","durationMs":159,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":46,"scheduledOffsetMs":669489,"actualOffsetMs":669691,"delayBeforeMs":18686,"iso":"2026-09-11T16:29:23.731Z","durationMs":200,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":47,"scheduledOffsetMs":691197,"actualOffsetMs":691380,"delayBeforeMs":21505,"iso":"2026-09-11T16:29:45.419Z","durationMs":181,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":48,"scheduledOffsetMs":700589,"actualOffsetMs":700768,"delayBeforeMs":9208,"iso":"2026-09-11T16:29:54.808Z","durationMs":177,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":49,"scheduledOffsetMs":712173,"actualOffsetMs":712339,"delayBeforeMs":11405,"iso":"2026-09-11T16:30:06.378Z","durationMs":163,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":50,"scheduledOffsetMs":730538,"actualOffsetMs":730739,"delayBeforeMs":18199,"iso":"2026-09-11T16:30:24.779Z","durationMs":200,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":51,"scheduledOffsetMs":742295,"actualOffsetMs":742461,"delayBeforeMs":11555,"iso":"2026-09-11T16:30:36.501Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":52,"scheduledOffsetMs":749141,"actualOffsetMs":749302,"delayBeforeMs":6679,"iso":"2026-09-11T16:30:43.342Z","durationMs":160,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":53,"scheduledOffsetMs":765156,"actualOffsetMs":765502,"delayBeforeMs":15853,"iso":"2026-09-11T16:30:59.542Z","durationMs":345,"bytes":62447,"chars":62199,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31682,"structuredContent":30640}} | |
| {"index":54,"scheduledOffsetMs":783643,"actualOffsetMs":783801,"delayBeforeMs":18140,"iso":"2026-09-11T16:31:17.840Z","durationMs":156,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":55,"scheduledOffsetMs":806245,"actualOffsetMs":806399,"delayBeforeMs":22443,"iso":"2026-09-11T16:31:40.439Z","durationMs":153,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":56,"scheduledOffsetMs":820001,"actualOffsetMs":820201,"delayBeforeMs":13601,"iso":"2026-09-11T16:31:54.240Z","durationMs":198,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":57,"scheduledOffsetMs":833581,"actualOffsetMs":833737,"delayBeforeMs":13380,"iso":"2026-09-11T16:32:07.776Z","durationMs":153,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":58,"scheduledOffsetMs":851800,"actualOffsetMs":851984,"delayBeforeMs":18062,"iso":"2026-09-11T16:32:26.023Z","durationMs":181,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":59,"scheduledOffsetMs":872950,"actualOffsetMs":873112,"delayBeforeMs":20966,"iso":"2026-09-11T16:32:47.152Z","durationMs":160,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":60,"scheduledOffsetMs":887903,"actualOffsetMs":888062,"delayBeforeMs":14790,"iso":"2026-09-11T16:33:02.102Z","durationMs":157,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":61,"scheduledOffsetMs":911349,"actualOffsetMs":911516,"delayBeforeMs":23286,"iso":"2026-09-11T16:33:25.555Z","durationMs":164,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":62,"scheduledOffsetMs":933952,"actualOffsetMs":934117,"delayBeforeMs":22435,"iso":"2026-09-11T16:33:48.156Z","durationMs":163,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":63,"scheduledOffsetMs":943379,"actualOffsetMs":943545,"delayBeforeMs":9262,"iso":"2026-09-11T16:33:57.584Z","durationMs":163,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":64,"scheduledOffsetMs":949704,"actualOffsetMs":949856,"delayBeforeMs":6159,"iso":"2026-09-11T16:34:03.895Z","durationMs":150,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":65,"scheduledOffsetMs":968844,"actualOffsetMs":969001,"delayBeforeMs":18988,"iso":"2026-09-11T16:34:23.041Z","durationMs":156,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":66,"scheduledOffsetMs":984648,"actualOffsetMs":984803,"delayBeforeMs":15646,"iso":"2026-09-11T16:34:38.843Z","durationMs":154,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":67,"scheduledOffsetMs":991877,"actualOffsetMs":992030,"delayBeforeMs":7074,"iso":"2026-09-11T16:34:46.069Z","durationMs":150,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":68,"scheduledOffsetMs":1000849,"actualOffsetMs":1001232,"delayBeforeMs":8819,"iso":"2026-09-11T16:34:55.272Z","durationMs":382,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":69,"scheduledOffsetMs":1016210,"actualOffsetMs":1016375,"delayBeforeMs":14978,"iso":"2026-09-11T16:35:10.415Z","durationMs":163,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":70,"scheduledOffsetMs":1035958,"actualOffsetMs":1036119,"delayBeforeMs":19583,"iso":"2026-09-11T16:35:30.159Z","durationMs":160,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":71,"scheduledOffsetMs":1059256,"actualOffsetMs":1059417,"delayBeforeMs":23137,"iso":"2026-09-11T16:35:53.457Z","durationMs":159,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":72,"scheduledOffsetMs":1068342,"actualOffsetMs":1068505,"delayBeforeMs":8924,"iso":"2026-09-11T16:36:02.545Z","durationMs":162,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":73,"scheduledOffsetMs":1085009,"actualOffsetMs":1085177,"delayBeforeMs":16504,"iso":"2026-09-11T16:36:19.216Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":74,"scheduledOffsetMs":1094098,"actualOffsetMs":1094280,"delayBeforeMs":8921,"iso":"2026-09-11T16:36:28.319Z","durationMs":179,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":75,"scheduledOffsetMs":1102094,"actualOffsetMs":1102280,"delayBeforeMs":7814,"iso":"2026-09-11T16:36:36.319Z","durationMs":184,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":76,"scheduledOffsetMs":1124563,"actualOffsetMs":1124729,"delayBeforeMs":22283,"iso":"2026-09-11T16:36:58.769Z","durationMs":165,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":77,"scheduledOffsetMs":1141861,"actualOffsetMs":1142032,"delayBeforeMs":17131,"iso":"2026-09-11T16:37:16.071Z","durationMs":169,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":78,"scheduledOffsetMs":1162060,"actualOffsetMs":1162226,"delayBeforeMs":20027,"iso":"2026-09-11T16:37:36.266Z","durationMs":165,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":79,"scheduledOffsetMs":1178378,"actualOffsetMs":1178534,"delayBeforeMs":16151,"iso":"2026-09-11T16:37:52.574Z","durationMs":154,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":80,"scheduledOffsetMs":1185741,"actualOffsetMs":1185890,"delayBeforeMs":7207,"iso":"2026-09-11T16:37:59.930Z","durationMs":147,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":81,"scheduledOffsetMs":1193383,"actualOffsetMs":1193537,"delayBeforeMs":7492,"iso":"2026-09-11T16:38:07.577Z","durationMs":153,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":82,"scheduledOffsetMs":1205460,"actualOffsetMs":1205652,"delayBeforeMs":11923,"iso":"2026-09-11T16:38:19.691Z","durationMs":189,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":83,"scheduledOffsetMs":1221904,"actualOffsetMs":1222089,"delayBeforeMs":16251,"iso":"2026-09-11T16:38:36.129Z","durationMs":183,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":84,"scheduledOffsetMs":1237814,"actualOffsetMs":1237980,"delayBeforeMs":15723,"iso":"2026-09-11T16:38:52.020Z","durationMs":164,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":85,"scheduledOffsetMs":1253610,"actualOffsetMs":1253774,"delayBeforeMs":15630,"iso":"2026-09-11T16:39:07.814Z","durationMs":161,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":86,"scheduledOffsetMs":1266342,"actualOffsetMs":1266494,"delayBeforeMs":12568,"iso":"2026-09-11T16:39:20.533Z","durationMs":149,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":87,"scheduledOffsetMs":1288210,"actualOffsetMs":1288361,"delayBeforeMs":21716,"iso":"2026-09-11T16:39:42.400Z","durationMs":150,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":88,"scheduledOffsetMs":1309340,"actualOffsetMs":1309509,"delayBeforeMs":20979,"iso":"2026-09-11T16:40:03.549Z","durationMs":167,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":89,"scheduledOffsetMs":1328096,"actualOffsetMs":1328312,"delayBeforeMs":18586,"iso":"2026-09-11T16:40:22.352Z","durationMs":213,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":90,"scheduledOffsetMs":1339330,"actualOffsetMs":1339483,"delayBeforeMs":11018,"iso":"2026-09-11T16:40:33.523Z","durationMs":151,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":91,"scheduledOffsetMs":1358699,"actualOffsetMs":1358878,"delayBeforeMs":19215,"iso":"2026-09-11T16:40:52.918Z","durationMs":178,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":92,"scheduledOffsetMs":1372567,"actualOffsetMs":1372719,"delayBeforeMs":13689,"iso":"2026-09-11T16:41:06.759Z","durationMs":153,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":93,"scheduledOffsetMs":1378936,"actualOffsetMs":1379093,"delayBeforeMs":6217,"iso":"2026-09-11T16:41:13.133Z","durationMs":160,"bytes":62449,"chars":62201,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31683,"structuredContent":30641}} | |
| {"index":94,"scheduledOffsetMs":1400989,"actualOffsetMs":1401140,"delayBeforeMs":21895,"iso":"2026-09-11T16:41:35.179Z","durationMs":157,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":95,"scheduledOffsetMs":1423610,"actualOffsetMs":1423772,"delayBeforeMs":22470,"iso":"2026-09-11T16:41:57.811Z","durationMs":162,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":96,"scheduledOffsetMs":1442561,"actualOffsetMs":1442714,"delayBeforeMs":18789,"iso":"2026-09-11T16:42:16.754Z","durationMs":152,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":97,"scheduledOffsetMs":1457056,"actualOffsetMs":1457216,"delayBeforeMs":14341,"iso":"2026-09-11T16:42:31.255Z","durationMs":158,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":98,"scheduledOffsetMs":1468824,"actualOffsetMs":1468995,"delayBeforeMs":11608,"iso":"2026-09-11T16:42:43.034Z","durationMs":167,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} | |
| {"index":99,"scheduledOffsetMs":1492500,"actualOffsetMs":1492661,"delayBeforeMs":23504,"iso":"2026-09-11T16:43:06.701Z","durationMs":159,"bytes":62451,"chars":62203,"contentBlocks":1,"isError":false,"error":null,"perField":{"_meta":83,"content":31684,"structuredContent":30642}} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** | |
| * Calls the You.com MCP `you-search` tool via the TypeScript MCP client SDK | |
| * v2 (`@modelcontextprotocol/client`) repeatedly and records the size of each | |
| * tool-call response to a JSONL file. | |
| * | |
| * ## Setup | |
| * | |
| * ```bash | |
| * bun install @modelcontextprotocol/client | |
| * ``` | |
| * | |
| * ## Run | |
| * | |
| * ```bash | |
| * YDC_API_KEY=your-key-here bun run search-size.ts | |
| * | |
| * # Optional overrides | |
| * YDC_API_URL=https://api-staging.you.com/mcp YDC_API_KEY=... bun run search-size.ts | |
| * YDC_NUM_QUERIES=100 YDC_WINDOW_MIN=25 YDC_OUT=results.jsonl bun run search-size.ts | |
| * ``` | |
| * | |
| * ## What it does | |
| * | |
| * Runs `YDC_NUM_QUERIES` (default 100) `you-search` calls spread across a | |
| * `YDC_WINDOW_MIN`-minute (default 25) window. Each call is placed at a | |
| * jittered time slot so the gaps between calls vary while the total span stays | |
| * close to the requested window. For every call one JSON line is appended to | |
| * `YDC_OUT` (default `results.jsonl`): | |
| * | |
| * { index, scheduledOffsetMs, actualOffsetMs, delayBeforeMs, iso, durationMs, | |
| * bytes, chars, contentBlocks, isError, error, perField } | |
| * | |
| * `perField` is a UTF-8 JSON byte breakdown of each top-level field of the | |
| * `CallToolResult` so you can see what contributes to the total. | |
| * | |
| * Auth is sent as `Authorization: Bearer <YDC_API_KEY>`, matching the You.com | |
| * hosted MCP server's API-key auth path. A fresh transport + client is created | |
| * per call, matching the server's per-request lifecycle. | |
| */ | |
| import { Client, StreamableHTTPClientTransport } from '@modelcontextprotocol/client' | |
| import { appendFile } from 'node:fs/promises' | |
| const SERVER_URL = process.env.YDC_API_URL ?? 'https://api.you.com/mcp' | |
| const API_KEY = process.env.YDC_API_KEY | |
| const NUM_QUERIES = Number(process.env.YDC_NUM_QUERIES ?? 100) | |
| const WINDOW_MIN = Number(process.env.YDC_WINDOW_MIN ?? 25) | |
| const OUT = process.env.YDC_OUT ?? 'results.jsonl' | |
| const QUERY = | |
| 'What is the top story on Hacker News right now? You must use the search tool. Answer with the exact title and URL.' | |
| if (!API_KEY) { | |
| console.error('Error: YDC_API_KEY env var is required') | |
| process.exit(1) | |
| } | |
| const byteSize = (v: unknown): number => Buffer.byteLength(JSON.stringify(v), 'utf8') | |
| const sleep = (ms: number): Promise<void> => new Promise((r) => setTimeout(r, ms)) | |
| /** | |
| * Build `n` jittered offsets in [0, windowMs) that sum to ~windowMs and are | |
| * monotonically increasing. Gaps vary uniformly in [base*0.4, base*1.6]. | |
| */ | |
| function buildSchedule(n: number, windowMs: number): number[] { | |
| const base = windowMs / n | |
| const raw: number[] = [] | |
| let acc = 0 | |
| for (let i = 0; i < n; i++) { | |
| const gap = i === 0 ? 0 : base * (0.4 + Math.random() * 1.2) | |
| acc += gap | |
| raw.push(acc) | |
| } | |
| // Normalize so the last slot lands exactly at windowMs (minus a hair so the | |
| // final call still has time to complete within the window). | |
| const scale = (windowMs - base * 0.5) / raw[raw.length - 1] | |
| return raw.map((t) => Math.round(t * scale)) | |
| } | |
| interface CallRecord { | |
| index: number | |
| scheduledOffsetMs: number | |
| actualOffsetMs: number | |
| delayBeforeMs: number | |
| iso: string | |
| durationMs: number | |
| bytes: number | |
| chars: number | |
| contentBlocks: number | |
| isError: boolean | |
| error: string | null | |
| perField: Record<string, number> | |
| } | |
| const runOnce = async (index: number): Promise<CallRecord> => { | |
| const t0 = Date.now() | |
| const transport = new StreamableHTTPClientTransport(new URL(SERVER_URL), { | |
| requestInit: { headers: { Authorization: `Bearer ${API_KEY}` } }, | |
| }) | |
| const client = new Client({ name: 'search-size-script', version: '1.0.0' }) | |
| try { | |
| await client.connect(transport) | |
| const result = await client.callTool({ name: 'you-search', arguments: { query: QUERY } }) | |
| const durationMs = Date.now() - t0 | |
| const perField: Record<string, number> = {} | |
| for (const [key, value] of Object.entries(result)) { | |
| perField[key] = value === undefined ? 0 : byteSize(value) | |
| } | |
| return { | |
| index, | |
| scheduledOffsetMs: 0, | |
| actualOffsetMs: 0, | |
| delayBeforeMs: 0, | |
| iso: new Date().toISOString(), | |
| durationMs, | |
| bytes: byteSize(result), | |
| chars: JSON.stringify(result).length, | |
| contentBlocks: result.content?.length ?? 0, | |
| isError: result.isError ?? false, | |
| error: null, | |
| perField, | |
| } | |
| } catch (err) { | |
| return { | |
| index, | |
| scheduledOffsetMs: 0, | |
| actualOffsetMs: 0, | |
| delayBeforeMs: 0, | |
| iso: new Date().toISOString(), | |
| durationMs: Date.now() - t0, | |
| bytes: 0, | |
| chars: 0, | |
| contentBlocks: 0, | |
| isError: true, | |
| error: err instanceof Error ? `${err.name}: ${err.message}` : String(err), | |
| perField: {}, | |
| } | |
| } finally { | |
| await client.close().catch(() => {}) | |
| await transport.close().catch(() => {}) | |
| } | |
| } | |
| const main = async (): Promise<void> => { | |
| const windowMs = WINDOW_MIN * 60_000 | |
| const schedule = buildSchedule(NUM_QUERIES, windowMs) | |
| const spanMin = (schedule[schedule.length - 1] / 60_000).toFixed(2) | |
| console.log( | |
| `Running ${NUM_QUERIES} queries over ~${spanMin} min (${WINDOW_MIN} min window) -> ${OUT}`, | |
| ) | |
| const startWall = Date.now() | |
| let prev = 0 | |
| for (let i = 0; i < NUM_QUERIES; i++) { | |
| const target = startWall + schedule[i] | |
| const now = Date.now() | |
| const delayBeforeMs = Math.max(0, target - now) | |
| await sleep(delayBeforeMs) | |
| const rec = await runOnce(i) | |
| rec.scheduledOffsetMs = schedule[i] | |
| rec.actualOffsetMs = Date.now() - startWall | |
| rec.delayBeforeMs = delayBeforeMs | |
| const line = JSON.stringify(rec) | |
| await appendFile(OUT, line + '\n', 'utf8') | |
| const pct = ((i + 1) / NUM_QUERIES * 100).toFixed(0) | |
| console.log( | |
| `[${pct.padStart(3)}%] #${(i + 1).toString().padStart(3)}/${NUM_QUERIES} ` + | |
| `bytes=${rec.bytes} blocks=${rec.contentBlocks} err=${rec.error ?? '-'} ` + | |
| `(${(rec.actualOffsetMs / 60_000).toFixed(2)}m)`, | |
| ) | |
| prev = rec.actualOffsetMs | |
| } | |
| void prev | |
| console.log(`Done. Wrote ${NUM_QUERIES} records to ${OUT}`) | |
| } | |
| await main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment