API VEGA

CiteWire

citewire.org · Openly Useful

Attribution-first MCP infrastructure for news and research discovery.

CiteWire дает агентам структурированный, только чтение доступ к метаданным новостей и исследований, сохраняя кредит и трафик оригинального издателя. Это может экспонировать совместимую новостную платформу как типизированные MCP-инструменты, запрашивать опциональные публичные API провайдеров или делать и то, и другое на одном сервере.

Community-издание полезно само по себе. Оно включает ядро MCP, транспорты stdio и HTTP, общий адаптер платформы и каждый адаптер провайдера в этом репозитории под лицензией MIT. Коммерческое направление продукта — добавочное и сфокусировано на управляемых операциях, персонализации, рабочих процессах, сотрудничестве, сохраненной истории и поддержке. См. [Product tiers].

Для чего нужен CiteWire

  • Операторы новостных платформ могут экспонировать совместимый read API через news.list, news.get, news.topics и news.about.

  • Исследователи и создатели агентов могут включать только те публичные новостные и исследовательские провайдеры, которые хотят запросить.

  • Самостоятельно размещающие могут запускать тот же сервер через stdio, безсостояние HTTP или внутри функции Node serverless.

  • Поставщики-участники могут добавить узконаправленный адаптер без внедрения зависимости во время выполнения.

CiteWire — это не сервис полнотекстового инфогенератора, краулер, издатель, редакционная система или сервис проверки прав. Он не хранит и не перепубликовывает тексты статей. Доступность провайдера не заменяет необходимость ознакомиться с текущими условиями использования у указанного провайдера.

Быстрый старт

Требования: Node.js 18 или новее. Community — пакет Node в формате ESM; он не предоставляет точку входа CommonJS.

Создайте citewire.config.json с включенным одним провайдером:

{
  "providers": {
    "openalex": { "enabled": true }
  }
}

Запустите сервер через stdio:

npx -y citewire --config citewire.config.json

stdio — транспорт по умолчанию и обычный выбор, когда MCP-клиент запускает citewire как локальный процесс.

Конфигурация MCP-клиента

Используйте абсолютный путь к конфигурации, потому что клиенты не всегда запускаются из каталога проекта:

{
  "mcpServers": {
    "citewire": {
      "command": "npx",
      "args": [
        "-y",
        "citewire",
        "--config",
        "/absolute/path/to/citewire.config.json"
      ]
    }
  }
}

HTTP-подключение

Запустите безсостояние HTTP-транспорт на порту 8722:

npx -y citewire --config citewire.config.json --http 8722

Локальная точка доступа принимает JSON-RPC через POST /. Она не поддерживает сессии или поток событий.

Два способа использования

1. Обернуть совместимую новостную платформу

Объявите платформу с display name, URL сайта и базой API чтения:

{
  "platform": {
    "name": "Example Industry News",
    "siteUrl": "https://news.example",
    "apiBase": "https://news.example/api/v1/news"
  }
}

Эта конфигурация экспонирует четыре инструмента:

ИнструментНазначение
news.listСписок элементов, отсортированных по новизне, с опциональными фильтрами по теме, отрасли, тексту, окну дат и пагинации.
news.getПолучить один элемент по slug, включая атрибуцию и связанные материалы, возвращаемые платформой.
news.topicsПрочитать активную таксономию тем платформы.
news.aboutПрочитать статические данные платформы и политику атрибуции.

Заданная HTTP-поверхность описана в контракте платформенного read-API: [platform read-API contract].

2. Включение инструментов публичных провайдеров

Адаптеры провайдеров включены в Community и отключены по умолчанию. Провайдер становится активным только тогда, когда его запись конфигурации установлена в enabled: true.

{
  "providers": {
    "gdelt-doc": { "enabled": true },
    "arxiv": { "enabled": true },
    "crossref": {
      "enabled": true,
      "mailto": "operator@example.com"
    }
  }
}

Crossref требует контактный адрес электронной почты развертывающего, чтобы запросы могли идентифицировать оператора в их "полировать пул". CiteWire отправляет этот адрес только в параметре mailto и в User-Agent в запросе к Crossref. Не копируйте приведенный пример адреса.

Текущие адаптеры:

