Разработчикам агентов
Personal Agent Protocol в Maintenance Due
Личный агент может добраться до доски сроков и журнала обслуживания владельца через Personal Agent Protocol v0.1. Владелец входит на нашей странице и выбирает просмотр или изменение. Maintenance Due бесплатен, а расчёт сроков не вызывает модель.
Эта страница для тех, кто создаёт личных агентов. Если вам нужно только, чтобы Muse следил за заменой масла в фургоне, скопируйте промпт на for-your-agent. Спецификация лежит на personalagentprotocol.org.
Обнаружение
GET https://maintenancedue.com/.well-known/poppy.json называет организацию (maintenancedue.com), издателя https://maintenancedue.com, Direct Sign-In с poppy:read и poppy:write и два API: MCP-сервер по адресу https://maintenancedue.com/mcp и описание OpenAPI по адресу https://maintenancedue.com/openapi.json для REST под /api/v1. Метаданные издателя на /.well-known/oauth-authorization-server перечисляют maintenancedue.com в poppy_domains и дают эндпоинты токенов, авторизации и отзыва под /oauth/.
Session и вход
- Опубликуйте клиента. Ваш
client_idэто https URL, который отдаёт документ метаданных клиента, гдеjwks_uriиredirect_urisна том же домене. Каждый запрос токена несёт клиентское утверждениеprivate_key_jwt, подписанное ключом из этогоjwks_uri. - Начните Session.
POST /oauth/tokenсgrant_type=urn:ietf:params:oauth:grant-type:jwt-bearer, утверждением, гдеissэто вашclient_id,subэто User ID, аaudэтоhttps://maintenancedue.com/oauth/tokenодной строкой, плюс доказательство DPoP. Вы получите Session Token без входа (token_typeDPoP, один час) иsession_id. Отправьтеsession_idсо свежим утверждением, чтобы продлить его. - Отправьте владельца на нашу страницу. Откройте
/oauth/authorizeсresponse_type=code, вашимиclient_idиredirect_uri,scope=poppy:read poppy:write(или толькоpoppy:read),stateиcode_challengePKCE S256. Владелец видит ваше имя и домен, выбирает View only или View and change, затем создаёт бесплатную мастерскую или входит с токеном участника, который у него уже есть. Перенаправление возвращаетcode,stateиiss. Проверьте, чтоissравенhttps://maintenancedue.com. - Обменяйте код.
POST /oauth/tokenсgrant_type=authorization_code,code,redirect_uri,code_verifierи вашимsession_id, плюс клиентское утверждение и доказательство DPoP. В ответе Account Token вrefresh_token(pat_…, 30 дней), Session Token со входом и выданныйscope. Владелец может выбрать просмотр, даже если вы просили изменение, поэтому читайтеscope. - Позже начинайте уже со входом.
POST /oauth/tokenсgrant_type=refresh_tokenи Account Token, сsession_idили без. Добавьтеscope=poppy:read, чтобы получить токен только для чтения на время поиска. Account Token не ротируется, поэтому параллельные Session могут делить его. - Выйдите.
POST /oauth/revokeс Account Token и вашим клиентским утверждением. Каждая Session, вошедшая с ним, теряет вход при следующем вызове и продлевается без входа.
Вызов доски
REST принимает DPoP: Authorization: DPoP <token> плюс свежее доказательство DPoP с htm, htu и ath на каждом вызове /api/v1. MCP принимает Bearer: продлите без доказательства DPoP и с resource=https://maintenancedue.com/mcp, затем отправьте Authorization: Bearer <token> на /mcp. Bearer Session Token работает только на /mcp, а токен DPoP там отклоняется. Инструменты MCP, их схемы и заголовок MCP-Protocol-Version 2025-06-18 те же, что использует ChatGPT.
Просмотр или изменение
poppy:read открывает каждый GET на /api/v1 и каждый инструмент MCP с пометкой readOnlyHint, например get_due, get_history и list_assets. poppy:write открывает все остальные методы REST и инструменты MCP, например append_event, append_reading, create_service и set_rule, а также events/subscribe. Нехватка scope даёт 403 с error="insufficient_scope" и нужным scope в WWW-Authenticate. Токен без входа на вызове аккаунта даёт 403 sign_in_required. Просроченный токен или выданный до выхода даёт 401 invalid_token. Приглашение, удаление участников и выход из org остаются за собственным токеном участника.
Подключения ChatGPT через /oauth/authorize со scope mcp и существующие токены участников Muse работают как прежде. Имена полей на skill.md, контракт REST на openapi.json, индекс агентов на llms.txt.