Let Claude and other AI agents run your store through the Model Context Protocol.

Introduction

MCP connector

Nebular speaks the Model Context Protocol. Connect Claude, Claude Code, Cursor or any MCP client and it can run your store the way you do in the dashboard: products, orders, invoices, stock, banners, analytics, settings, and a blog it can research, write, edit and publish.

Endpoint

https://api.dashify.aurbyn.com/mcp

Transport

Streamable HTTP, stateless

Auth

OAuth 2.1 with PKCE, through your Nebular login

Every tool goes through the same checks as the dashboard. The agent can do what the connected user's role and plan allow, and nothing more.

Get started

Connect

Claude (claude.ai, Desktop, mobile)

  1. 1

    Open Claude

    In claude.ai go to Customize → Connectors → Add custom connector. On a Team or Enterprise plan an Owner adds it under Organization settings → Connectors.

  2. 2

    Enter the URL

    https://api.dashify.aurbyn.com/mcp
  3. 3

    Choose sign-in

    Authentication: Sign in now. OAuth client: Register automatically. Claude registers itself with Nebular; there is nothing to copy.

  4. 4

    Approve

    Claude opens the Nebular consent page. Sign in with your dashboard account and press Allow. The connector then shows Connected.

  5. 5

    Set permissions

    On the connector's page, under Tool permissions, set the tools you want to run unattended to Always allow. Leave delete tools and publish_post on Needs approval if a person should sign off.

Claude Code

Shell
claude mcp add --transport http nebular https://api.dashify.aurbyn.com/mcp
# then run /mcp inside Claude Code to sign in

Cursor and other clients

JSON
// .cursor/mcp.json
{
  "mcpServers": {
    "nebular": { "url": "https://api.dashify.aurbyn.com/mcp" }
  }
}

Check the server with MCP Inspector

Shell
npx @modelcontextprotocol/inspector --cli https://api.dashify.aurbyn.com/mcp --transport http --method tools/list

Get started

Permissions and safety

Three layers decide what an agent can do.

LayerWhereWhat it controls
RoleNebular → Settings → RolesWhich modules the connected user may view, edit or delete. A tool call outside the role fails with a clear message.
PlanYour Nebular subscriptionModule access and limits (posts, products, listings). A tool that would exceed a limit is refused.
Tool permissionClaude → connector → Tool permissionsAlways allow, Needs approval or Blocked, per tool. This is where a person stays in the loop.

Recommended for unattended runs

Set read tools and the writes your task needs to Always allow. Keep delete_* and publish_post on Needs approval unless you want the agent to publish and delete on its own. Keep auto-publish off in Settings so articles land as drafts.

Limits per store: 60 calls a minute and 20 writes an hour. Every call is logged with the store, user, tool and result.

Reference

Tool reference

97 tools, read from the server. Read tools never change data. Write tools create or edit. Delete tools cannot be undone.

Guides

Writing articles

create_draft holds machine-written articles to a contract built for search and answer engines. Send the fields, or one Markdown document in markdown (front matter, body, a FAQ section and a Sources list); explicit fields win.

FieldRule
title20 to 90 characters. The exact question or query the post answers.
sluglowercase letters, digits and single hyphens, 3 to 80 characters, unique in the store. Derived from the title when omitted.
metaTitle30 to 60 characters.
metaDescription70 to 155 characters.
excerpt120 to 400 characters, at most three sentences, answering the title directly.
contentMarkdownAt least 600 words and two "## " sections. No "# " heading. No FAQ or Sources section inside the body.
faqs3 to 8 pairs. Question 10 to 120 characters, answer 20 to 600 characters of plain text.
sources2 to 15 cited pages with https URLs, no duplicates.
authorMust match a name from list_categories_and_tags.
category, tagsCategory required; up to 6 short lowercase tags.
imageThe object returned by upload_image plus alt text of 10 to 125 characters.

A rejected article lists every field to fix, so the agent can correct and retry in the same run:

Tool result
{
  "ok": false,
  "errors": [
    { "field": "metaDescription", "code": "length", "message": "Meta description must be 70 to 155 characters (got 162).", "fix": "Rewrite meta description to fit 70-155 characters." },
    { "field": "faqs", "code": "count", "message": "faqs must have 3 to 8 question/answer pairs.", "fix": "Add or trim FAQ entries." }
  ]
}

Accepted articles also return warnings: target keyword missing from the title, fewer than two internal links, no cover. A draft emails the store owner with a link to review it.

StepTool
Avoid duplicates, find linkslist_posts
Get authors and categorieslist_categories_and_tags
Host the coverupload_image
Submitcreate_draft
Revise (draft or live)update_post
Go live or take downpublish_post

Guides

Example workflows

Prompts that work well as a scheduled task or a one-off chat. Copy one and adjust it.

Weekly article, drafted for review

Research one topic our readers search for that we have not covered. First call list_posts and list_categories_and_tags so you do not repeat a topic and you use a real author name and category. Write a 1200-word article in Markdown with an excerpt that answers the title, a FAQ of 4 questions and at least 3 cited sources. Call upload_image with a cover if you found one, then create_draft. If it returns errors, fix every listed field and call create_draft again. Finish by reporting the draft's title and the admin link.

Refresh an old post

Call get_post for the slug I give you. Check every fact and source, update the excerpt and FAQ if the answer changed, add "Updated" context where needed, then call update_post with only the changed fields. Do not call publish_post; the post is already live.

Morning store check

Call dashboard_stats, list_orders and list_contact_messages. Summarise new orders, anything waiting for a status change, and any contact message that needs a reply today. Then call website_analytics with range last7days and tell me the one page worth attention.

Restock from a supplier invoice

Create a purchase invoice from the details I paste with receiveStock set to true so inventory updates, then call list_products filtered to the affected category and confirm the new quantities.

Operations

Settings and tokens

SettingWhereEffect
Publish submitted articles immediatelySettings → API Integration → Claude connectorOff: articles arrive as drafts. On: create_draft publishes.
Post URL templatesame cardBuilds public URLs in tool results and blog feeds, e.g. https://example.com/blog/{slug}.
Disconnectsame cardInvalidates every token issued for the store. Clients must reconnect.

Access tokens last one hour and refresh automatically for 90 days. After that, or after Disconnect, reconnect from the client. Tokens are bound to one user and one store.

Operations

Troubleshooting

"Couldn't reach the MCP server" while adding the connector

Check that https://api.dashify.aurbyn.com/mcp answers from the public internet and that https://api.dashify.aurbyn.com/.well-known/oauth-protected-resource/mcp returns JSON. Corporate proxies that strip the WWW-Authenticate header on 401 break discovery.

The consent page says the approval link expired

The signed request lives for 10 minutes. Start the connection again from Claude.

A tool answers "Your Nebular role does not allow this"

The connected user's role lacks the module permission the dashboard would also require. Change the role under Settings → Roles or connect with an admin account.

Scheduled runs stop and ask for approval

Set those tools to Always allow on the connector's Tool permissions page, then use Run now once to confirm.

Tokens stopped working after a dashboard change

Disconnect in Settings → API Integration bumps the token version and invalidates every client on purpose. Reconnect from Claude.

create_draft keeps failing

Read the errors array: each entry names the field, the rule and a fix. Most failures are meta lengths and missing FAQ or sources.