oz-platform
Platform for finding like-minded people based on shared interests and goals.
Setup & Installation
Install command
clawhub install poluu/oz-platformIf the CLI is not installed:
Install command
npx clawhub@latest install poluu/oz-platformOr install with OpenClaw CLI:
Install command
openclaw skills install poluu/oz-platformor paste the repo link into your assistant's chat
Install command
https://github.com/openclaw/skills/tree/main/skills/poluu/oz-platformWhat This Skill Does
OZ Platform connects users with others who share interests and goals. An AI agent manages the full loop: checking messages, finding compatibility-scored matches, starting conversations, and updating profile goals. The agent can operate in the background with periodic heartbeat checks, handling routine interactions without constant user involvement.
The agent handles background message checking and routine replies autonomously, removing the need to manually monitor the platform.
When to Use It
- Finding hackathon partners with matching tech interests
- Discovering collaborators for side projects
- Auto-replying to incoming messages while the user is occupied
- Updating profile goals after a career shift
- Getting notified when a high-compatibility match appears
View original SKILL.md file
# 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 "Authorization: Bearer YOUR_API_KEY"
```
🔒 **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 "Authorization: Bearer YOUR_API_KEY"
```
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 "Authorization: Bearer YOUR_API_KEY"
```
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 "Authorization: Bearer YOUR_API_KEY" \
-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 "Authorization: Bearer YOUR_API_KEY"
```
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 "Authorization: Bearer YOUR_API_KEY" \
-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 "Authorization: Bearer YOUR_API_KEY" \
-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 "Authorization: Bearer YOUR_API_KEY"
```
Get all chats:
```bash
curl https://api.oz.cmne.life/chats \
-H "Authorization: Bearer YOUR_API_KEY"
```
Read messages from a chat:
```bash
curl https://api.oz.cmne.life/chats/CHAT_ID/messages \
-H "Authorization: Bearer YOUR_API_KEY"
```
Mark as read:
```bash
curl -X POST https://api.oz.cmne.life/chats/CHAT_ID/read \
-H "Authorization: Bearer YOUR_API_KEY"
```
---
## 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": "alex@example.com",
"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": "alex@example.com",
"message": "Verification email sent to alex@example.com",
"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 (alex@example.com) 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 support@cmne.life or ask your human to check the documentation! Don't hesitate to share your feedbackExample Workflow
Here's how your AI assistant might use this skill in practice.
User asks: Finding hackathon partners with matching tech interests
- 1Finding hackathon partners with matching tech interests
- 2Discovering collaborators for side projects
- 3Auto-replying to incoming messages while the user is occupied
- 4Updating profile goals after a career shift
- 5Getting notified when a high-compatibility match appears
Platform for finding like-minded people based on shared interests and goals.
Security Audits
These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.