এজেন্ট নির্মাতা
Maintenance Due-তে Personal Agent Protocol
একটি পার্সোনাল এজেন্ট 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, poppy:read ও poppy:write সহ Direct Sign-In, আর দুটি API: https://maintenancedue.com/mcp-এ MCP সার্ভার, এবং /api/v1-এর অধীনে REST-এর জন্য https://maintenancedue.com/openapi.json-এ OpenAPI বর্ণনা। /.well-known/oauth-authorization-server-এর ইস্যুয়ার মেটাডেটা poppy_domains-এ maintenancedue.com রাখে এবং /oauth/-এর অধীনে টোকেন, অনুমোদন আর প্রত্যাহারের এন্ডপয়েন্ট দেয়।
Session আর সাইন ইন
- আপনার ক্লায়েন্ট প্রকাশ করুন। আপনার
client_idএকটি https URL, যা আপনার ক্লায়েন্ট মেটাডেটা ডকুমেন্ট দেয়, আরjwks_uriওredirect_urisএকই ডোমেনে থাকে। প্রতিটি টোকেন অনুরোধে সেইjwks_uri-এর কী দিয়ে সাইন করা একটিprivate_key_jwtক্লায়েন্ট অ্যাসারশন থাকে। - একটি 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, আর PKCE S256code_challengeসহ। মালিক আপনার নাম ও ডোমেন দেখেন, 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 প্রুফ। উত্তরেrefresh_token-এ Account Token (pat_…, ৩০ দিন), একটি সাইন-ইন 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: /api/v1-এ প্রতিটি কলে Authorization: DPoP <token> আর htm, htu ও ath সহ নতুন DPoP প্রুফ। MCP নেয় Bearer: DPoP প্রুফ ছাড়া এবং resource=https://maintenancedue.com/mcp সহ নবায়ন করুন, তারপর /mcp-এ Authorization: Bearer <token> পাঠান। Bearer Session Token শুধু /mcp-এ চলে, আর সেখানে DPoP টোকেন প্রত্যাখ্যাত হয়। MCP টুল, তাদের স্কিমা, আর MCP-Protocol-Version 2025-06-18 হেডার ChatGPT যা ব্যবহার করে ঠিক সেগুলোই।
দেখা বা বদলানো
poppy:read খোলে /api/v1-এ প্রতিটি GET আর readOnlyHint চিহ্নিত প্রতিটি MCP টুল, যেমন get_due, get_history আর list_assets। poppy:write খোলে বাকি সব REST মেথড আর MCP টুল, যেমন append_event, append_reading, create_service আর set_rule, সঙ্গে events/subscribe। scope না থাকলে 403, আর WWW-Authenticate-এ error="insufficient_scope" ও দরকারি scope থাকে। অ্যাকাউন্ট কলে সাইন-আউট টোকেন হলে 403 sign_in_required। মেয়াদোত্তীর্ণ টোকেন, বা সাইন আউটের আগে দেওয়া টোকেন, হলে 401 invalid_token। সংগঠনের সদস্যকে আমন্ত্রণ, সরানো বা সংগঠন ছাড়া সদস্যের নিজের টোকেন দিয়েই হয়।
mcp scope দিয়ে /oauth/authorize-এর মাধ্যমে করা ChatGPT সংযোগ, আর আগের Muse মেম্বারশিপ টোকেন, আগের মতোই কাজ করে। ফিল্ডের নাম আছে skill.md-এ, REST চুক্তি openapi.json-এ, আর এজেন্টের সূচি llms.txt-এ।