addrbookFor publishers
← The evidence ledger

Evidence row 734173

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e466df4b-82ab-4fae-9d3c-32ded94052b2
Recorded
Previous row
#309468
Body SHA-256
b1e32d7786c61f9f844310a20463e415f8f9b09439f4846a81a5ac45c102fed6
Leaf
0x531ec64dfa764a797b5020c12cb868e9dd850af340ffce3b3b6ac277b4a3034f

What was observed

{
  "count": 13,
  "tools": [
    {
      "description": "Returns the complete, copy-ready React/TSX source of one component as designed, plus notes on its images and any extra files it needs. Components use Tailwind CSS classes and import only react, framer-motion and lucide-react. Use it once you know the exact name; use get_component_styled instead when the component should take on an extracted brand style. Without a premium key, source comes back only for the six free samples (OrbitGalleryHero, CTABanner, FaqSection, ContactSection, FooterSection, BentoGridSection); other names return a notice on how to get a key.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "Component name as listed by list_components or search_components, e.g. 'OrbitGalleryHero'. Matching ignores case.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "get_component"
    },
    {
      "description": "Returns one component's source together with the tokens of a brand style, step-by-step instructions for mapping the component's colours, fonts and radii onto that style, and the colour values the component uses today. Use it instead of get_component when the result should match a specific brand. The server does not rewrite the code; you apply the mapping. Same premium rule as get_component.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "Component name as listed by list_components, e.g. 'GradientHeroSection'.",
            "type": "string"
          },
          "style": {
            "description": "Style slug exactly as listed by list_styles.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "style"
        ],
        "type": "object"
      },
      "name": "get_component_styled"
    },
    {
      "description": "Returns one post template as working instructions: the full HTML file, an export script to render it locally as PNG or video, and the rules on what may be changed. The server renders nothing; you edit and export the file. Use it after list_posts.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "lang": {
            "description": "Language of the instructions (optional, English by default).",
            "enum": [
              "de",
              "en"
            ],
            "type": "string"
          },
          "slug": {
            "description": "Template slug as listed by list_posts.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_post"
    },
    {
      "description": "Returns one page recipe: the ordered sections with the purpose of each, a composition file where available, and the full source of every section. Pass style to add brand tokens and adaptation instructions. Without a premium key, sections outside the free samples are named but their source is held back. The answer is long because it contains several complete components.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "Recipe slug as listed by list_recipes, e.g. 'saas-produkt' or 'hotel-stay'.",
            "type": "string"
          },
          "style": {
            "description": "Style slug from list_styles (optional), to adapt the page to a brand.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "get_recipe"
    },
    {
      "description": "Returns every design token of one extracted brand style: colours, font families and sizes, spacing, radii, CSS variables and the generated DESIGN.md (up to 4000 characters). Use it to theme your own code or set up a design system; use get_component_styled when you want one specific component already paired with the style.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "slug": {
            "description": "Style slug exactly as listed by list_styles.",
            "type": "string"
          }
        },
        "required": [
          "slug"
        ],
        "type": "object"
      },
      "name": "get_style"
    },
    {
      "description": "Lists every component category of the Systra Tools library with its slug, its title and how many components it holds. Start here when the user names a kind of page part (hero, pricing, footer) instead of a component, then pass the slug to list_components. No parameters, works without a key.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "list_categories"
    },
    {
      "description": "Lists component names, optionally limited to one category, one line each with the name and the category slug. Use it to browse a category before choosing; use search_components instead when you already have a keyword. Returns names only, no source: fetch the code with get_component. Works without a key.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Category slug from list_categories, e.g. 'heroes', 'cta', 'pricing', 'forms', 'footer'. Omit it to list every component (more than 600).",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_components"
    },
    {
      "description": "Lists images and a few videos from the Systra Tools media library (all AI-generated), each with a permanent URL to use directly as src, plus title, album and format. Filter by album and format, 100 per page. Use it to browse an album; use search_images to find a motif by keyword. Without a premium key only the free images are returned, three per album.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "album": {
            "description": "Album key (optional, German): verlaeufe, abstrakt, surreal, objekte, freisteller, natur, interior, essen, portraet, beauty, hochzeit, menschen, arbeitsplatz, business, industrie, gesundheit, sport, autos, luftfahrt, nachtleben. Without one, every album is returned.",
            "type": "string"
          },
          "format": {
            "description": "Image format to filter by (optional).",
            "enum": [
              "landscape",
              "portrait",
              "square"
            ],
            "type": "string"
          },
          "page": {
            "description": "Page of the result, 100 images per page (optional, default 1).",
            "minimum": 1,
            "type": "integer"
          }
        },
        "type": "object"
      },
      "name": "list_images"
    },
    {
      "description": "Lists the Instagram post templates (1080 x 1350) with slug, name, family and whether they need your own imagery. Each template is a single HTML file that can be rebuilt and exported as an image or a video. Pass query to search by name or purpose, for example 'quote' or 'statistic'. Use it to pick a slug for get_post.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "family": {
            "description": "Family to filter by (optional): 'klar' are calm informational posts, 'editorial' lives on the image and a serif face.",
            "enum": [
              "klar",
              "editorial"
            ],
            "type": "string"
          },
          "query": {
            "description": "Search term (optional). Every word must appear in the slug, name, purpose or family. Can be combined with family.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_posts"
    },
    {
      "description": "Lists curated page recipes: proven section sequences for complete landing pages (for example SaaS, coaching or a hotel), each with its number of sections and a short purpose. Pass query to search by industry, purpose or section, for example 'hotel' or 'pricing'. Use it when the user wants a whole page rather than one section, then call get_recipe.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "query": {
            "description": "Search term (optional). Every word must appear in the slug, title, description or section names. Without it, every recipe is listed.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_recipes"
    },
    {
      "description": "Lists the brand styles extracted from real websites with the Systra style extractor: slug, site name, primary and accent colour and heading font. Pass query to search by site name, domain, colour or font, for example 'bakery' or 'Inter'. Use it to find a slug for get_style, get_component_styled or get_recipe. Works without a key.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "query": {
            "description": "Search term (optional). Every word must appear in the slug, site name, domain, colours or fonts. Without it, the 30 newest styles are listed.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_styles"
    },
    {
      "description": "Finds components whose name or category contains the search term (one term, case-insensitive substring match) and returns their names with the category slug. Use it when you know roughly what you need, such as 'pricing', 'marquee', 'testimonial' or 'countdown'; use list_components to see a whole category. Names are English PascalCase, so short English words match best. Follow up with get_component for the source.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "query": {
            "description": "One keyword or name fragment, e.g. 'hero', 'gallery', 'bento'. Matched against component names and category slugs and titles.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_components"
    },
    {
      "description": "Finds images in the media library (all AI-generated) whose title, tags, file name or album contain every word of the query, and returns their permanent URLs, 100 per page. Use it for a motif, such as 'red dress', 'laptop desk' or 'misty forest'; use list_images to browse a whole album. Titles and tags are English, album keys German. Without a premium key only the free images are included.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "page": {
            "description": "Page of the result, 100 images per page (optional, default 1).",
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "One or more words; every word must match. E.g. 'gradient', 'laptop', 'red dress'.",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "type": "object"
      },
      "name": "search_images"
    }
  ]
}

