@neuraldraft/mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NEURALDRAFT_API_KEY | Yes | Project API key. Format: ndsk_live_... or ndsk_test_... | |
| NEURALDRAFT_API_URL | No | Override the API base. Useful for staging or local dev. | https://api.neuraldraft.io/v1 |
| NEURALDRAFT_PROJECT_ID | No | Override when one key spans multiple projects. | |
| NEURALDRAFT_DISPLAY_NAME | No | Friendly name shown in your IDE's MCP list when you run multiple projects. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| register_componentA | Register an HTML section as an editable component in the customer's Neural Draft admin. Call this for EVERY section you generate (hero, features, pricing, footer, etc.). The HTML should follow the editable-HTML conventions (read conventions://editable-html first). Returns the component_id (preserve in code as a comment) and the translation keys that were created. |
| generate_blog_postA | Kick off the AI blog generation pipeline (research → draft → image → SEO). Returns a Job ID immediately; poll with the get_job tool until status is 'completed'. Costs ~400 credits per post. Set translate_to_all=true to fan out into every project target language (5 credits per extra language). |
| get_blog_postA | Fetch a blog post (title, body, excerpt, SEO meta, translations) by id or slug. Use |
| update_blog_postA | Patch a blog post's title / body / SEO meta / status. Use |
| generate_imageA | Generate a brand-consistent image (uses the project's color palette and visual tone automatically). Returns a Job ID; poll with get_job until status is 'completed'. Pass |
| list_imagesA | List image keys registered for the current project (key, url, updated_at). Optional |
| get_imageA | Resolve the registered URL for an image key. Returns 404 if the key is not registered. |
| register_imageA | Bind a direct image URL to a stable key (e.g. 'hero.background' → https://cdn.example.com/hero.webp). Idempotent — calling twice with the same key swaps the URL. Costs 0 credits. For AI-generated images use generate_image instead. |
| replace_imageA | Replace the image at |
| delete_imageA | Remove an image key registration so the URL is no longer resolvable via GET /v1/images/{key}. Does NOT delete the underlying CDN bytes; only the key→URL binding. Returns 404 if the key wasn't registered. |
| delete_contentA | Permanently remove a content / translation key and all its locale values. Use when retiring copy that's no longer rendered anywhere on the site. Returns 404 if the key doesn't exist. Destructive — no undo. |
| delete_pageA | Remove a page. Defaults to soft-retire (is_active=false), which is reversible via |
| delete_componentA | Permanently remove a registered component (editable HTML chunk) from the project. Use when retiring a section that's no longer on the page. Returns 404 if the component doesn't exist. Destructive — no undo. |
| list_galleriesA | List galleries for the current project, ordered by name (slug, name, items_count). Galleries are named, ordered collections of images used by AI-built customer sites. Read-only; doesn't consume credits. |
| get_galleryA | Fetch a gallery by slug. Returns name + ordered items array of {url, alt}. Use list_galleries first if you don't know the slug. Read-only; doesn't consume credits. |
| create_galleryA | Create a new gallery (named, ordered collection of image URLs). Slug is auto-derived from name when omitted. If the derived slug exists, -2, -3, ... is appended. Items are optional at create time — start empty and add via update_gallery. Max 200 items per gallery; each item is {url, alt?}. |
| update_galleryA | Update a gallery by slug. Pass |
| delete_galleryA | Permanently delete a gallery by slug. Destructive — no undo. Only removes the gallery record (slug + ordered item list). Does NOT delete the underlying image URLs or registered images — those live separately. |
| create_translation_keysA | Create multiple translation keys with default values in one call. Use this for keys you reference outside of registered components (nav labels, error strings, etc.). Returns lists of newly-created and already-existing keys. |
| list_productsA | List the project's products (paginated). Read-only; does not consume credits. Use before scaffolding a storefront so you generate cards for real items. |
| get_productA | Fetch a single product by id. Read-only; does not consume credits. Use when scaffolding a /products/[slug] page. |
| setup_booking_widgetA | Resolve the embed HTML + script URL for a bookable service. Drop the returned |
| get_jobA | Poll the status of an async Neural Draft job (returned by generate_blog_post, generate_image, etc.). Status flows pending → running → completed | failed | cancelled. |
| create_pageA | Create a page (slug + title + per-page SEO meta). Use this for multi-page sites — call once per page, then register_component for each section on that page. Free; doesn't consume credits. |
| list_pagesA | List the project's pages (slug, title, type, is_homepage, is_active). Read-only; doesn't consume credits. |
| get_pageA | Fetch a single page (slug, title, type, SEO meta) by id or slug. Read-only; doesn't consume credits. |
| update_pageA | Patch a page's fields and/or SEO meta. Only the fields you pass are touched. Use this to backfill meta_* on a page that was auto-created by register_component. Free; doesn't consume credits. |
| generate_videoA | Kick off a video generation and return a Job. Two tiers: tier='budget' (default) uses Wan 2.1 — 40 credits per clip. tier='premium' uses Kling v2.1 / Runway Gen4 — 300 credits, Build plan or higher only. Poll with get_job until status='completed'. Aspect ratios optimised for short-form social: 9:16 (Reels/TikTok), 16:9 (YouTube), 1:1 (feed). |
| create_bookable_serviceA | Create a service that customers can book. Two modes: • booking_type='time_slot' (default) — meeting / appointment style with fixed duration_minutes (e.g. 30, 60). • booking_type='date_range' — apartment / rental style with min_nights / max_nights. Free; embedding is via setup_booking_widget. |
| list_newsletter_subscribersA | List the project's captured newsletter subscribers (id, email, app_lead, subscribed_at). Read-only; doesn't consume credits. Use app_lead=true to filter to/from app-lead-only signups. |
| list_contact_form_submissionsA | List the project's captured contact-form submissions (id, email, subject, message, data). Read-only; doesn't consume credits. Use search= to substring-match against email, subject, or message. |
| get_brandA | Read the project's brand: voice, audience, content tone, colors, fonts, logo, target topics. Identical to the |
| update_brandA | Patch the project's brand: voice, audience, tone, colors, fonts, logo, languages. Only the fields you pass are updated; others are preserved (merge semantics). Free; doesn't consume credits. |
| get_contentA | Fetch a single translation key by name (returns the value for the chosen language plus every other locale that has been written). Use |
| list_contentA | List the project's translation keys (paginated). Use |
| get_usageA | Read the project's current credit balance, monthly limit, reset date, and per-operation spend breakdown for this billing period. Use this to decide whether a multi-step generation will fit the budget before kicking it off. Read-only; doesn't consume credits. |
| list_blog_postsA | List the project's blog posts (paginated). Filter by status (draft|published|scheduled), category slug/name, tag, or language. Sort by created_at or published_at; prefix with '-' for descending. Defaults to '-created_at'. Read-only; doesn't consume credits. |
| find_workspacesA | List the Neural Draft workspaces (tenants) an email is registered against. Useful for multi-workspace login troubleshooting — the user knows the email but forgot which workspace. Hits the CENTRAL host (e.g. https://app.neuraldraft.io), not the per-tenant API. Always 200, even for unknown emails (anti-enumeration). Free; doesn't consume credits. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| scaffold_blog_page | Generates /blog and /blog/[slug] for the chosen framework, fetching posts from Neural Draft. |
| scaffold_marketing_site | Generate a complete marketing site whose copy, images, and design tokens live in Neural Draft. |
| connect_existing_site | Migrate a static or hand-coded site to read content from Neural Draft, so the customer can edit it without touching code. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| brand-current | Current project brand: voice, audience, content tone, colors, fonts, logo, target topics. Read this BEFORE generating any UI or copy so the output is on-brand. |
| schema-blog-post | JSON schema describing GET /v1/blog-posts response items. Read this when generating a /blog or /blog/[slug] page so field names line up. |
| schema-product | JSON schema describing GET /v1/products response items. Read this when generating product cards or a storefront. |
| schema-booking | JSON schema describing bookable services, availability slots, and bookings. |
| conventions-editable-html | How to mark up generated HTML so it is editable in the Neural Draft admin (data-translate, data-image-key, runtime fetches). |
| conventions-api-usage | Auth headers, error shape, rate limits, idempotency, retries, and async/job patterns for the Neural Draft Project API. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vbalagovic/neuraldraft-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server