addrbookFor publishers
← The evidence ledger

Evidence row 565771

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 7cbf6f38-3aed-4fcf-903d-4ff70fb00a36
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
cfd18d9836005c3e0f22170d172f6fcb067886f9541db00d306e8f2847e68a9a
Leaf
0xde3140d520f10183a57c8f0e58283d92df68a814f87d9bb64d7c39ed7241495c

What was observed

{
  "count": 14,
  "tools": [
    {
      "description": "Fetch one component by slug. `include` controls the payload: 'meta' (full catalog record), 'preview' (thumbnail + live demo URL), 'prompt' (a self-contained brief to REBUILD it faithfully), 'source' (the actual index.html/styles.css/script.js to copy, plus an integration note). Default: meta + preview + prompt. Add 'source' when you want the real code.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "include": {
            "description": "Which payloads to return. Default: [\"meta\",\"preview\",\"prompt\"].",
            "items": {
              "enum": [
                "meta",
                "preview",
                "prompt",
                "source"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "slug": {
            "description": "Component slug, e.g. \"brandappart-sticky-cards\".",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_component"
    },
    {
      "description": "THE way to get a build prompt. Returns three blocks: (a) the standalone prompt VERBATIM, untouched; (b) the tokens of the requested motion system; (c) an explicit instruction telling you to adapt (a) to (b) YOURSELF, preserving arithmetic relationships — if a duration holds up a sum, a chained sequence or a ScrollTrigger `end`, recompute the whole set, never a lone value. Replaces render_prompt, which substituted mechanically and produced prompts whose prose contradicted their code (11/30 in judged evaluation). See DECISIONS.md D15 and D18.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "motion_system": {
            "description": "Default: the component's native system.",
            "type": "string"
          },
          "slug": {
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_component_prompt"
    },
    {
      "description": "Given the slugs you intend to put on ONE page, returns: rule violations (hard, invalidate the page), warnings, the measured budget (JS gzip / assets / scroll corridor), and an ordered init plan — single Lenis instance, CustomEase registration, entry veil first, one ScrollTrigger.refresh() at the end, WebGL loop gating. Every step cites the evidence it comes from.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "motion_system": {
            "type": "string"
          },
          "moving_sections": {
            "anyOf": [
              {
                "maximum": 9007199254740991,
                "minimum": 0,
                "type": "integer"
              },
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            ],
            "description": "Las secciones que DEBEN moverse (plan_page → motion_coverage.must_move), o cuántas son. Con esto el contrato audita la cobertura y te dice si te has quedado corto."
          },
          "slugs": {
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "slugs"
        ],
        "type": "object"
      },
      "name": "get_integration_contract"
    },
    {
      "description": "Full token set of a motion system plus the components that are native to it.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "name": {
            "description": "System name, e.g. scrub-lagged.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "get_motion_system"
    },
    {
      "description": "Browse the whole catalog as a compact list (slug, title, useWhen, mood, useCase, level, perfCost). Use for an overview or when a brief is vague; use search_components when you have a specific brief.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "limit": {
            "description": "Max items (default: all).",
            "maximum": 500,
            "minimum": 1,
            "type": "integer"
          },
          "offset": {
            "description": "Skip N items (pagination).",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_components"
    },
    {
      "description": "Return the filter vocabulary (mood, useCase, level, perfCost, category, deps) with how many components carry each value. Call this first to learn the exact values search_components accepts.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "list_facets"
    },
    {
      "description": "The 8 motion systems of the library: token sets (ease/duration/stagger/lenis) derived from the measured inventory, not invented. Use this FIRST when composing a page: pick one system and render every component's prompt with it so the page moves coherently.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {},
        "type": "object"
      },
      "name": "list_motion_systems"
    },
    {
      "description": "Qué imagen necesita cada sección, CON QUÉ MODELO se hace y cómo se redacta el prompt. Con la arquitectura y el movimiento resueltos, lo que sigue delatando una página generada son las imágenes: genéricas del sector en vez de específicas de la sección, sin una sola persona, y todas rectángulos con fondo. Esta tool devuelve el enrutado por modelo (personas ≠ objetos ≠ paisaje: no son intercambiables), la receta de transparencia (alfa real de gpt-image-2.5 con `background: transparent`, ya sin magenta), la del retoque con referencia (image-to-image para corregir un detalle sin volver a tirar el dado), la de las hojas de seis recortes por generación, y de dónde salen los logotipos reales (Wikimedia, nunca generados). NO genera imágenes, no usa ninguna clave y no hace ninguna llamada de red: devuelve texto. Llámala DESPUÉS de plan_page y ANTES de escribir un solo prompt de imagen.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "archetype": {
            "type": "string"
          },
          "brief": {
            "description": "El mismo brief que le diste a plan_page.",
            "type": "string"
          },
          "palette": {
            "description": "La paleta ya fijada: las tomas obedecen al diseño, no al revés.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sections": {
            "description": "Las secciones de plan_page, tal cual. Sin esto sólo se devuelven las reglas generales.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "purpose": {
                  "type": "string"
                },
                "role": {
                  "type": "string"
                }
              },
              "required": [
                "id",
                "role"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "plan_imagery"
    },
    {
      "description": "Returns the SECTIONS a page of this kind needs — 10 to 14 of them, each with a role, what it has to accomplish, what content it needs, and whether it should move — plus a motion system and its tokens. It returns NO components on purpose: a page can only be as rich as the list it is composed from, and composing from animation mechanics caps every page at five sections. Ask for mechanics afterwards, one section at a time, with suggest_mechanics. It also names the roles the catalog cannot cover, so you write those from the system tokens instead of adopting the least-bad search hit. An optional `reference` contributes STATIC art direction and biases the motion system — motion is NEVER derived from the reference.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "archetype": {
            "description": "Fuerza el patrón de arquitectura en vez de detectarlo del brief. Uno de: agency, restaurant, product-brand, saas, portfolio, event, editorial",
            "enum": [
              "agency",
              "restaurant",
              "product-brand",
              "saas",
              "portfolio",
              "event",
              "editorial"
            ],
            "type": "string"
          },
          "brief": {
            "description": "e.g. 'tostaduría de café de especialidad', 'agencia de software a medida'.",
            "type": "string"
          },
          "reference": {
            "properties": {
              "density": {
                "type": "string"
              },
              "image": {
                "type": "string"
              },
              "motion_system_hint": {
                "description": "Uno de los 8; sesga la elección.",
                "type": "string"
              },
              "palette": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "type_scale": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "brief"
        ],
        "type": "object"
      },
      "name": "plan_page"
    },
    {
      "description": "DEPRECATED in favour of get_component_prompt. Mechanical substitution does not fit this corpus: the prompts narrate their own numbers in prose, so replacing only the code values makes prose and code specify different components (judged 11/30). Coverage is deliberately narrow: 164 of 219 components have ZERO substitutable values because their prompts narrate their own numbers in prose ('over 4s', 'durations are 1'), and substituting those would make prose and code contradict each other. For those components this returns the prompt unchanged. See DECISIONS.md D15. Returns the component's build prompt with its motion tokens (ease/duration/stagger) replaced by the chosen motion system's values, so several components share one timing language. Values that are STRUCTURAL to the effect (elastic overshoot, loop cadence, scrub linearity, shader/physics constants) are never substituted — they come back listed under 'Valores no parametrizables'. Omit `system` to use the component's native one.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "slug": {
            "description": "Component slug.",
            "type": "string"
          },
          "system": {
            "description": "Motion system name. Default: the component's native system.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "render_prompt"
    },
    {
      "description": "Find the components that best fit a natural-language brief (e.g. \"un hero elegante para una marca de lujo\", \"cartas apiladas al hacer scroll\") or a name/alias. Returns a ranked, compact list with a `why` for each hit. Combine the free-text `query` with facet filters to narrow. Then call get_component on the chosen slug. Leave `query` empty to browse purely by filters.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "category": {
            "description": "Animation-family filter (e.g. scroll, cards, menu, 3d-webgl).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "deps": {
            "description": "Require these runtime deps (e.g. [\"three\"], [\"lenis\"]). AND semantics.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "level": {
            "description": "page (owns the whole page/scroll) | section (a block) | widget (small embeddable).",
            "items": {
              "enum": [
                "page",
                "section",
                "widget"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "description": "Max results (default 12).",
            "maximum": 50,
            "minimum": 1,
            "type": "integer"
          },
          "maxPerfCost": {
            "description": "Cap runtime weight: light | medium | heavy.",
            "enum": [
              "light",
              "medium",
              "heavy"
            ],
            "type": "string"
          },
          "mobileSafe": {
            "description": "If true, only components that degrade well on touch/small screens.",
            "type": "boolean"
          },
          "mood": {
            "description": "Aesthetic filter. One of: minimal, elegant, luxury, editorial, bold, playful, corporate, retro, futuristic, experimental, cinematic, brutalist, organic, technical",
            "items": {
              "enum": [
                "minimal",
                "elegant",
                "luxury",
                "editorial",
                "bold",
                "playful",
                "corporate",
                "retro",
                "futuristic",
                "experimental",
                "cinematic",
                "brutalist",
                "organic",
                "technical"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "query": {
            "description": "Free-text brief or component name/alias. Spanish or English; accent-insensitive.",
            "type": "string"
          },
          "useCase": {
            "description": "Page-role filter. One of: hero, preloader, page-transition, navigation, footer, gallery, slider, card-deck, scroll-story, image-reveal, text-reveal, hover-interaction, cursor-effect, logo, background, product-showcase, marquee, team-section, cta, contact",
            "items": {
              "enum": [
                "hero",
                "preloader",
                "page-transition",
                "navigation",
                "footer",
                "gallery",
                "slider",
                "card-deck",
                "scroll-story",
                "image-reveal",
                "text-reveal",
                "hover-interaction",
                "cursor-effect",
                "logo",
                "background",
                "product-showcase",
                "marquee",
                "team-section",
                "cta",
                "contact"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "name": "search_components"
    },
    {
      "description": "Filters by the CAPA-1 motion block (trigger, libs, complexity, motion system) rather than by prose. Prefer this over search_components when composing a page: `category` describes how a component LOOKS, `trigger`/`cluster` describe how it MOVES, and they disagree — the `slider` label alone splits across 3 opposite physics.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "category": {
            "type": "string"
          },
          "complexity": {
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "libs": {
            "description": "Todas deben estar presentes.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "maximum": 200,
            "minimum": 1,
            "type": "integer"
          },
          "max_complexity": {
            "maximum": 5,
            "minimum": 1,
            "type": "integer"
          },
          "motion_system": {
            "type": "string"
          },
          "trigger": {
            "enum": [
              "scroll",
              "hover",
              "click",
              "load",
              "pointer",
              "wheel",
              "drag"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "search_components_motion"
    },
    {
      "description": "Given a section role from plan_page and what that section has to do, returns ranked candidate components — filtered first by the catalog facets that actually correspond to the role, then ranked by the free-text need. Prefer this over search_components when building a planned page. Crucially, it can answer that the catalog has NOTHING for a role (counters, progress bars, pricing tables, FAQ accordions, data tables) instead of returning the least-bad hit dressed up as an answer — search_components cannot tell you that, and its top result for 'accordion' is a horizontal image gallery. When the verdict is `none`, write the section from the motion system tokens; that is a legitimate outcome, not a failure.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "adopted": {
            "description": "What you have ALREADY adopted on THIS page. Candidates that would invalidate the page alongside them come back with `composes_with_adopted: false`, the reason in `collision`, and sorted last. Without this the tool is blind to the page you are building and the clash only surfaces at get_integration_contract, after you wrote the code.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "avoid": {
            "description": "Slugs to exclude — pass everything you already used on OTHER pages. Wide roles offer 100+ candidates whose top scores are statistically tied, so without this you will keep adopting the same handful. NOTE: `avoid` is for not repeating yourself, NOT for animating less — if you drop the #1 because it is taken, take the #2; never leave the section still.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "limit": {
            "description": "Max candidates (default 5).",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "motion_system": {
            "description": "The page's system; ranks compatible components first and is echoed back when there is nothing to adopt.",
            "type": "string"
          },
          "need": {
            "description": "What this section must do, in prose. e.g. 'the roast curve draws itself as you scroll'.",
            "type": "string"
          },
          "role": {
            "description": "Section role from plan_page. One of: entry, chrome, hero, proof, thesis, feature, collection, process, signature, context, explainer, people, cta, footer, data, pricing, testimonial, faq, reference",
            "enum": [
              "entry",
              "chrome",
              "hero",
              "proof",
              "thesis",
              "feature",
              "collection",
              "process",
              "signature",
              "context",
              "explainer",
              "people",
              "cta",
              "footer",
              "data",
              "pricing",
              "testimonial",
              "faq",
              "reference"
            ],
            "type": "string"
          }
        },
        "required": [
          "role"
        ],
        "type": "object"
      },
      "name": "suggest_mechanics"
    },
    {
      "description": "The twin of suggest_mechanics for the family that does not fill a section slot: smooth scroll, the shaped edge BETWEEN two stacked sections, a background that runs behind the whole page, a custom cursor, route transitions. These were unreachable from the planner because the whole model assumed a mechanic occupies one slot in `sections` — which is why a page could be planned end to end and still butt every section together with a straight line. A treatment does NOT consume a section and does NOT count toward motion_coverage; it adds on top. Some kinds are decisions rather than components (`scroll-suave`) and come back with verdict `not-a-component` instead of a fake candidate list. Still pass whatever you adopt to get_integration_contract: treatments compete for the same capabilities (scroll owner, document height) as any other component.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "avoid": {
            "description": "Slugs to exclude.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "kind": {
            "description": "Treatment kind. One of: scroll-suave, frontera-de-seccion, fondo-continuo, cursor, transicion-de-ruta",
            "enum": [
              "scroll-suave",
              "frontera-de-seccion",
              "fondo-continuo",
              "cursor",
              "transicion-de-ruta"
            ],
            "type": "string"
          },
          "limit": {
            "description": "Max candidates (default 5).",
            "maximum": 20,
            "minimum": 1,
            "type": "integer"
          },
          "motion_system": {
            "description": "The page's system; echoed back when there is nothing to adopt.",
            "type": "string"
          },
          "need": {
            "description": "What it has to do, in prose. Only reorders within the kind's pool.",
            "type": "string"
          }
        },
        "required": [
          "kind"
        ],
        "type": "object"
      },
      "name": "suggest_page_treatments"
    }
  ]
}

What the leaf hashes

{"body":"cfd18d9836005c3e0f22170d172f6fcb067886f9541db00d306e8f2847e68a9a","id":565771,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138266056824,"prev":null,"subject":"7cbf6f38-3aed-4fcf-903d-4ff70fb00a36","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xde314242510e17e7d5e0e40fdb782c26115146e278cfff6398d53cc08346ec29
  2. 0x1946c2110956c33797a0a2a2753a39fbaa91ef205d45db6dd1ce013736bbb381
  3. 0xd20a79aebd958e85e9f97567e3337ebb6b5b0e66c53a7e5c1486a7d416a1bb63
  4. 0x927909648861d15afe2170ce63b8fd81a0bdeaaabd3bb7a04f3b53c28ff535f5
  5. 0x13a9ddab6d1f26e91089e111fc97f13c06d9b97f0f2ea622771c1ee93c723570
  6. 0x3bc0addf4b86a91143772f51d206ee99f6fa6d1b00fa78a245866293053fb3f4
  7. 0xfc6d0f18dafb4910a4ac33432b11123c419f4fed924882b4311668b3ea985238
  8. 0x3a72959252c32313fa876099a7313e00607b0c937b5bef89db20b6ccef35952c
  9. 0xa0becadca9f91a584851290cb5e7361da8443bc485837334c5d7b805aa046417
  10. 0x6fe27e9b06f2a876722a46c0f1b30d41e92740f4b7cc3387ca42edc229cdc25c
  11. 0x9dc2ea57a358812a7cfb149bfe14e9cee1ef97d2929a7697d6a48c8c06c3cd7c
  12. 0x1269bf9fca7c16778dd2b72e0163a91a5a288ca31d13ad19673e0d6ecf6de8d5
  13. 0x9f8e192630bb5fc72241bfdb0460be2fccc141b3afd0197fe2e478dc28ce82a9
  14. 0xd59f3e577867f5105dd7f75598f16da8286185e426dfcdafb84e733fde2b2492
  15. 0x24e3e2bb8ee1e8d20756de35f0e0c4ec8eb1f193bd2cf3f077ee1f92f211c34d
  16. 0x8745bd887f5ce9f7a49558fd2b04cdcd97a05ea9f8a23f62d0e80cb13d328b0f
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON