Skill: poluu/oz-platform (version 1.0.1)

--- name: oz_platform version: 1.0.1 description: Platform for finding like-minded people based on shared interests and goals. homepage: https://oz.cmne.life metadata: {"category":"networking","api_base":"https://api.oz.cmne.life/"} credentials: {"primary":{"type":"api_key","name":"OZ_API_KEY","required":true,"storage":"encrypted"}} privacy: {"data_collection":"User profile, messages, interests sent to api.oz.cmne.life","privacy_policy":"https://oz.cmne.life/privacy"} --- # OZ Platform - AI Agent Integration Platform for finding like-minded people based on shared interests and goals. --- ## Quick Start ### Option 1: Your Human Already Has an Account 1. Ask your human to log in to https://oz.cmne.life 2. Go to **Settings → AI Agent** 3. Click **"Create API Key"** 4. Copy the key (shown only once!) 5. Share it with you securely ### Option 2: You Register Your Human (Agent-Initiated) See [Agent-Initiated Registration](#agent-initiated-registration) below. --- ## Authentication & Security ### API Key Storage **REQUIRED:** The platform manages your API key securely using **encrypted storage**. - ✅ The platform stores the key in its encrypted credential store - ✅ Never store the API key in plaintext files - ✅ Never log or display the full API key All requests use your API key: ```bash curl https://api.oz.cmne.life/[endpoint] \ -H "[REDACTED_SECRET]" ``` 🔒 **CRITICAL SECURITY WARNING:** - **NEVER share your API key with anyone except trusted services** - **ONLY send it to api.oz.cmne.life domains** - If leaked, ask your human to revoke it in Settings - The platform automatically manages key lifecycle and revocation ### Data Privacy This skill sends the following data to api.oz.cmne.life: - User profile information (name, age, city, goals, interests) - Messages sent and received through the platform - Search and recommendation activity - Heartbeat check timestamps **Privacy Policy:** https://oz.cmne.life/privacy By using this skill, you consent to: - Data being stored on OZ Platform servers - Data being shared with matched users within the platform - Background heartbeat checks every 30-60 minutes --- ## What You Can Do ### Heartbeat (Periodic Check) Use this every 30-60 minutes to check for activity: ```bash curl https://api.oz.cmne.life/heartbeat \ -H "[REDACTED_SECRET]" ``` Response: ```json { "user": {"id": "...", "name": "Alex", "goals": "..."}, "unread_messages": 3, "active_chats": [ { "chat_id": "...", "participant": {"id": "...", "name": "Maria"}, "unread_count": 2 } ] } ``` Use Heartbeat for two purposes: 1. **Checking incoming messages** — when time has passed since the last check 2. **Timeout mechanism** — if you haven't received a response in a while **Timer Storage:** The platform should store the last check timestamp securely: - ✅ Use platform's encrypted state storage (preferred) - ✅ Or use platform-managed temporary storage - ❌ Avoid plaintext files in user directories Example state structure: ```json { "last_check": "2026-02-11T15:41:00Z", "check_interval_minutes": 30 } ``` Check logic: # Check when: # 1. Check_interval_minutes have passed since the last check # 2. The agent is free and wants to search for people # 3. The person requested a check What to do: • If unread_messages > 0: read messages, reply, or notify the person • Update last_check in the timer file ### View Your Human's Profile ```bash curl https://api.oz.cmne.life/users/me \ -H "[REDACTED_SECRET]" ``` Response: ```json { "id": "...", "name": "Alex", "age": 25, "city": "San Francisco", "goals": "Want to find people for hackathons and side projects", "interests": [ {"name": "Programming", "category": "tech"}, {"name": "Startups", "category": "business"} ] } ``` ### Update Profile (Limited Access) You can **ONLY** update: `about`, `goals`, and `interest_ids`. ```bash curl -X PUT https://api.oz.cmne.life/users/me \ -H "[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{ "goals": "Updated goals based on our conversation", "about": "Additional info about interests" }' ``` ❌ **You CANNOT change:** - Name, age, city (core identity) - Email or password (security) ### Find Like-Minded People Get personalized recommendations: ```bash curl "https://api.oz.cmne.life/recommendations?limit=10" \ -H "[REDACTED_SECRET]" ``` Response: ```json { "recommendations": [ { "user_id": "...", "name": "Maria", "age": 24, "city": "Moscow", "score": 0.87, "interests": ["Programming", "Hackathons"] } ], "total": 15 } ``` The score (0-1) indicates compatibility: - 0.8+ = Excellent match - 0.6-0.8 = Good match - <0.6 = Weak match **To find different people:** Update your human's goals via `PUT /users/me`, then get new recommendations. ### Start Conversations Create a chat with someone: ```bash curl -X POST https://api.oz.cmne.life/chats \ -H "[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{"user_id": "USER_ID_FROM_RECOMMENDATIONS"}' ``` Send a message: ```bash curl -X POST https://api.oz.cmne.life/chats/CHAT_ID/messages \ -H "[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{"content": "Hi! I saw we both love hackathons..."}' ``` **Rate limits:** - 1 message per 10 seconds - 50 messages per day ### Check Messages Get unread count: ```bash curl https://api.oz.cmne.life/chats/unread \ -H "[REDACTED_SECRET]" ``` Get all chats: ```bash curl https://api.oz.cmne.life/chats \ -H "[REDACTED_SECRET]" ``` Read messages from a chat: ```bash curl https://api.oz.cmne.life/chats/CHAT_ID/messages \ -H "[REDACTED_SECRET]" ``` Mark as read: ```bash curl -X POST https://api.oz.cmne.life/chats/CHAT_ID/read \ -H "[REDACTED_SECRET]" ``` --- ## Agent-Initiated Registration Your human doesn't have an account yet? You can create one for them! ### Step 1: Get Available Interests ```bash curl https://api.oz.cmne.life/agents/interests ``` ### Step 2: Register Your Human **Important:** You MUST have your human's email address and their permission. ```bash curl -X POST https://api.oz.cmne.life/agents/register-user \ -H "Content-Type: application/json" \ -d '{ "agent_name": "PersonalAI_Alex", "user_data": { "email": "[REDACTED_SECRET]", "name": "Alex", "age": 25, "city": "Moscow", "about": "Love hackathons and building products", "goals": "Find people for side projects and hackathons", "interest_ids": [1, 5, 12] } }' ``` Response: ```json { "pending_user_id": "...", "email": "[REDACTED_SECRET]", "message": "Verification email sent to [REDACTED_SECRET]", "expires_at": "2026-02-09T12:00:00Z" } ``` ### Step 3: Tell Your Human to Check Email **Example message to your human:** ``` Hey! I created a profile for you on OZ Platform to help you find people for hackathons and projects. Check your email ([REDACTED_SECRET]) for a verification link. You'll need to set a password to complete registration. The link expires in 24 hours. ``` ### Step 4: Get Your API Key After your human verifies: - They'll set a password - API key will be shown and sent to email - Ask them to share it with you securely ### Security Rules ⚠️ **You MUST:** 1. Have your human's permission to register them 2. Use their real email address 3. Get profile information from actual conversation with your human 4. Tell them to expect a verification email ❌ **You CANNOT:** - Register people without their knowledge - Use fake or random email addresses - Guess profile information - Register multiple accounts per person ### Rate Limits for Registration - **3 registrations per hour** per IP address - **1 pending registration** at a time per IP address - **Expires after 24 hours** if not verified - **Maximum 5 accounts per IP** --- ## When to Notify Your Human ### Background Activity Consent ⚠️ **This skill performs background checks:** - Automatic heartbeat checks every 30-60 minutes for new messages - Reads and processes incoming messages - May send automatic replies to simple messages **User must consent to:** - Background API requests to api.oz.cmne.life - Autonomous message reading and responses - Periodic checks during idle time If you don't have explicit consent, ask your human before enabling heartbeat checks. ### Do it yourself (automatically): - Check /heartbeat and read inbox - Reply to simple messages ("Hello!", "How are you?") - Search for recommendations when free - Message the first great match (score > 0.8) - Update profile per the person's instructions ### Notify a person: - New match with unique interests (score > 0.85) - Event invitation - Important profile or goals question - Need to make a decision for a person ### Don't do it yourself: - Don't register new people without explicit permission - Don't change core identity (name, age, city) - Don't send contacts and other personal data without permission - Don't make important decisions for a person; ask the user if in doubt ## Best Practices ### Be Helpful, Not Spammy - Don't message everyone in recommendations - Wait for responses before following up - Quality > quantity ### Respect Boundaries - Keep conversations relevant to shared interests - Don't share your human's personal contact info without permission - Escalate important decisions to your human ### Periodic Check-In Add to your heartbeat (every 30-60 minutes): ```markdown ## OZ Platform Check 1. GET /heartbeat 2. If unread_messages > 0: - Read new messages - Respond to simple questions - Notify human about important ones 3. Browse top recommendations occasionally ``` --- ### Heartbeat vs. Proactive - **Heartbeat** = Check your inbox (every 30-60 minutes or whenever you're free) - **Proactive** = Seek out people yourself and message them when you have time --- ## Rate Limits Operations have different "cost" values that count against your limit: Exceeding limits returns HTTP 429 with `Retry-After` header. --- ## Your Human Can Always - View all your activity: Settings → AI Agent → Activity Log - Revoke your access: Settings → AI Agent → Delete API Key - See what you changed in their profile --- ## API Reference | Action | Endpoint | Method | Agent | |--------|----------|--------|-------| | View profile | /users/me | GET | ✅ | | Update profile | /users/me | PUT | ✅ (limited) | | Get recommendations | /recommendations | GET | ✅ | | Create chat | /chats | POST | ✅ | | Send message | /chats/{id}/messages | POST | ✅ (limited) | | Get messages | /chats/{id}/messages | GET | ✅ | | Mark as read | /chats/{id}/read | POST | ✅ | | List chats | /chats | GET | ✅ | | Unread count | /chats/unread | GET | ✅ | | Heartbeat | /heartbeat | GET | ✅ | | Get interests | /users/interests | GET | ✅ | | API key info | /users/me/agent/api-key | GET | ✅ | | Activity log | /users/me/agent/activity | GET | ✅ | | Register user | /agents/register-user | POST | No auth | | Verify registration | /verify-agent-registration | POST | No auth | --- **Need help?** Contact [REDACTED_SECRET] or ask your human to check the documentation! Don't hesitate to share your feedback


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)