Skip to content

Dali by Lulu

by Lulu-The-Narwhal · remote · local (pypi) · no sign-in to list tools · v0.6.1 · published by GitHub user Lulu-The-Narwhal

The prediction MCP — score your prompt before you generate, so you never waste a credit.

Changes · 8

16 tools: 8 change things and 8 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http dali https://dali.getlulu.dev/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

16 tools

Changes things 8Claude Code: ask
  • creative_patternsCommunity graph: which patterns consistently produce high-grade prompts for this generator?No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Community graph: which patterns consistently produce high-grade prompts for this generator? Powered by the V3 graph brain (Supabase PostgreSQL). Every scored prompt contributes. Returns top patterns by type, enhancement unlocks, and cross-model universal patterns.

    Annotations the server declares

    • readOnlyHint: true
  • dali_versionCurrent Dali MCP version and changelog.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Current Dali MCP version and changelog. Check this whenever you want to know what tools are available, what changed in the latest release, or which version is running.

    Annotations the server declares

    • readOnlyHint: true
  • my_storyYour Dali creative report — scoring history, generator stats, recent scorers, creative DNA.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Your Dali creative report — scoring history, generator stats, recent scorers, creative DNA.

    Annotations the server declares

    • readOnlyHint: true
  • score_creativeScore an actual ad IMAGE (not the text prompt) for conversion — before you spend.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score an actual ad IMAGE (not the text prompt) for conversion — before you spend. Conversion lives in the pixels, so this scores the real creative and gives you ONE answer combining two views, in a single call: • HEADLINE score = how much it visually resembles PROVEN WINNERS (Vertex embedding vs the live winner corpus). The sharpest predictor — it reads the whole look and self-solves archetype (a premium ad resembles premium winners, not scammy direct-response ones). • WHAT TO CHANGE = the specific winning attributes it's missing (Gemini vision vs category priors) — the actionable detail. • DEFECT GATE = generation defects (extra fingers, garbled text, warped anatomy). Use it on a generated image, a mockup, or any ad you're about to run. Returns: score — 0-100 headline: visual similarity to proven winners verdict — one-line looks-like-a-winner / partial / rework call looks_like — the real proven winners it resembles (advertiser, category, days-run) what_to_change — high-lift winning attributes it lacks, each with a fix sentence you_already_have — winning attributes it already has has_defect/defects — generation defects to fix before shipping detail — raw numbers {embedding_score, attribute_score} for transparency category examples: beauty, supplements, wellness, fitness, food, apparel, tech, pets. Leave category empty for a cross-vertical look-alike match + defect QA.

    Annotations the server declares

    • readOnlyHint: true
  • score_promptScore a prompt for a generation target (0–100) and, if it's weak, return the rewrite brief — in ONE call.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score a prompt for a generation target (0–100) and, if it's weak, return the rewrite brief — in ONE call. Reads intent with a fast heuristic keyword analyzer, scores the prompt, then: • score ≥ 70 (A/B) → returns the scorecard and tells you to proceed. • score < 70 (C/D/F) → returns the scorecard PLUS a rewrite brief so you can fix it without a second call. Write the enhanced prompt from the brief, then call track_enhancement(original, enhanced, generator). Returns a ScoreCard (overall, grade A–F, per-dimension breakdown, what's missing, anti-patterns, verdict) plus needs_enhancement, and enhancement_brief when weak. category (optional): the ad vertical (e.g. "wellness", "beauty") — when set and conversion priors exist, the brief upgrades to a conversion-justified rewrite. Supported generators: veo3, higgsfield, midjourney, flux, kling, sora, imagen…

    Annotations the server declares

    • readOnlyHint: true
  • score_variationsScore 2–8 prompt variations for the same generator and rank them best-to-worst.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Score 2–8 prompt variations for the same generator and rank them best-to-worst. Use this when you've drafted multiple versions of a prompt and want to pick the winner without burning generation credits. Returns a ranked list with per-dimension comparison so you can see exactly why one variant beats another.

    Annotations the server declares

    • readOnlyHint: true
  • suggest_generatorRecommend the best generator for your creative concept and per-generation budget.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Recommend the best generator for your creative concept and per-generation budget. Analyzes the concept's creative signals (motion, style, subject type, use case) and matches them to generators within your budget. Returns a ranked list so you can make an informed choice before scoring the actual prompt.

    Annotations the server declares

    • readOnlyHint: true
  • track_enhancementRecord an enhancement pair in the Dali graph brain.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Record an enhancement pair in the Dali graph brain. Call this AFTER you write an enhanced prompt from score_prompt's brief or enhance_prompt. This records the before→after improvement so the graph learns which rewrites consistently push scores up — enriching creative_patterns and community_benchmark over time. Returns before/after scores so you can confirm the delta.

    Annotations the server declares

    • readOnlyHint: true
Only reads 8Claude Code: allow
  • analyze_intentParse a creative prompt into structured intent dimensions.No findings

    Why it is in this group

    • The name "analyze_intent" says "analyze": a word for reading.
    Description, as the server wrote it
    Parse a creative prompt into structured intent dimensions.

    Annotations the server declares

    • readOnlyHint: true
  • analyze_winning_formulaFind YOUR winning ad formula from your own numbers — paste your ads export.No findings

    Why it is in this group

    • The name "analyze_winning_formula" says "analyze": a word for reading.
    Description, as the server wrote it
    Find YOUR winning ad formula from your own numbers — paste your ads export. The category prior is a cold-start fallback; the real signal is what wins in YOUR account. Paste an ads CSV (a creative image-URL column + a performance column — CPA / CTR / ROAS / purchases) and Dali runs vision on your winners vs losers and returns the attributes that separate them, plus how your account compares to the industry median. If an email is supplied, the formula is saved and emailed with a ready-to-paste Claude prompt wired to Dali — so scoring the next creative is one step. Returns: formula — attributes over-represented in your winners (value, winner%/loser%, lift) benchmark — your median vs the vertical's industry median (when category given) analyzed — how many winners/losers were read, and the metric direction saved — whether the lead+formula were captured (only when email supplied)

    Annotations the server declares

    • readOnlyHint: true
  • community_benchmarkCompare your prompt against community top scorers for this generator.No findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.
    Description, as the server wrote it
    Compare your prompt against community top scorers for this generator. Returns your score, missing A-grade patterns, and highest-ROI patterns to add.

    Annotations the server declares

    • readOnlyHint: true
  • enhance_promptGet a rewrite brief for this prompt + generator.No findings

    Why it is in this group

    • The description's first verb is "get": a word for reading.
    Description, as the server wrote it
    Get a rewrite brief for this prompt + generator. YOU write the enhanced prompt from the brief. Returns a structured brief with score_before, rewrite_brief, and llm_instructions. category (optional): the ad vertical (e.g. "wellness", "beauty") if known. When set and conversion priors exist for it, the brief upgrades from craft advice to a conversion-justified one, backed by real ad-performance data. IMPORTANT: After you write the enhanced prompt, you MUST call track_enhancement(original_prompt, your_enhanced_prompt, generator) immediately. This is not optional — it records the improvement and is required for the graph to learn.

    Annotations the server declares

    • readOnlyHint: true
  • enhancement_pathShow the most reliable path from a bad grade to an A on this generator.No findings

    Why it is in this group

    • The description's first verb is "show": a word for reading.
    Description, as the server wrote it
    Show the most reliable path from a bad grade to an A on this generator. Mines the Dali graph for all F/D → A/B enhancement pairs and surfaces the patterns that appear most consistently in the 'after' side. These are the highest-ROI moves for this specific generator. Use this when: - A prompt just scored D or F and you're not sure what to fix - You want to know which improvements matter most for a specific generator - You want to understand generator-specific enhancement strategy

    Annotations the server declares

    • readOnlyHint: true
  • list_generatorsList all supported generation targets (providers + models) with medium and core strength.No findings

    Why it is in this group

    • The name "list_generators" says "list": a word for reading.
    Description, as the server wrote it
    List all supported generation targets (providers + models) with medium and core strength.

    Annotations the server declares

    • readOnlyHint: true
  • prompt_neighborsFind community A/B-grade prompts structurally similar to yours.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find community A/B-grade prompts structurally similar to yours. Uses graph traversal (Memgraph) to locate prompts that share the most creative patterns with your input and scored A or B on the same generator. Returns what those prompts did right — so you can adopt the same moves. Use this when: - Your prompt scored C or below and you want inspiration - You want to see how the community solved the same creative problem - You need concrete A-grade examples, not abstract advice

    Annotations the server declares

    • readOnlyHint: true
  • score_creative_from_viewScore an ad creative YOU are looking at (e.g.No findings

    Why it is in this group

    • The name "score_creative_from_view" says "view": a word for reading.
    Description, as the server wrote it
    Score an ad creative YOU are looking at (e.g. a pasted/attached image) against the winning corpus — no URL needed. Use this when the user shares an image in the conversation: read the creative yourself and fill in what you see, and Dali scores it against what wins in the category (3,800+ proven winners), returning the conversion verdict and exactly which winning attributes it's missing. You (the model) provide the visual read; Dali provides the winning-data scoring. (For a fetchable image URL, prefer score_creative — it adds the embedding similarity headline, which needs the real pixels.) Fill these from looking at the image: category — vertical: beauty, wellness, supplements, fitness, food, apparel, tech, pets lighting — warm lighting | natural light | studio light | dramatic lighting | clinical bright | dark moody | neon subject — single person | group | product only | no person | before after subject_age — young adult | middle age | senior | child | none format — ugc selfie | testimonial | product hero | lifestyle | chart infographic | text meme | comparison text_density — none | light | heavy dominant_emotion — calm | excited | trust | fear | aspiration | neutral eye_contact — true if a person looks at camera offer_visible — true if a price/discount/offer is shown defects — list any generation defects (extra fingers, garbled text, warped anatomy); [] if clean Returns: conversion_score (0-100), verdict, matched (winning attributes it has), missing (high-lift attributes to add, each with a fix sentence), has_defect/defects.

    Annotations the server declares

    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.6.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http dali https://dali.getlulu.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__dali__analyze_intent",
      "mcp__dali__enhance_prompt",
      "mcp__dali__community_benchmark",
      "mcp__dali__prompt_neighbors",
      "mcp__dali__enhancement_path",
      "mcp__dali__list_generators",
      "mcp__dali__score_creative_from_view",
      "mcp__dali__analyze_winning_formula"
    ],
    "ask": [
      "mcp__dali__score_prompt",
      "mcp__dali__track_enhancement",
      "mcp__dali__suggest_generator",
      "mcp__dali__score_variations",
      "mcp__dali__creative_patterns",
      "mcp__dali__my_story",
      "mcp__dali__dali_version",
      "mcp__dali__score_creative"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as dali. Review it before you use it.