Здесь нет ничего «строго секретного» 
Есть тема, очень похожая на эту:
И инструмент, который мы используем, содержит следующий скрипт:
let terms;
let API_KEY = "...";
const categories = {
61: "тема",
6: "поддержка",
148: "данные и отчетность",
164: "Документация > Хостинг для клиентов",
177: "Вики-сообщество",
31: "установка",
10: "Документация",
22: "плагин",
1: "баг",
106: "миграция",
120: "компонент темы",
105: "программа поддержки сообщества",
124: "Общее",
157: "обратная связь по сайту > сводки форума",
152: "обратная связь по сайту > обратная связь по теме",
168: "Документация > Вклад",
30: "релизы",
126: "Документация > Использование Discourse",
2: "функция",
63: "похвала > сравнение",
9: "UX",
27: "разработка > переводы",
24: "SSO",
3: "обратная связь по сайту",
17: "Без категории",
14: "маркетплейс",
21: "поддержка > WordPress",
13: "объявления > блог",
53: "Документация > Управление сайтом",
5: "плагин > дополнения",
65: "сообщество",
8: "установка > хостинг",
35: "похвала",
67: "объявления",
178: "Вики-сообщество > Администраторы",
167: "Документация > Интеграции",
55: "Документация > Самостоятельный хостинг",
169: "Документация > Переход на Discourse",
56: "Документация > Руководства для разработчиков",
7: "разработка",
179: "Вики-сообщество > Разработчики",
181: "Вики-сообщество > Пользователи",
180: "Вики-сообщество > Системные администраторы"
};
function search(terms) {
const encoded = encodeURIComponent(terms);
const searchUrl = "https://meta.discourse.org/discourse-ai/embeddings/semantic-search.json?hyde=false&q=";
result = http.get(`${searchUrl}${encoded}`, {'Api-Key': API_KEY });
return processResults(JSON.parse(result.body));
}
function invoke(p) {
if (!p.question) {
terms = "Поиск не выполнен!"
return "Необходимо предоставить параметр вопроса";
}
terms = p.question;
let results = search(terms + " #documentation");
let otherResults = search(terms);
let topicIds = {};
results.forEach(topic => { topicIds[topic.topic_id] = topic });
otherResults.forEach(topic => {
if (topicIds[topic.topic_id]) {
return;
}
if (results.length > 15) {
return;
}
results.push(topic);
});
if (results.length === 0) {
return "Результаты не найдены!"
} else {
return results;
}
}
function processResults(json) {
if (!json.topics) {
return [];
}
const postData = {};
json.posts.forEach( p => {
postData[p.topic_id] = p;
});
// todo маппинг категории meta
return json.topics.map(t => {
let result = {};
let post = postData[t.id];
result.url = `/t/${t.slug}/${t.id}`;
result.title = t.title;
result.blurb = post.blurb;
result.tags = t.tags;
result.topic_id = t.id;
result.category = categories[t.category_id];
return result;
});
}
function details() {
return "Поиск по запросу: " + terms
}
Инструмент чтения использует:
let topicId;
let url = "https://meta.discourse.org";
const API_KEY = "...";
let title = "Неизвестная тема";
function invoke(p) {
topicId = p.topicId;
let jsonUrl = `https://meta.discourse.org/t/${p.topic_id}.json?include_raw=true`;
result = http.get(jsonUrl, { 'Api-Key' : API_KEY });
try {
const parsed = JSON.parse(result.body);
url = `https://meta.discourse.org/t/${parsed.slug}/${parsed.id}`;
title = parsed.title;
let raw = parsed.post_stream.posts.map( post => {
let solution = "";
if (post.is_solution) {
solution = "(решение)";
}
return `пост #${post.post_number}:${solution}\n${post.raw}`;
}).join("\n\n");
return llm.truncate(raw, 10000);
} catch {
return "Что-то пошло не так, тема не найдена!"
}
}
function details() {
return `Чтение: <a href='${url}'>${title}</a>`;
}