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
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
Enter the URL
https://api.dashify.aurbyn.com/mcp - 3
Choose sign-in
Authentication: Sign in now. OAuth client: Register automatically. Claude registers itself with Nebular; there is nothing to copy.
- 4
Approve
Claude opens the Nebular consent page. Sign in with your dashboard account and press Allow. The connector then shows Connected.
- 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
claude mcp add --transport http nebular https://api.dashify.aurbyn.com/mcp
# then run /mcp inside Claude Code to sign inCursor and other clients
// .cursor/mcp.json
{
"mcpServers": {
"nebular": { "url": "https://api.dashify.aurbyn.com/mcp" }
}
}Check the server with MCP Inspector
npx @modelcontextprotocol/inspector --cli https://api.dashify.aurbyn.com/mcp --transport http --method tools/listGet started
Permissions and safety
Three layers decide what an agent can do.
| Layer | Where | What it controls |
|---|---|---|
| Role | Nebular → Settings → Roles | Which modules the connected user may view, edit or delete. A tool call outside the role fails with a clear message. |
| Plan | Your Nebular subscription | Module access and limits (posts, products, listings). A tool that would exceed a limit is refused. |
| Tool permission | Claude → connector → Tool permissions | Always allow, Needs approval or Blocked, per tool. This is where a person stays in the loop. |
Recommended for unattended runs
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.
| Field | Rule |
|---|---|
| title | 20 to 90 characters. The exact question or query the post answers. |
| slug | lowercase letters, digits and single hyphens, 3 to 80 characters, unique in the store. Derived from the title when omitted. |
| metaTitle | 30 to 60 characters. |
| metaDescription | 70 to 155 characters. |
| excerpt | 120 to 400 characters, at most three sentences, answering the title directly. |
| contentMarkdown | At least 600 words and two "## " sections. No "# " heading. No FAQ or Sources section inside the body. |
| faqs | 3 to 8 pairs. Question 10 to 120 characters, answer 20 to 600 characters of plain text. |
| sources | 2 to 15 cited pages with https URLs, no duplicates. |
| author | Must match a name from list_categories_and_tags. |
| category, tags | Category required; up to 6 short lowercase tags. |
| image | The 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:
{
"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.
| Step | Tool |
|---|---|
| Avoid duplicates, find links | list_posts |
| Get authors and categories | list_categories_and_tags |
| Host the cover | upload_image |
| Submit | create_draft |
| Revise (draft or live) | update_post |
| Go live or take down | publish_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
| Setting | Where | Effect |
|---|---|---|
| Publish submitted articles immediately | Settings → API Integration → Claude connector | Off: articles arrive as drafts. On: create_draft publishes. |
| Post URL template | same card | Builds public URLs in tool results and blog feeds, e.g. https://example.com/blog/{slug}. |
| Disconnect | same card | Invalidates 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.