Maintenance Due

এজেন্ট নির্মাতা

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 আর সাইন ইন

  1. আপনার ক্লায়েন্ট প্রকাশ করুন। আপনার client_id একটি https URL, যা আপনার ক্লায়েন্ট মেটাডেটা ডকুমেন্ট দেয়, আর jwks_uri ও redirect_uris একই ডোমেনে থাকে। প্রতিটি টোকেন অনুরোধে সেই jwks_uri-এর কী দিয়ে সাইন করা একটি private_key_jwt ক্লায়েন্ট অ্যাসারশন থাকে।
  2. একটি 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_type DPoP, এক ঘণ্টা) আর একটি session_id। নবায়নের জন্য নতুন অ্যাসারশনের সঙ্গে session_id পাঠান।
  3. মালিককে আমাদের পেজে পাঠান। /oauth/authorize খুলুন response_type=code, আপনার client_id ও redirect_uri, scope=poppy:read poppy:write (বা শুধু poppy:read), একটি state, আর PKCE S256 code_challenge সহ। মালিক আপনার নাম ও ডোমেন দেখেন, View only বা View and change বেছে নেন, তারপর একটি বিনামূল্যের শপ খোলেন বা তাঁর আগের মেম্বারশিপ টোকেন দিয়ে সাইন ইন করেন। রিডাইরেক্ট code, state আর iss ফেরত দেয়। যাচাই করুন iss হলো https://maintenancedue.com।
  4. কোড বিনিময় করুন। POST /oauth/token-এ grant_type=authorization_code, code, redirect_uri, code_verifier আর আপনার session_id পাঠান, সঙ্গে ক্লায়েন্ট অ্যাসারশন ও DPoP প্রুফ। উত্তরে refresh_token-এ Account Token (pat_…, ৩০ দিন), একটি সাইন-ইন Session Token, আর মঞ্জুর করা scope থাকে। আপনি বদলানোর অনুমতি চাইলেও মালিক শুধু দেখা বাছতে পারেন, তাই scope পড়ুন।
  5. পরে সাইন-ইন অবস্থায় শুরু করুন। POST /oauth/token-এ grant_type=refresh_token আর Account Token পাঠান, session_id সহ বা ছাড়া। কোনো খোঁজের জন্য শুধু-পড়ার টোকেন পেতে scope=poppy:read যোগ করুন। Account Token ঘোরানো হয় না, তাই সমান্তরাল Session সেটি ভাগ করে নিতে পারে।
  6. সাইন আউট করুন। 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-এ।