← The evidence ledger
Evidence row 995128
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint e466df4b-82ab-4fae-9d3c-32ded94052b2
- Recorded
- Previous row
- #734173
- Body SHA-256
- 789347485958ecfed37c68a1810e515511f05ede29a51dbbef85d4b478d9e251
- Leaf
- 0xb47dbda5d910087f5acbad1304df1803e1089d6b2f73f8a7afb273c3f52dbc86
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 for the free components, the first six of every category, which list_components and search_components mark as \"free\"; 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 that are not free 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; without one, the components whose source is free are marked \"free\".",
"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":"789347485958ecfed37c68a1810e515511f05ede29a51dbbef85d4b478d9e251","id":995128,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793249199650529,"prev":734173,"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 (242798 rows).
- 0xb47db9d5e9a51e82022d22e6690a2e0fa4328d0abf9b6323ba54b8a33dbde017
- 0x38efb142ee2ca305b6b4b026176a4ea28ccc40d047eba662d4aaf8949be0537f
- 0xbbbc4a1567d6d3bc4f18347564657d29e098fcf016c585277315601fc5976c44
- 0xdd2ad58dea23a7daa98e54d9c5c08b4b9569bbf6c0d8ba4eacb5bb82ef31a3a6
- 0xe88197e404840657f1a545c359de3bb0a82e3a66b1ae99f4a977e166e398f979
- 0xfca0580e633d7ee3debf589478e0917b8434aed8ca6ba8400df4ae233bf408a3
- 0x46cf70a46fcee41d3edf3042535bb7821d82a40f94e6f9e39bb86d0e2d080ffa
- 0x2f76499d0340bc99c65530ca4f90041ab2636961665961c95cfdedfc9c51ef9f
- 0xa3b1ab9474c1c7c68757661f22b15d6e50e4469aa67d9d3eb3ea4aa54e631be4
- 0x7d0baf601f30317a6e2e02e81c8d2849cd5031731d2ae5cef809d260895754a3
- 0xc01f1f0f8e89972782724882a383210d98bba1ea61114d1a43846ea2356d4d6e
- 0x3a0ff2ae5308186dd8e4e0f846bbec103aa0059752ff382e52806d78f514eaa2
- 0xbd648578c40e9d57b13dded5303ab0e7546d05e31678dcce5c005a0949fcc24a
- 0x585b1e0c9b8e6cc02683a3bcbd6f86329575401feac9ee51a7efd21ed87f7ed0
- 0xaa1d19094c2ce6d011a3c40533fa7efee207719d6c482ffc47018b28e5518acc
- 0xef5d5572aac8f06b61579b7167b369fcb479d9027d4037dc9cacff9e3a26ffd2
- 0xa1fa2e97e71ad6e802f325afd74bb7095901f2060529c9739182a1233f8804bc
- 0xe01539ac4c9f9cdf265a9e5c6d99c8da11e70ff0c7175fb23e402d33b9d79785
- Day root
- 0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
- Chained
- 0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
- Published
- On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1