miromiro-mcp 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/index.mjs +9 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "miromiro-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "MCP server for the MiroMiro design-extraction API — give your coding agent the real code, design tokens, assets, SVGs, fonts, and Lottie of any website.",
|
|
5
5
|
"mcpName": "app.miromiro/miromiro",
|
|
6
6
|
"type": "module",
|
package/src/index.mjs
CHANGED
|
@@ -39,7 +39,7 @@ const TOOL_ANNOTATIONS = {
|
|
|
39
39
|
// client-rendered React/Next/SPA sites that return little statically.
|
|
40
40
|
const RENDER_ARG = {
|
|
41
41
|
type: 'boolean',
|
|
42
|
-
description: 'Run the page in a real browser first so its JavaScript executes - use for client-rendered (React/Next/SPA) sites,
|
|
42
|
+
description: 'Run the page in a real browser first so its JavaScript executes - use for client-rendered (React/Next/SPA) sites, when a normal call came back thin, or after a 403 target_blocked (bot protection refuses plain HTTP requests but usually lets a browser through). Slower, and adds 5 credits to the call.'
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
// Shared input arg: skip the 24h cache for this one call (charged normally).
|
|
@@ -296,7 +296,7 @@ const TOOLS = [
|
|
|
296
296
|
title: 'Extract fonts',
|
|
297
297
|
endpoint: 'fonts',
|
|
298
298
|
description:
|
|
299
|
-
"Detect the real typography a site loads by resolving its full CSS cascade: every @font-face file with family/weight/style/format, Google Fonts links, preloads, plus a grouped per-family summary (families). Pass fields='families' for just the summary. Use to match typography.",
|
|
299
|
+
"Detect the real typography a site loads by resolving its full CSS cascade: every @font-face file with family/weight/style/format, Google Fonts links, preloads, plus a grouped per-family summary (families). Pass fields='families' for just the summary. Use to match typography. On a type-foundry site the families served are usually demo cuts of the products (subset character set, kerning and OpenType features stripped) - those are flagged demo:true with a note, and you should pass that on rather than presenting them as the real font.",
|
|
300
300
|
inputSchema: {
|
|
301
301
|
type: 'object',
|
|
302
302
|
properties: {
|
|
@@ -335,12 +335,14 @@ const TOOLS = [
|
|
|
335
335
|
source: { type: 'string' },
|
|
336
336
|
weights: { type: 'array', items: { type: 'string' } },
|
|
337
337
|
styles: { type: 'array', items: { type: 'string' } },
|
|
338
|
-
files: { type: 'number' }
|
|
338
|
+
files: { type: 'number' },
|
|
339
|
+
demo: { type: 'boolean', description: 'The family name marks it a foundry demo/trial cut, not the real font' }
|
|
339
340
|
}
|
|
340
341
|
}
|
|
341
342
|
},
|
|
342
343
|
googleFontsLinks: { type: 'array', items: { type: 'string' } },
|
|
343
344
|
count: { type: 'number' },
|
|
345
|
+
note: { type: 'string', description: 'Only present when demo/trial families were found - tell the user, these files are subset and feature-stripped, not the usable typeface' },
|
|
344
346
|
usage: OUT_USAGE,
|
|
345
347
|
truncation_note: OUT_TRUNCATION
|
|
346
348
|
},
|
|
@@ -497,7 +499,9 @@ const INSTRUCTIONS =
|
|
|
497
499
|
'say which one you returned. The API reads static HTML+CSS by default; pass render=true on any tool to ' +
|
|
498
500
|
'execute the page JavaScript in a real browser first (client-rendered sites, +5 credits). When a static ' +
|
|
499
501
|
'call comes back thin because the page is client-rendered, the response includes a hint field saying to ' +
|
|
500
|
-
'retry with render=true - follow it.
|
|
502
|
+
'retry with render=true - follow it. Likewise a 403 target_blocked is rarely a dead end: it is usually the ' +
|
|
503
|
+
"site's bot protection turning away a plain HTTP request, so retry the SAME url with render=true before " +
|
|
504
|
+
'telling the user the site cannot be extracted. Explain your results, do not just dump them: extract_brand returns a ' +
|
|
501
505
|
'signals object saying where the colors came from (signals.explanation is a sentence written to be repeated ' +
|
|
502
506
|
'to the user) - when signals.primarySource is "usage" the site declared nothing and the colors are an ' +
|
|
503
507
|
'inferred guess, so say that instead of presenting them as the official palette. Rendered calls can also ' +
|
|
@@ -506,7 +510,7 @@ const INSTRUCTIONS =
|
|
|
506
510
|
'bypass the 24h cache when a site just changed.'
|
|
507
511
|
|
|
508
512
|
const server = new Server(
|
|
509
|
-
{ name: 'miromiro', version: '0.6.
|
|
513
|
+
{ name: 'miromiro', version: '0.6.1' },
|
|
510
514
|
{ capabilities: { tools: {} }, instructions: INSTRUCTIONS }
|
|
511
515
|
)
|
|
512
516
|
|