Bardiyah
Turn your AI assistant into your content partner.
What it can do
- Search: Search across everything the signed-in user has in Bardiyah in one call: projects, scripts, the sections inside scripts, and ideas. Prefer this over the list tools whenever you are looking for
- List Ideas: List the signed-in user's content ideas. Returns short summaries — a plain-text taste of each idea rather than the whole thing — so fetch the full text with get-idea. Supports free-text se
- Get Idea: Fetch one content idea owned by the signed-in user, with its full text, its status and the project it sits in. The text comes back ready to edit; revise it and send the revised version to up
What data it sees
Do you need an account
No: the server works without sign-in
Turn your AI assistant into your content partner. Bardiyah connects ChatGPT, Claude and any MCP client to your own ideas, projects and video scripts, so it can search your work, turn an idea into a full script card by card, and keep every video moving from idea to publish. Built Arabic first, works fully in Arabic and English. Secure OAuth sign in, no delete actions, your data stays yours.
How to connect
How to connect Bardiyah to Claude
The server address to paste into Claude settings:
https://bardiyah-mcp.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Bardiyah to ChatGPT
The server address to paste into ChatGPT settings:
https://bardiyah-mcp.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Bardiyah to Cursor
The server address to paste into Cursor settings:
https://bardiyah-mcp.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (41)
Raw names from tools/list. Only developers need these.
| search | Search across everything the signed-in user has in Bardiyah in one call: projects, scripts, the sections inside scripts, and ideas. Prefer this over the list tools whenever you are looking for something specific rather than browsing — the list tools page through everything, this matches text. Arabic is matched leniently, so \"قصه\" finds \"قصة\" and \"٥\" finds \"5\"; there is no need to try spelling variants yourself. Results are short summaries, so fetch the whole thing with get-project, get-script or get-idea once you know which one you want. Does not search tasks, habits, personal subscriptions, or anything about billing. |
| list-ideas | List the signed-in user's content ideas. Returns short summaries — a plain-text taste of each idea rather than the whole thing — so fetch the full text with get-idea. Supports free-text search over the title and the body, an optional status filter (draft, validated, converted) and paging. Use this to find ideas before reading or editing one. |
| get-idea | Fetch one content idea owned by the signed-in user, with its full text, its status and the project it sits in. The text comes back ready to edit; revise it and send the revised version to update-idea. Returns an error if the idea does not exist or belongs to somebody else. |
| create-idea | Capture a new content idea for the signed-in user. Provide the idea body; a title is derived automatically when omitted. Optionally attach it to a project the user can access and set an initial status (draft, validated, converted). |
| update-idea | Partially update a content idea owned by the signed-in user. Only the fields you pass are changed. Returns an error if the idea does not exist or belongs to another user. |
| list-projects | List the projects the signed-in user can reach: the ones they own plus any they are an active member of. Returns short summaries — the name, the website and how many scripts and ideas each one holds — not what is inside them; call get-project for one project, or search to find content across all of them. Supports free-text search over the project name, and paging. |
| get-project | Fetch a single project the signed-in user can access, including counts of its scripts and ideas. Returns an error if the project does not exist or the user cannot access it. |
| create-project | Create a new project owned by the signed-in user. Provide a name and, optionally, a website. The signed-in user becomes the project owner. |
| update-project | Update a project the signed-in user owns or manages. Only the fields you pass are changed. Returns an error if the project does not exist or the user cannot manage it. |
| list-scripts | List the scripts the signed-in user can reach. Returns short summaries — the title, the project, the status and the rating — never the writing itself; call get-script for the sections of one script, or search when you are looking for a phrase rather than browsing. Can be narrowed to one project, and searched by title. Paged. |
| get-script | Fetch one script the signed-in user can reach, together with all of its sections in order. Each section's text comes back ready to edit; work from that and send your revision back the same way. Returns an error if the script does not exist or the user cannot reach it. |
| create-script | Create a script for the signed-in user. Give it a title; naming a project is optional, and a script with no project is an ordinary script here rather than a lesser one. The script starts at the user's own default status. Send the platforms it is for in the same call rather than in a second write. Send your own rating out of ten as well — Bardiyah stores the number you send and never works one out itself. After creating the script, always add its sections, and always finish by adding one last section titled exactly \"Viral Score\" with add-script-content (that tool's description carries the required shape). Every script ends with a Viral Score section. |
| update-script | Update a script the signed-in user can edit. Only what you send is changed. Send your rating out of ten to set or revise it — Bardiyah stores the number you send and never works one out itself. Returns an error if the script does not exist or the user cannot edit it. |
| add-script-content | Add a new section — a titled piece of the script — to the end of a script the signed-in user can edit. Use this to draft or extend a script one section at a time. Send your own rating out of ten to set or revise it as the script grows; Bardiyah stores the number you send and never works one out itself. Whenever you finish adding a script's content, always add one final section titled exactly \"Viral Score\". Its body must follow this exact shape: first line is the rating as \"N / 10\" (a whole number from 1 to 10) in bold; then a line \"ليه السكربت ده قوي فيروسيًا:\" followed by 3-5 bullet points on what drives shareability (hook strength, retention, emotional pull, comment-driving call to action, visual potential); then a final line starting with \"نقطة الضعف:\" in bold giving the single biggest weakness. Write that section in the same Egyptian Arabic dialect as the script, and send the same number as the rating so the stored rating and the section agree. Do this on every script, without being asked. |
| list-content-series | List the content series the signed-in user can reach. A series groups related videos — a season, a recurring format, a themed run. Returns short summaries; call get-content-series for one in full. Can be narrowed to one project, or searched by title. |
| get-content-series | Fetch one content series in full, with its description, its kind and the project it belongs to. Use list-content-series or search to find which one you want first. |
| create-content-series | Create a content series inside a project the signed-in user can add to. Use this when several videos belong together as a season or a recurring format. Scripts and ideas are attached to a series in Bardiyah, not from here. |
| update-content-series | Update a content series the signed-in user can edit. Only the fields you pass are changed; an update that would empty the description is refused. |
| list-content-schedules | List the signed-in user's scheduled content: the publish times, captions and calls to action attached to scripts. Returns short summaries; call get-content-schedule for one in full. Can be narrowed to a single script by name. |
| get-content-schedule | Fetch one scheduled item in full — when it goes out, its caption, its description, its hashtags, its call to action, and the script it belongs to. |
| create-content-schedule | Schedule a script for publication. Say which script, by name, and when it should go out. Use this to plan when something is published and to draft the caption that goes with it. Every scheduled item belongs to exactly one script. |
| update-content-schedule | Update a scheduled item the signed-in user can edit - move the date, or revise the caption, hashtags or call to action. Only the fields you pass are changed. |
| list-storyboards | List the storyboards the signed-in user can reach. Returns short summaries; call get-storyboard for one in full. Can be narrowed to a single script by name. |
| get-storyboard | Fetch one storyboard in full - its title, kind and workflow status. The individual cards, shots and scenes inside it are edited in Bardiyah, not through this server. |
| create-storyboard | Create a storyboard for a script. Choose the kind carefully: basic, advanced and cinematic are separate features, and one the account does not have is refused. The storyboard is created empty; its cards and shots are drawn in Bardiyah. |
| update-storyboard | Update a storyboard the signed-in user can edit - retitle it, or move its workflow status. Only the fields you pass are changed. |
| list-filming-locations | List the filming locations the signed-in user can reach, with their kind and their name. Returns short summaries; call get-filming-location for one in full. |
| get-filming-location | Fetch one filming location in full - the map link, the best time to shoot, and the notes on parking, safety and sound. |
| update-filming-location | Update a filming location the signed-in user can edit - add or refine the notes on timing, parking, safety and sound. Only the fields you pass are changed. New locations are added in Bardiyah, where the country is chosen from a list. |
| list-equipment-items | List the equipment the signed-in user can reach, with its category and whether it is available. Returns short summaries; call get-equipment-item for one in full. Can be narrowed to one project by name. |
| get-equipment-item | Fetch one equipment item in full - its category, quantity, status, who is carrying it and any notes. |
| create-equipment-item | Add a piece of equipment to a project the signed-in user can add to. Name and category are both required. Use this to build out a kit list for a shoot. |
| update-equipment-item | Update an equipment item the signed-in user can edit - change its status, quantity, who is carrying it, or the notes. Only the fields you pass are changed. |
| list-shoot-days | List the days of filming the signed-in user can reach, with their dates and what each one is for. Returns short summaries; call get-shoot-day for one in full. Can be narrowed to one project, or to the days filming a particular script, by name. |
| get-shoot-day | Fetch one shoot day in full - the date, call time, plan, expected weather, transport, permits and backup plan. |
| create-shoot-day | Plan a shoot day inside a project the signed-in user can add to. A title and a date are required. Use this to lay out the logistics for a day of filming. |
| update-shoot-day | Update a shoot day the signed-in user can edit - move the date, change the call time, or extend the notes on transport, permits and the backup plan. Only the fields you pass are changed. |
| list-thumbnail-briefs | List the thumbnail briefs the signed-in user can reach. Returns short summaries; call get-thumbnail-brief for one in full. Can be narrowed to one project, or to the briefs written for a particular script, by name. |
| get-thumbnail-brief | Fetch one thumbnail brief in full - the concept, subject placement, emotion, text direction, background, palette and the object the eye should reach first. |
| create-thumbnail-brief | Write a thumbnail brief inside a project the signed-in user can add to. Use this to specify what a thumbnail has to communicate before anyone designs it. A brief title is required; everything else is the brief itself. |
| update-thumbnail-brief | Update a thumbnail brief the signed-in user can edit - sharpen the concept, the emotion or the text direction. Only the fields you pass are changed; an update that would empty a section is refused. |