ПровайдерИнструментыФокус
GDELT DOC 2.0gdelt.searchМетаданные мировых новостных статей
GDELT Context 2.0gdelt.contextКонтекст на уровне фрагментов вокруг термина
arXivarxiv.searchМетаданные препринтов
OpenAlexopenalex.searchНаучные работы, авторы и площадки
Crossrefcrossref.searchМетadанные регистрации DOI
Semantic Scholarsemanticscholar.searchСтатьи и граф авторов
Europe PMCeuropepmc.searchМетаданные литературы по бионауке
dblpdblp.searchЗаписи библиографий по компьютерным наукам
Hacker Newshackernews.top, hackernews.itemИстории и элементы из официального API
DEVdevto.searchПубличные метаданные статей DEV

Сначала прочитайте [Providers], прежде чем включать какой-либо адаптер. Этот документ регистрирует конечную точку, документацию, бесплатный доступ и известные ограничители для каждого адаптера. Документация самого провайдера остается источником истины.

Поведение конфигурации

  • platform — необязателен.
  • providers — необязателен.
  • Провайдер, отсутствующий в конфигурации, остается отключенным.
  • Пустая конфигурация действительна и не экспонирует никаких инструментов.
  • Неверная конфигурация сбоит на старте с указанием поля в сообщении об ошибке.
  • tools/list — авторитетный список инструментов для разворачивания, потому что включенные инструменты зависят от конфигурации развёртывания.

Развёртывание может сочетать инструменты платформы и провайдеров:

{
  "platform": {
    "name": "Example Industry News",
    "siteUrl": "https://news.example",
    "apiBase": "https://news.example/api/v1/news"
  },
  "providers": {
    "openalex": { "enabled": true }
  }
}

Опциональная Foundation политики сообщества

CiteWire может экспонировать локальную, только читаемую foundation для политики источников, оценки прав и теневого включения:

{
  "community": {
    "enabled": true,
    "classifierMode": "shadow",
    "thresholds": {
      "adjacent_min": 0.5,
      "standard_min": 0.6
    }
  }
}

Каждый встроенный источник по умолчанию отключен. Эта настройка не выполняет сетевых запросов, не загружает учетные данные и не может публиковать. Проверки прав на основе учетных данных принимают неразборчивые ссылки на секретные менеджеры в памяти, но никогда не возвращают их. Классификатор принудительно переходит в режим shadow и всегда сообщает publishable: false до наличия отдельно рассмотренной редакционной системы и набора для оценки.

См. [Source registry and rights] для проверки в рантайме, политики fail-closed, канонических инструментов MCP и ресурсов и текущих ограничений.

Границы проектирования

  • MIT и нулевая зависимость. Пакет использует встроенные в Node средства и не имеет зависимостей во время выполнения или разработки.
  • Node ESM. Community поддерживает Node.js 18 и новее через ESM. Не обеспечивает совместимость с CommonJS и не имеет сборки для CommonJS.
  • Read only. Включенные инструменты запрашивают поверхности чтения платформы и провайдера.
  • Stateless. Сервер Community не имеет учётных записей, сессий, сохранённых поисков или сохраненной истории.
  • Attribution first. Результаты сохраняют метаданные источника и ссылки, предоставленные upstream-платформой или провайдером.
  • Config driven. Развёртыватель определяет, какие инструменты присутствуют. Ничто не включается само по себе.
  • Storage free. Ядро не сохраняет ответы провайдеров или исходный контент.

Эти рамки поддерживаются политикой управления проектом: [governance policy].

Экосистема и документация по продукту

  • [Product tiers] определяет постоянную ценность Community и добавочную коммерческую границу.
  • [Distribution] содержит точную регистр и каталог чек-листов. Невыполненные подачи помечаются PENDING.
  • [Governance] объясняет решения, ответственность провайдеров, совместимость и лицензионные вопросы.
  • [Providers] документирует каждого исходного провайдера.
  • [Platform contract] определяет совместимый read API новостей.
  • [Contributing] освещает настройку, тесты, добавления провайдеров и ожидания к pull request.
  • [Releasing] определяет контролируемые релизы пакета и реестра.
  • [Support], [Security], и [Code of Conduct] задают каналы для сообществ.

Истоки проекта

Citewire был создан на основе его первого развёртывания для [Karaya Group Industry News]. Публичный контракт платформы нейтрален и может обернуть любой совместимый read API.

Внесение вклада

Запустите тестовый набор с npm test. Установка не требуется. См. [CONTRIBUTING.md] перед предложением провайдера или изменения в публичном контракте.

Лицензия

Community распространяется по MIT-лицензии. См. [LICENSE].