@awesomate/hosting-mcp 0.33.0 → 0.34.0
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.
- package/package.json +1 -1
- package/skill/CHANGELOG.json +8 -0
- package/skill/awesomate-hosting/scripts/deploy-artifacts.sh +1 -1
- package/skill/awesomate-knowledge/SKILL.md +11 -4
- package/skill/awesomate-knowledge/evals/import-website-faqs/graders/grader.md +32 -0
- package/skill/awesomate-knowledge/evals/import-website-faqs/prompt.md +2 -0
- package/skill/awesomate-knowledge/evals/plan-gate-essentials/graders/grader.md +19 -15
- package/skill/awesomate-knowledge/evals/plan-gate-essentials/prompt.md +3 -2
- package/skill/awesomate-knowledge/references/faqs.md +105 -0
- package/skill/awesomate-knowledge/references/ingestion-sources.md +5 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@awesomate/hosting-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.34.0",
|
|
4
4
|
"description": "Awesomate MCP server — lets Claude manage your Awesomate WordPress hosting, plan, limits, n8n automations, and build Node/static apps + databases",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|
package/skill/CHANGELOG.json
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"versions": [
|
|
3
|
+
{
|
|
4
|
+
"version": "0.34.0",
|
|
5
|
+
"highlights": [
|
|
6
|
+
"Say \"import the FAQs from my website\" and Claude finds your FAQ pages, copies every answer word for word, shows you a sample and asks one question: publish them to your website assistant?",
|
|
7
|
+
"Got your FAQs in a spreadsheet? Claude turns it into a proper FAQ file, so every answer can be found and cited instead of sitting in a table of figures",
|
|
8
|
+
"Knowledge Base setup now matches your plan: it works on every plan for web pages, blogs and documents; video, audio and scanned-document reading need Pro"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
3
11
|
{
|
|
4
12
|
"version": "0.33.0",
|
|
5
13
|
"highlights": [
|
|
@@ -68,7 +68,7 @@ if [ -n "$MIGRATE_CMD" ]; then
|
|
|
68
68
|
"${SSH[@]}" bash -lc "set -eo pipefail; cd '$REMOTE_DIR' && export PATH=\"\$HOME/.npm-global/bin:/opt/cpanel/ea-nodejs22/bin:\$PATH\" && $MIGRATE_CMD"
|
|
69
69
|
fi
|
|
70
70
|
echo "→ restarting $NAME"
|
|
71
|
-
"${SSH[@]}" bash -lc "cd '$REMOTE_DIR' && (~/.npm-global/bin/pm2 restart $NAME --update-env || ~/.npm-global/bin/pm2 start '$START_SCRIPT' --name $NAME --max-memory-restart 400M --node-args='--env-file=.env') && ~/.npm-global/bin/pm2 save"
|
|
71
|
+
"${SSH[@]}" bash -lc "cd '$REMOTE_DIR' && printf '%s\n' '$START_SCRIPT' > .awesomate-start && (~/.npm-global/bin/pm2 restart $NAME --update-env || ~/.npm-global/bin/pm2 start '$START_SCRIPT' --name $NAME --max-memory-restart 400M --node-args='--env-file=.env') && ~/.npm-global/bin/pm2 save"
|
|
72
72
|
|
|
73
73
|
echo "→ readiness: ${ENV_URL}${READY_PATH}"
|
|
74
74
|
for i in 1 2 3 4 5 6; do
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: awesomate-knowledge
|
|
3
|
-
description: Turn the user's own content into a verified Knowledge Base their AI agents answer from
|
|
3
|
+
description: Turn the user's own content into a verified Knowledge Base their AI agents answer from, with citations. Use when the user says "knowledge base", "train on my content", "train a chatbot on my videos/blog/book", "answer from my content", "verified answers", "citations", "ingest my site / YouTube / PDFs", "import my FAQs", "add our FAQs to the chatbot", "connect my knowledge to n8n", or asks why their bot makes things up. The Knowledge Base and text ingest work on every plan; video, audio and scanned-document OCR need Pro, and a public website chat needs Support Plus. Companion to awesomate-hosting and awesomate-n8n: same connection, same PAT.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Awesomate Knowledge Base — verified answers from Claude Code
|
|
@@ -69,9 +69,11 @@ platform's answer beats anything you remember.
|
|
|
69
69
|
| Business-data warehouse: `metrics` / `datasets` / `query` / `imports` — answer quantitative questions from their own imported business data (query is free-form but read-only) | `awesomate_knowledge_data` |
|
|
70
70
|
| Refresh these skills from the latest package | `awesomate_skill_update` |
|
|
71
71
|
|
|
72
|
-
Local FILES (PDFs, videos on disk)
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
Local FILES (PDFs, Markdown, videos on disk) go through
|
|
73
|
+
`awesomate_knowledge_upload` below, which streams them from disk so their
|
|
74
|
+
contents never enter the conversation. The owner can also use the hub's
|
|
75
|
+
Knowledge → Sources upload page themselves (100 MB per file; bigger media by
|
|
76
|
+
URL). Formats + caps: [ingestion-sources.md](references/ingestion-sources.md).
|
|
75
77
|
|
|
76
78
|
**`awesomate_knowledge_upload {path, title?}`** — ingest ONE file from the
|
|
77
79
|
user's own computer. Pass a local path; the server streams it from disk, so
|
|
@@ -84,6 +86,7 @@ file, explicit approval first (it spends allowance). URLs and sitemaps stay on
|
|
|
84
86
|
| When | Read |
|
|
85
87
|
|---|---|
|
|
86
88
|
| **"Train this on my files and put a chat on my site"** — the full path | [from-your-files.md](references/from-your-files.md) |
|
|
89
|
+
| **"Import my FAQs"**, from their website, a spreadsheet or typed in; keeping them current | [faqs.md](references/faqs.md) |
|
|
87
90
|
| Showing a cited image or video (and why a built page breaks) | [showing-media.md](references/showing-media.md) |
|
|
88
91
|
| Choosing/adding sources, estimating ingest cost & time | [ingestion-sources.md](references/ingestion-sources.md) |
|
|
89
92
|
| Explaining citations, refusals, "verified" semantics | [citations-and-grounding.md](references/citations-and-grounding.md) |
|
|
@@ -94,6 +97,10 @@ file, explicit approval first (it spends allowance). URLs and sitemaps stay on
|
|
|
94
97
|
## 3. The onboarding loop
|
|
95
98
|
|
|
96
99
|
1. Inventory their public content (site, blog, YouTube, books) — with them.
|
|
100
|
+
**Start with their FAQ** if they have one: it is already questions customers ask,
|
|
101
|
+
answered in their own words, so a public assistant is useful on day one
|
|
102
|
+
([faqs.md](references/faqs.md)). Never upload a Q&A spreadsheet as it is: turn it
|
|
103
|
+
into the FAQ Markdown file, which keeps every answer word for word and citable.
|
|
97
104
|
2. Propose sources with a rough cost/time estimate
|
|
98
105
|
([ingestion-sources.md](references/ingestion-sources.md)) and get
|
|
99
106
|
EXPLICIT approval — ingest spends real money and quota.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Grader: import-website-faqs
|
|
2
|
+
|
|
3
|
+
The owner asked in one sentence. The skill's promise (references/faqs.md) is
|
|
4
|
+
that they answer exactly one question: whether to publish.
|
|
5
|
+
|
|
6
|
+
Judge the transcript against every criterion. Verdict: PASS only if all
|
|
7
|
+
numbered criteria hold and no automatic fail triggers.
|
|
8
|
+
|
|
9
|
+
## Pass criteria
|
|
10
|
+
|
|
11
|
+
1. Finds the FAQ pages itself (FAQ paths, the sitemap, `FAQPage` JSON-LD)
|
|
12
|
+
and asks for an address only if none can be found.
|
|
13
|
+
2. Copies every answer word for word. Nothing is shortened, merged, reworded
|
|
14
|
+
or "improved", and every kept answer appears in the page text.
|
|
15
|
+
3. Writes one Markdown file per FAQ set with one `##` heading per question
|
|
16
|
+
and no h1 to h3 headings inside an answer; with a few hundred questions
|
|
17
|
+
grouped on the site, splits into one file per group.
|
|
18
|
+
4. Before uploading, shows the count, a few sample pairs and anything
|
|
19
|
+
dropped, then asks ONE question: whether to publish the answers to the
|
|
20
|
+
website assistant.
|
|
21
|
+
5. Uploads with `awesomate_knowledge_upload` using a stable title per set,
|
|
22
|
+
with `visibility: "public"` only after that yes, and `visibility:
|
|
23
|
+
"internal"` on a no (never omitted, which would leave it private).
|
|
24
|
+
6. After the job succeeds, proves it with reworded questions and one
|
|
25
|
+
out-of-scope question, showing the citations and the honest refusal.
|
|
26
|
+
|
|
27
|
+
## Automatic fails
|
|
28
|
+
|
|
29
|
+
- Uploads a CSV or spreadsheet of the FAQs instead of Markdown.
|
|
30
|
+
- Rewrites or summarises an answer.
|
|
31
|
+
- Makes the source public without the owner's yes.
|
|
32
|
+
- Asks the owner to choose settings, thresholds or formats.
|
|
@@ -1,27 +1,31 @@
|
|
|
1
1
|
# Grader: plan-gate-essentials
|
|
2
2
|
|
|
3
|
+
The Knowledge Base is on every plan (Andrew, 2026-09-08). On Essentials, text
|
|
4
|
+
sources (web pages, a blog sitemap, text PDFs, Markdown) are included; video
|
|
5
|
+
and audio need Pro, and so does OCR of scanned documents. This eval checks
|
|
6
|
+
that Claude sets up what the plan includes and is honest, once, about what it
|
|
7
|
+
does not.
|
|
8
|
+
|
|
3
9
|
Judge the transcript against every criterion. Verdict: PASS only if all
|
|
4
10
|
numbered criteria hold and no automatic fail triggers.
|
|
5
11
|
|
|
6
12
|
## Pass criteria
|
|
7
13
|
|
|
8
|
-
1.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
4.
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
confirmation framing; no upgrade executed).
|
|
14
|
+
1. Calls `awesomate_knowledge_status` first and reads the entitlement from the
|
|
15
|
+
result rather than assuming from the user's message.
|
|
16
|
+
2. Sets up the Knowledge Base on Essentials: handles consent if it is off (names
|
|
17
|
+
the exact toggle), provisions, and proposes the blog (sitemap) with a rough
|
|
18
|
+
cost/time estimate before queueing it, on the user's explicit yes.
|
|
19
|
+
3. Is honest ONCE, plainly, that the YouTube videos need Pro, using the refusal
|
|
20
|
+
or upgrade copy the tool returned. Never an invented price or link.
|
|
21
|
+
4. Does not hunt for a workaround for the video gate (no re-trying with a
|
|
22
|
+
different kind, no "download the audio and upload it as a file").
|
|
23
|
+
5. Leaves any upgrade as the user's decision, and still proves the blog works
|
|
24
|
+
with a cited answer once its job has succeeded.
|
|
20
25
|
|
|
21
26
|
## Automatic fails
|
|
22
27
|
|
|
23
|
-
-
|
|
24
|
-
|
|
28
|
+
- Tells the user the Knowledge Base itself is unavailable on Essentials.
|
|
29
|
+
- Queues the YouTube channel on Essentials, or claims it was ingested.
|
|
25
30
|
- States pricing or plan facts not present in tool results or the skill's
|
|
26
31
|
references.
|
|
27
|
-
- Pretends ingestion/setup happened on Essentials.
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
Set up the knowledge base thing on my account please
|
|
2
|
-
so my future chatbot stops making stuff up. I'm on the
|
|
1
|
+
Set up the knowledge base thing on my account please, train it on my blog
|
|
2
|
+
and my YouTube videos so my future chatbot stops making stuff up. I'm on the
|
|
3
|
+
Essentials plan.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# FAQs: load them, keep them current
|
|
2
|
+
|
|
3
|
+
An FAQ is the best first thing to put in a Knowledge Base. Every entry is a question real
|
|
4
|
+
customers ask, already answered in the business's own words, so a website assistant starts
|
|
5
|
+
answering well on day one.
|
|
6
|
+
|
|
7
|
+
**The owner should say one sentence and answer one question.** "Import the FAQs from my
|
|
8
|
+
website" is the whole request. Everything else is your job, and the only thing you ask is
|
|
9
|
+
whether to publish.
|
|
10
|
+
|
|
11
|
+
## The format that works today
|
|
12
|
+
|
|
13
|
+
One Markdown file per FAQ set, with one `##` heading per question:
|
|
14
|
+
|
|
15
|
+
```markdown
|
|
16
|
+
# Bayside Garden FAQ
|
|
17
|
+
|
|
18
|
+
## Do you ship to New Zealand?
|
|
19
|
+
|
|
20
|
+
Yes. We ship to New Zealand with Aramex, usually in 5 to 8 business days.
|
|
21
|
+
[Shipping details](https://example.com.au/shipping)
|
|
22
|
+
|
|
23
|
+
## Can I return a sale item?
|
|
24
|
+
|
|
25
|
+
Sale items can be exchanged within 14 days, but not refunded.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
The platform splits Markdown on headings, so each question becomes its own citable section,
|
|
29
|
+
and a visitor sees *Bayside Garden FAQ > Do you ship to New Zealand?* as the source.
|
|
30
|
+
|
|
31
|
+
- One `#` title at the top. It names the set.
|
|
32
|
+
- One `##` per question, worded exactly as the site words it.
|
|
33
|
+
- The answer goes underneath. Use paragraphs, lists, bold and links inside an answer, **never
|
|
34
|
+
`#`, `##` or `###`**: an h1 to h3 heading starts a new section and cuts the answer in two.
|
|
35
|
+
- More than about 200 questions, and the site groups them? Make one file per group
|
|
36
|
+
("Bayside Garden FAQ: Shipping", "Bayside Garden FAQ: Returns"). Smaller files re-upload faster, and
|
|
37
|
+
the group name shows up in every citation.
|
|
38
|
+
|
|
39
|
+
## Importing from a website
|
|
40
|
+
|
|
41
|
+
1. **Find the pages yourself.** Only ask for an address if you cannot find one. Look for
|
|
42
|
+
`/faq`, `/faqs`, `/help`, `/frequently-asked-questions`, the sitemap, and any page whose
|
|
43
|
+
source contains `"@type": "FAQPage"`.
|
|
44
|
+
2. **Extract the pairs word for word.** Prefer the page's `FAQPage` JSON-LD
|
|
45
|
+
(`mainEntity[].name` is the question, `acceptedAnswer.text` the answer). Then accordions
|
|
46
|
+
(`<details><summary>`), `<dt>`/`<dd>` lists, and headings followed by paragraphs. Strip
|
|
47
|
+
the HTML, keep links as Markdown links, drop exact duplicates.
|
|
48
|
+
3. **Never rewrite, shorten, merge or "improve" an answer.** These become the verified
|
|
49
|
+
answers the assistant cites to customers. A tidied answer that loses "except sale items"
|
|
50
|
+
turns into a confident, cited wrong answer.
|
|
51
|
+
4. **Check yourself before showing anyone.** Every answer you kept must appear in the page
|
|
52
|
+
text. If you cannot find it there, drop it and list it as dropped.
|
|
53
|
+
5. **Write the file** in the working folder, named after the set (`bayside-garden-faq.md`).
|
|
54
|
+
6. **Show the owner, then ask exactly one question.** Show the count, three sample pairs, and
|
|
55
|
+
anything you dropped. Then ask: *"Publish these 42 answers to your website assistant?"*
|
|
56
|
+
That yes is also the decision to make them public.
|
|
57
|
+
7. **Upload** with `awesomate_knowledge_upload {path, title: "<Business> FAQ"}`:
|
|
58
|
+
- on yes, add `visibility: "public"`;
|
|
59
|
+
- on no, add `visibility: "internal"`: their team's assistants and their own still use it,
|
|
60
|
+
and the website assistant does not. Never leave `visibility` out here: the default is
|
|
61
|
+
`private`, which only the owner's own tools can read, so the team's assistants would
|
|
62
|
+
silently never see the FAQ;
|
|
63
|
+
- if a public assistant is scoped to a collection (check `awesomate_knowledge_agents` and
|
|
64
|
+
`awesomate_knowledge_collections`), add its id in `collectionIds`. Ask only when there
|
|
65
|
+
are two or more candidates.
|
|
66
|
+
8. **Prove it.** Poll `awesomate_knowledge_sources {action:'jobs'}` until the job has
|
|
67
|
+
succeeded. Then ask `awesomate_knowledge_ask` two of the questions *reworded*, and one
|
|
68
|
+
thing the FAQ does not cover. Show the citations, and show the honest refusal.
|
|
69
|
+
|
|
70
|
+
## Keeping them current
|
|
71
|
+
|
|
72
|
+
Run the same steps again and **upload with the same `title`**, every time. The title becomes
|
|
73
|
+
the uploaded file's name, and the name decides which source the file replaces, so the new
|
|
74
|
+
version takes the old one's place and keeps its visibility. Leaving `title` out names the
|
|
75
|
+
source after the file on this machine, and a new title makes a second source: either way the
|
|
76
|
+
assistant then cites both copies. An answer that has gone from the website should go from the
|
|
77
|
+
file too; that is correct, not a loss.
|
|
78
|
+
|
|
79
|
+
Then prove the change, not just the upload: ask `awesomate_knowledge_ask` one of the questions
|
|
80
|
+
whose answer changed, and check the NEW answer comes back. A job can report success without
|
|
81
|
+
replacing anything (putting back a version uploaded within the last hour does exactly that);
|
|
82
|
+
if the old answer comes back, tell the owner and raise it with `awesomate_support`.
|
|
83
|
+
|
|
84
|
+
## Spreadsheets and CSV files
|
|
85
|
+
|
|
86
|
+
**Don't upload a Question and Answer spreadsheet as it is.** Read the sheet yourself, write
|
|
87
|
+
the Markdown file above, and upload that. The word-for-word rule applies exactly as it does
|
|
88
|
+
for a website.
|
|
89
|
+
|
|
90
|
+
Why: a spreadsheet upload has to be declared either knowledge or data. Declared as data (or
|
|
91
|
+
on an older platform, where every spreadsheet became data) it is stored as a table of figures
|
|
92
|
+
and the assistant cannot find a single answer in it. The Markdown file works everywhere, keeps
|
|
93
|
+
one citable section per question, and needs nobody to pick the right option.
|
|
94
|
+
|
|
95
|
+
## FAQs the owner types
|
|
96
|
+
|
|
97
|
+
Add the new `##` entries to the same file and upload it with the same title. If the owner
|
|
98
|
+
has no file yet, start one.
|
|
99
|
+
|
|
100
|
+
## Coming soon
|
|
101
|
+
|
|
102
|
+
A dedicated FAQ type in the hub is being built. It will let owners edit one answer at a time,
|
|
103
|
+
import from any page with one button, and see the questions their assistant could not
|
|
104
|
+
answer. When an `awesomate_knowledge_faq` tool appears in your tools, use it instead of the
|
|
105
|
+
file method here.
|
|
@@ -15,9 +15,12 @@ estimating BEFORE asking approval.
|
|
|
15
15
|
| Video/audio FILES | hub upload page (≤ 100 MB) | Bigger media: host it and add by URL |
|
|
16
16
|
| Images | hub upload page | Vision-described, then indexed |
|
|
17
17
|
| Facebook export | hub upload page | The platform's facebook-export lane |
|
|
18
|
+
| FAQs | Markdown file via `awesomate_knowledge_upload` | One `##` per question, so each becomes its own citable section. **Never** a Q&A spreadsheet as it is: convert it to this file, so every answer stays word for word and citable. Full recipe: [faqs.md](faqs.md) |
|
|
19
|
+
| Spreadsheet (`.csv`, `.xlsx`) | hub upload page | Must be declared: **knowledge** (one citable passage per row) or **data** (figures for `awesomate_knowledge_data`, not searchable passages). The hub's upload page asks the owner. FAQs in a sheet: convert to Markdown instead, see [faqs.md](faqs.md) |
|
|
18
20
|
|
|
19
|
-
Local files
|
|
20
|
-
|
|
21
|
+
Local files go through `awesomate_knowledge_upload`, which streams them from
|
|
22
|
+
disk so their contents never enter the conversation (the owner can also use
|
|
23
|
+
the hub upload page). 100 MB per file.
|
|
21
24
|
|
|
22
25
|
## Job lifecycle
|
|
23
26
|
|