@ebitex/content-mcp 0.5.101 → 0.5.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpCorpus.generated.d.ts","sourceRoot":"","sources":["../../src/resources/helpCorpus.generated.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,eAAO,MAAM,WAAW,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"helpCorpus.generated.d.ts","sourceRoot":"","sources":["../../src/resources/helpCorpus.generated.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAErE,eAAO,MAAM,WAAW,EAAE,SAAS,EAyHlC,CAAA"}
|
|
@@ -93,6 +93,11 @@ export const HELP_TOPICS = [
|
|
|
93
93
|
"title": "Management keys",
|
|
94
94
|
"body": "# Management keys\n\nA **management key** lets a script, a build pipeline, or another system create and publish content in\nContent — the things you would otherwise do by hand in the app.\n\nThey're for automation. If you're editing content yourself, you don't need one.\n\n> Management keys need the **Pro** plan or above. A trial counts, so you can use them straight away.\n\n## What a key can do\n\nTwo things decide that, and you choose both when you create the key.\n\n**Its role** decides *which content* the key can touch. A key acts exactly as the role you give it —\nthe same folder permissions, the same approval workflows, the same limits. A key bound to a role that\ncan't edit a folder can't edit that folder, and a page waiting for approval can't be published by a\nscript any more than by a person.\n\n**Its permissions** decide *what kind of thing* the key can do:\n\n| Permission | Lets the key |\n|---|---|\n| **Read** | Look at what's there, and preview what a change would do |\n| **Write** | Apply a whole bundle of changes at once, and upload files |\n| **Publish** | Make content live |\n| **Authoring** | Create, edit and **delete** individual items — a Contract, a Component, a page |\n\nThey combine. A key with Read only is genuinely safe to use in a check that comments on a pull\nrequest: it can report exactly what *would* change and is incapable of changing it.\n\n**Authoring is the only one that can delete anything**, which is why it is separate from Write rather\nthan part of it. Write applies a bundle, and a bundle only ever adds or updates — it never removes a\nContract, a Component or a page. So a key that has always worked fine for your pipeline keeps doing\nexactly what it did; nothing widens on its own. Add Authoring when you want a script or a tool to\nbuild a model item by item, and leave it off when you do not.\n\n**Its environment.** A key works in one authoring environment and no other. To run a pipeline against\nstaging and production, create two keys. That's deliberate — it means a staging pipeline cannot\ntouch production even by mistake.\n\n## Creating a key\n\n1. Go to **Settings → API Keys**, and find **Management keys**.\n2. Check the **environment** shown in the switcher at the top of the page. The key is bound to\n whichever authoring environment you are currently in, so switch first if that is not the one you\n want.\n3. Choose a **name** you'll recognize later — \"Marketing site CI\", not \"key 2\".\n4. Choose the **role** it acts as. Pick the least powerful role that can do the job.\n5. Tick the **permissions** it needs. If in doubt, start with Read and add more when something fails.\n6. Choose when it **expires** — 30 days, 90 days, a year, or never. New keys default to 90 days.\n7. Optionally, restrict it to **IP ranges** — if your build server has a fixed address, this is worth\n doing.\n\n**The key is shown once.** Copy it into your secret store before closing the dialog; it can't be\nshown again. If you lose it, revoke it and create another.\n\n> You can't create a key more powerful than you are. If you don't hold a permission yourself, you\n> can't give it to a key.\n\n## Keeping a key safe\n\nA management key can change your content. Treat it like a password.\n\n- **Never put one in a browser, a web page, or a front-end bundle.** It won't work there — we\n deliberately prevent it — but the attempt means the key has been somewhere it shouldn't.\n- Store it in your CI system's secret store, never in a repository or a command you type.\n- Give it the narrowest role and fewest permissions that work.\n- Set an expiry if the key is for something temporary.\n- Restrict it to your build server's IP range where you can.\n\n## Revoking a key\n\n**Settings → API Keys → Management keys → Revoke.** It stops working immediately.\n\nThe record stays — who created it, when, and when it was last used — because that history is exactly\nwhat you need after a key has leaked.\n\nDeleting the **role** a key is bound to also stops that key working, immediately and permanently.\nThat's intentional: taking away a role takes away everything acting on its behalf.\n\n## Seeing what a key did\n\nEvery change a key makes is recorded in your organization's activity log under the key's name rather\nthan a person's, so you can always tell an automated change from someone's edit.\n\n## Troubleshooting\n\n| What you see | What it means |\n|---|---|\n| \"Invalid API key\" | Revoked, expired, mistyped — or the role it was bound to was deleted. The key list shows an **Expired** badge, so check there first |\n| \"Scope denied\" | The key lacks that permission. It names which one |\n| \"Tier required\" | Your plan doesn't include management keys. Pro or above is needed |\n| \"IP denied\" | The key is restricted to IP ranges and the caller isn't in one |\n| \"Confirm overwrite required\" | Something changed in Content since your script last looked. Review before overwriting |\n| \"Unknown property\" | Your request had a field we don't recognize — usually a typo. It names the field |\n| \"Quota exceeded\" | Too many requests for your plan. It names the limit |\n\n## Related\n\n- [Building a content model through the API](agent-authoring.md) — the model in API terms\n- [Getting help](../general/getting-help.md)\n- For developers: the [Content Management API guide](https://developers.ebitex.io/getting-started/content-as-code/) and its\n [reference](https://developers.ebitex.io/api/),\n and the [Content MCP server](https://developers.ebitex.io/getting-started/content-as-code/#ai-agents-ebitexcontent-mcp), which lets an AI agent build a content\n model using a key you mint. Mint it against a **non-production** authoring environment, and leave\n the authoring scope off unless the agent needs to write.\n"
|
|
95
95
|
},
|
|
96
|
+
{
|
|
97
|
+
"slug": "proposals",
|
|
98
|
+
"title": "Proposals",
|
|
99
|
+
"body": "# Proposals\n\nA **proposal** is content somebody outside your organization has offered — a breeder submitting a\nlitter, a partner sending an event, anything a form or another system can produce. It sits in\nContent waiting for one of your people to look at it.\n\nNothing offered this way reaches your site on its own. A proposal is not a page, not a Component, and\nnot published: it becomes content only when somebody approves it, and approving is what creates the\nComponent.\n\n## Where to find them\n\n**Proposals** in the sidebar lists everything offered, grouped by what has happened to it:\n**Awaiting review**, **Approved**, **Rejected**. Anything waiting on *you* specifically also appears\nin [Tasks](tasks.md), alongside pages awaiting approval and translations awaiting acceptance.\n\nAny member of the environment can open the page. Whether you can actually approve or reject\nsomething is decided by the workflow, not by a separate permission.\n\n## Reviewing one\n\nThe review screen has two halves.\n\nOn the left, **As received** — exactly what the sender sent, unchanged and never thrown away. Each\nvalue shows the name the sender used. If something they sent matches no field on your Contract, it is\nstill shown here, marked, rather than quietly dropped. Copy across anything worth keeping.\n\nOn the right, the ordinary content form for the Contract, prefilled where a sent value clearly\nmatched a field. Matching ignores capitalisation and punctuation, so a form asking for `hipScore`\nfills in a field called `hip-score` without anyone configuring anything.\n\n**Some things are deliberately left blank.** A sent value is plain text; a field that holds a list, a\nlink to another item, an image, or personalised variants needs more than plain text to be filled in\nsafely. Rather than guess, Content leaves those to you — the sent value is still on the left, so\nnothing is lost.\n\nFinish the form, then choose one of the actions at the bottom. Those buttons are the transitions your\nworkflow allows your role to fire, so they carry your own wording, not ours.\n\n## What approving and rejecting do\n\n**Approve** creates a Component, as a **Draft**, in the folder the proposal was offered for. It does\nnot publish it — publishing is the same step it is for anything else. The proposal is kept, and\nrecords which Component it became.\n\n**Reject** creates nothing and deletes nothing. The proposal and everything sent with it stay, so you\ncan look back at what was offered and declined.\n\nEither way, whatever record the sender's own system keeps is untouched.\n\n## Setting it up\n\nTwo things have to exist before anything can be offered.\n\n**A proposal workflow, assigned to the destination folder.** Create one under **Workflows**, choosing\nthe **Proposal review** kind, then assign it to the folder (or any folder above it) on that folder's\nown access and workflow settings.\n\nThis is required, not optional. Without it there would be nobody to review what arrives, so Content\nrefuses the offer outright and tells the sender why — rather than accepting content nobody will\never look at.\n\n**A key that can only propose.** Under **API keys**, create one whose only scope is\n*content.management.proposals*. A key holding just that can offer proposals and can do nothing\nelse — it cannot read your content and cannot write any. Give it to whoever is sending.\n\n## Why something might not appear\n\n**It was refused at the door.** The sender gets a clear reason: an unknown Contract, an unknown\nfolder, or no proposal workflow on that folder.\n\n**The same thing was sent twice.** Offers are identified by the sender's own reference, so re-sending\nthe same one returns the original rather than filing a duplicate. That makes it safe for a sender to\nretry after a failure.\n\n**It is for a folder you cannot see.** Proposals for branches outside your access are not listed at\nall.\n\n**You are in a different environment.** Proposals belong to the environment their key is bound to.\n\n## Related\n\n- [Tasks](tasks.md) — everything waiting on you, across every kind of review\n- [Workflows](content-workflow.md) — designing the review itself\n"
|
|
100
|
+
},
|
|
96
101
|
{
|
|
97
102
|
"slug": "publishing",
|
|
98
103
|
"title": "Publishing content",
|
|
@@ -103,6 +108,11 @@ export const HELP_TOPICS = [
|
|
|
103
108
|
"title": "Linking a post to sample code",
|
|
104
109
|
"body": "# Linking a post to sample code\n\nA **Sample reference** block tells a reader where to get the code for the step a tutorial post just\nwalked through. It renders as a distinct, boxed block so someone skimming a long post can find it\nwithout reading the prose around it.\n\nUse one wherever a post reaches a point the reader could check out and run.\n\n## Adding one to a post\n\n1. Edit the post's **Body**.\n2. Insert an embed and choose the **Sample reference** Template.\n3. Create a Component for it and fill in:\n\n| Field | What to put | Required |\n|---|---|---|\n| **Repository** | The repository's home page — `https://github.com/ebitex-io/samples` | Yes |\n| **Tag** | The git tag for this step — `northwind-coffee/step-07` | Yes |\n| **Path** | A folder inside the repo to point at | No |\n| **Seed bundle** | A link to the content export for this step | No |\n| **Label** | The sample's name. Left empty, the repository name is used | No |\n| **Note** | One line on what this step adds | No |\n\nA block with just a repository and a tag is complete and looks finished — most steps have nothing\nelse to say.\n\n## Where the links go\n\n**Repository is the repo's home page, not a link to the tagged code.** The link to the code *at*\nthat tag is built for you from the repository and the tag. This is deliberate: if the tagging scheme\never changes, it's one fix rather than an edit to every post ever published.\n\nFor repositories on hosts we know how to build links for, the reader gets a direct link to the code\nat that exact tag and path. For any other host, they get the repository home page and the tag shown\nas text to check out themselves — never a broken link.\n\n## Seed bundles\n\n**Only add a Seed bundle link on steps that actually have one.** In a tutorial, code and content\nadvance together, and seed bundles are usually published at a handful of checkpoints rather than at\nevery step. A reader joining mid-series imports the nearest bundle at or before their step.\n\nLeaving it empty is the normal case, and the block simply doesn't show a download.\n\n## Using it outside a post\n\nThe same block can be added as a section on an ordinary page, not just inside a post body — useful\non a landing page for a sample.\n\n## Related\n\n- [Blog series](blog-series.md) — grouping tutorial posts in order\n- [Components](components.md) — creating and editing content\n"
|
|
105
110
|
},
|
|
111
|
+
{
|
|
112
|
+
"slug": "tasks",
|
|
113
|
+
"title": "Tasks",
|
|
114
|
+
"body": "# Tasks\n\n**Tasks** lists everything in the environment you are working in that is waiting on a person: a page\nsomeone submitted for review, a translation waiting to be accepted, anything else a workflow has\npaused until somebody acts.\n\nIt replaces having to remember which page you were asked to look at. If a workflow is waiting on you,\nit is on this list.\n\n## Where to find it\n\n**Tasks** sits near the top of the sidebar, under your organization's name. Any member of the\nenvironment can open it — there is no separate permission, because whether you can actually *act* on\nsomething is decided by the workflow itself.\n\n## The three views\n\n**Needs me** is the default, and it is the one to trust. It shows only the runs where at least one\naction is open to your role right now. If this is empty, nothing is waiting on you.\n\n**All open** shows everything still in progress in this environment, including work that is waiting\non somebody else. Those rows say **Waiting on another role** instead of naming an action — useful for\nseeing where something has got stuck, without implying you can unstick it.\n\n**Closed** shows work that has finished or been rejected.\n\n## Reading a row\n\nEach row names the thing being reviewed, then:\n\n- a **kind** label — Publishing, Translation, and whatever else your organization uses\n- the actions your role may take, listed by name (**Approve · Reject**)\n- **About** — a short qualifier: the Contract a Component uses, or the language a translation is for\n- the **workflow** and the **state** the work is currently sitting in\n- how long it has been **waiting**, so the oldest thing is easy to spot\n\n**Open** (or **Review**) takes you to where the work actually happens. The actions themselves live\nthere, beside the content, so you can read what you are approving before you approve it.\n\n## Why something might not be listed\n\n**It is in a folder or section you cannot see.** Tasks never lists work whose content is outside your\naccess — not even as a greyed-out row, because that would still tell you it exists.\n\n**It is waiting on someone else, and you are on Needs me.** Switch to All open.\n\n**Nothing is governing it.** A page only appears here if a workflow has been assigned to the folder\nor section it lives in. Content with no workflow is published directly and never becomes a task.\n\n**You are in a different environment.** Tasks only ever shows the environment selected at the top of\nthe screen. If you work in more than one, check the switcher before concluding a task has vanished.\n\n## If the list is long\n\nUse the search box, or narrow by kind or workflow. When there is more work than fits on one page,\na note says so — deal with some of it, or narrow the view, rather than paging through everything.\n\n## Related\n\n- [Workflows](content-workflow.md) — setting up the reviews that produce these tasks\n- [Environments](content-environments.md) — why the list is scoped to one environment\n"
|
|
115
|
+
},
|
|
106
116
|
{
|
|
107
117
|
"slug": "templates",
|
|
108
118
|
"title": "Presenting content with Templates",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpCorpus.generated.js","sourceRoot":"","sources":["../../src/resources/helpCorpus.generated.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,EAAE;AACF,kGAAkG;AAClG,oGAAoG;AAIpG,MAAM,CAAC,MAAM,WAAW,GAAgB;IACtC;QACE,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,0CAA0C;QACnD,MAAM,EAAE,knWAAknW;KAC3nW;IACD;QACE,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,wnGAAwnG;KACjoG;IACD;QACE,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,sBAAsB;QAC/B,MAAM,EAAE,igVAAigV;KAC1gV;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,kCAAkC;QAC3C,MAAM,EAAE,6okBAA6okB;KACtpkB;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,0BAA0B;QACnC,MAAM,EAAE,6oLAA6oL;KACtpL;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,gCAAgC;QACzC,MAAM,EAAE,sxeAAsxe;KAC/xe;IACD;QACE,MAAM,EAAE,sBAAsB;QAC9B,OAAO,EAAE,sBAAsB;QAC/B,MAAM,EAAE,mxqBAAmxqB;KAC5xqB;IACD;QACE,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,qCAAqC;QAC9C,MAAM,EAAE,q3FAAq3F;KAC93F;IACD;QACE,MAAM,EAAE,yBAAyB;QACjC,OAAO,EAAE,4BAA4B;QACrC,MAAM,EAAE,2jRAA2jR;KACpkR;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,6/HAA6/H;KACtgI;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,4CAA4C;QACrD,MAAM,EAAE,22GAA22G;KACp3G;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,UAAU;QACnB,MAAM,EAAE,wvJAAwvJ;KACjwJ;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,oBAAoB;QAC7B,MAAM,EAAE,4mPAA4mP;KACrnP;IACD;QACE,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,iCAAiC;QAC1C,MAAM,EAAE,s2XAAs2X;KAC/2X;IACD;QACE,MAAM,EAAE,qBAAqB;QAC7B,OAAO,EAAE,qBAAqB;QAC9B,MAAM,EAAE,+iFAA+iF;KACxjF;IACD;QACE,MAAM,EAAE,eAAe;QACvB,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,6+HAA6+H;KACt/H;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,mBAAmB;QAC5B,MAAM,EAAE,upIAAupI;KAChqI;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,iBAAiB;QAC1B,MAAM,EAAE,2rLAA2rL;KACpsL;IACD;QACE,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,oBAAoB;QAC7B,MAAM,EAAE,2hVAA2hV;KACpiV;IACD;QACE,MAAM,EAAE,mBAAmB;QAC3B,OAAO,EAAE,+BAA+B;QACxC,MAAM,EAAE,g2EAAg2E;KACz2E;IACD;QACE,MAAM,EAAE,WAAW;QACnB,OAAO,EAAE,mCAAmC;QAC5C,MAAM,EAAE,8vKAA8vK;KACvwK;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,itIAAitI;KAC1tI;CACF,CAAA"}
|
|
1
|
+
{"version":3,"file":"helpCorpus.generated.js","sourceRoot":"","sources":["../../src/resources/helpCorpus.generated.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ebitex/content-mcp",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.103",
|
|
4
4
|
"description": "An MCP server for ebitex Content: build and publish a content model from an AI agent.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"homepage": "https://developers.ebitex.io/getting-started/content-as-code/",
|