Skip to main content
Glama
B2B-Saas-Inc

@b2b-saas-inc/olli-mcp-server

by B2B-Saas-Inc
README.md
# @b2b-saas-inc/olli-mcp-server

MCP server for [olli.social](https://olli.social) — lets LLMs manage your social presence via API key.

## Installation

Add to your Claude Desktop (or other MCP client) config:

```json
{
  "mcpServers": {
    "olli": {
      "command": "npx",
      "args": ["-y", "@b2b-saas-inc/olli-mcp-server"],
      "env": {
        "OLLI_API_KEY": "olli_sk_your_key_here"
      }
    }
  }
}
```

Generate an API key in your olli.social profile settings under **API Keys**.

## Configuration

| Variable | Required | Default |
|---|---|---|
| `OLLI_API_KEY` | Yes | — |
| `OLLI_BASE_URL` | No | `https://api.olli.social/v1` |

## Tools (68)

| Category | Tools |
|---|---|
| Workspaces | `list_workspaces`, `get_workspace`, `update_workspace`, `list_memberships`, `update_membership`, `remove_membership`, `list_invitations`, `create_invitation`, `delete_invitation`, `get_feature_flags`, `get_plan_features` |
| Campaigns | `list_campaigns`, `get_campaign`, `create_campaign`, `update_campaign`, `delete_campaign` |
| Drafts | `list_drafts`, `get_draft`, `create_draft`, `update_draft`, `delete_draft`, `publish_draft`, `schedule_draft` |
| Calendar | `list_calendar_events`, `get_calendar_event`, `create_calendar_event`, `update_calendar_event`, `delete_calendar_event` |
| Assets | `list_assets`, `get_asset`, `create_asset`, `delete_asset` |
| ICPs | `list_icps`, `create_icp`, `update_icp`, `delete_icp` |
| Industries | `list_industries`, `create_industry`, `update_industry`, `delete_industry` |
| Products | `list_products`, `create_product`, `update_product`, `delete_product` |
| Teams | `list_teams`, `get_team`, `create_team`, `update_team`, `delete_team`, `list_team_members`, `add_team_member`, `remove_team_member` |
| AI | `generate_post`, `improve_content`, `create_variations`, `suggest_hashtags`, `analyze_content`, `get_ai_usage`, `campaign_generate`, `avatar_chat`, `list_avatar_conversations`, `get_avatar_conversation` |
| Analytics | `get_analytics` |
| Amplification | `list_amplification_posts`, `get_amplification_post`, `create_amplification_post`, `delete_amplification_post` |
| Leaderboard | `get_leaderboard` |
| Integrations | `list_integrations`, `get_linkedin_organizations`, `select_linkedin_organization`, `sync_linkedin`, `get_linkedin_analytics`, `disconnect_integration` |
| Notifications | `list_notifications`, `mark_notification_read`, `mark_all_notifications_read`, `delete_notification` |
| Support | `list_support_tickets`, `get_support_ticket`, `create_support_ticket`, `list_ticket_messages`, `reply_to_ticket` |
| Billing | `get_billing`, `list_invoices` |

All workspace-scoped tools require a `workspace_id` (slug or UUID, e.g. `"olli-demo"`).

## Development

```bash
npm install
OLLI_API_KEY=olli_sk_... npm run dev
npm run build
```

## License

MIT

## Schema Sync

Avatar tool schemas are sourced from `olli-social-app`'s `AvatarToolRegistry` — the single source of truth for all 34 avatar AI tool definitions. Instead of maintaining duplicate schemas in TypeScript, this MCP server imports them as JSON.

### How it works

1. The Rails app exposes `GET /api/v1/ai/avatar_schemas` (protected by shared secret)
2. Running `npm run sync-schemas` fetches the schemas and writes them to `src/generated/avatar-schemas.json`
3. At startup, the MCP server reads this JSON file and dynamically registers avatar tools
4. Each avatar tool proxies execution back to the Rails avatar endpoint

### Setup

Add these variables to your `.env` file:

```env
MCP_RAILS_URL=https://api.olli.social
MCP_SHARED_SECRET=your_shared_secret_here
```

`MCP_RAILS_URL` is the base URL of your olli-social-app Rails server.  
`MCP_SHARED_SECRET` must match the `MCP_SHARED_SECRET` environment variable on the Rails side.

### Syncing schemas

```bash
# Pull latest avatar tool schemas from Rails
npm run sync-schemas
```

The output file `src/generated/avatar-schemas.json` is committed to the repo for reproducible builds. Re-run the sync whenever avatar tool definitions change in the Rails app (i.e., when `AvatarToolRegistry::SCHEMA_VERSION` is bumped).

### Adding new avatar tools

New avatar tools should be added to `AvatarToolRegistry` in `olli-social-app` — never directly in this MCP server. After adding tools in Rails:

1. Bump `SCHEMA_VERSION` in `avatar_tool_registry.rb`
2. Run `npm run sync-schemas` in this repo
3. Commit the updated `avatar-schemas.json`

TDQS

C2.7/5.0

Scored across 138 tools

Disambiguation4/5

Tools are mostly distinct by resource, but potential overlap between 'create_draft' and 'generate_post' could cause confusion. The large quantity makes subtle distinctions harder.

Naming Consistency5/5

All tools follow a strict verb_noun snake_case pattern, highly consistent and predictable.

Tool Count1/5

138 tools is far beyond typical scope for a single server. This extreme count suggests lack of focus and may overwhelm agents.

Completeness3/5

Covers many resources but missing update operations for assets, tracked profiles, pixel configs, etc. Some CRUD gaps exist, but core workflows are generally supported.

Maintenance

ActivityInactive
ResponsivenessNo issues