What the leaf hashes

{"body":"b1e32d7786c61f9f844310a20463e415f8f9b09439f4846a81a5ac45c102fed6","id":734173,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793156054898596,"prev":309468,"subject":"e466df4b-82ab-4fae-9d3c-32ded94052b2","subject_kind":"endpoint"}

Proof

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

  1. 0x531e320de724f44c8a806a7b41abcc03b2f508b855fe81170ba1d7425477db60
  2. 0xcdc0923acc7ffe07815f755398424881952c96f7af9e899e8c51d88a1a97a47b
  3. 0x7c8c67f7c129d8183760c2b8e783259683ca0d3f51cb5d552ed0925190d607a2
  4. 0xaffe077721be80ca83f1b3d9fc57d4cf6f1a825defbdbf87d074061ee98a50fb
  5. 0xa256642033632fae4968f0105925a0a84e0f40ee2d25485fa46384ccbf38aa89
  6. 0xd9c80ac04b54ed54bbfa859223d1709455939b28795370bee55543e76ab2a979
  7. 0x6c43b3f280c400017156f2998334504fcd765560f68e7e162da3c54ee7cc49c8
  8. 0x98e2ae44ab0061615cbf5253c1722ec6d0916090dda485b02d05153198b9543b
  9. 0xf0f471c3d080914e4face93c2952bd1860bc632d2b4c6ce61ab8f95ee7994f6f
  10. 0xf30935af4ea68533fb323fc23b82fd7f59136704990deead17fdb5e356f4d627
  11. 0x955f590ffc682fef5081e6f8c852802782505896c4daea331abc697910c11718
  12. 0xeb6be17d47f2eefd90b40b490d16cb428c7e6888bb98b04a9d68663dc014c921
  13. 0x7d1829083dbabe39994f2d5687f99b5933bed73cd0300562b3af1bb8f3d94388
  14. 0x4a3671cf60fc2b873faa04c5863043b075336ef59080ef23af50811e899402d0
  15. 0xd12637e9c035a4c3a66d0f0436dfc7bf3f13da4d17ea045b647d9e9beef1ef11
  16. 0xa99a40fe210d675bb6ab72d4bb72ab40eb44ac345773c457fbe58e67a47b03df
  17. 0x7a743a0a09057bae687051274e1d45bf973bd36a1a4ba16a191b5d29e3bdfa2a
  18. 0xe027395fafb7fc41921c42ca0542524ea22204cbd5908b70b27f3d5fb26f5d0f
Day root
0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e
Chained
0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be
Published
On Arc Testnet, block 69584042: 0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae

How to check it · This row as JSON