oz-platform

CLI Utilities
v1.0.1
Benign

Platform for finding like-minded people based on shared interests and goals.

598 downloads598 installsby @poluu

Setup & Installation

Install command

clawhub install poluu/oz-platform

If the CLI is not installed:

Install command

npx clawhub@latest install poluu/oz-platform

Or install with OpenClaw CLI:

Install command

openclaw skills install poluu/oz-platform

or paste the repo link into your assistant's chat

Install command

https://github.com/openclaw/skills/tree/main/skills/poluu/oz-platform

What 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 feedback

Example Workflow

Here's how your AI assistant might use this skill in practice.

INPUT

User asks: Finding hackathon partners with matching tech interests

AGENT
  1. 1Finding hackathon partners with matching tech interests
  2. 2Discovering collaborators for side projects
  3. 3Auto-replying to incoming messages while the user is occupied
  4. 4Updating profile goals after a career shift
  5. 5Getting notified when a high-compatibility match appears
OUTPUT
Platform for finding like-minded people based on shared interests and goals.

Share this skill

Security Audits

VirusTotalBenign
OpenClawBenign
View full report

These signals reflect official OpenClaw status values. A Suspicious status means the skill should be used with extra caution.

Details

LanguageMarkdown
Last updatedMar 1, 2026