Feature matrix across surfaces
The REST API is the base. Every other surface calls it, so anything missing from a surface is missing from that wrapper, not from the platform. This matrix was built from the controllers, the SDK and CLI source and the MCP tool list. "Yes" means the surface has a direct command, method, tool or screen. "REST" in a cell means use the REST API for it.
Not sure which to pick? Read Choose your surface.
Which surface can publish and manage posts?
| Feature | Dashboard | CLI | TypeScript SDK | Python SDK | REST API | MCP |
|---|---|---|---|---|---|---|
| Publish a text post | Yes | Yes | Yes | Yes | Yes | Yes |
| Publish images | Yes | Yes | Yes | By ID or URL | Yes | By ID or URL |
| Publish a video | Yes | Yes | Yes | By ID or URL | Yes | By ID or URL |
| Publish a document | Yes | Yes | Yes | No | Yes | No |
| Attach a local file | Yes | Yes | Yes | No | Yes | No |
| Schedule a post | Yes | Yes | Yes | Yes | Yes | Yes |
| Bulk schedule (up to 500 text posts) | Yes (CSV) | Yes (CSV) | Yes | Yes | Yes | Yes (rows) |
| Save a draft | Yes | Yes | Yes | Text only | Yes | No |
| Edit a draft or scheduled post | Yes | Yes | Yes | No | Yes | Yes |
| Publish a draft | Yes | Yes | Yes | Yes | Yes | Yes |
| Publish a scheduled post now | Yes | No | Yes | No | Yes | No |
| Delete or cancel a post | Yes | No | Yes | No | Yes | No |
| List posts | Yes | No | Yes | Yes | Yes | Yes |
| Check status | Yes | Yes | Yes | Yes | Yes | Yes |
| Retry failed channels | Yes | Yes | Yes | Yes | Yes | Yes |
| Submit for approval, approve, reject | Yes | No | No | No | Yes | No |
Which surface can manage accounts, media and teams?
| Feature | Dashboard | CLI | TypeScript SDK | Python SDK | REST API | MCP |
|---|---|---|---|---|---|---|
| Connect a new account | Yes | No | No | No | No (needs a browser session) | No |
| List accounts with status | Yes | Yes | Yes | Yes | Yes | Yes |
| Refresh a token | Yes | Yes | Yes | Yes | Yes | Yes |
| Get a reconnect link | Reconnect button | Yes | Yes | Yes | Yes | Yes |
| Upload, list, delete media | Yes | Yes | Yes | No | Yes | List and delete |
| Create and list workspaces | Yes | No | Yes | No | Yes | No |
| Invite members, change roles | Yes | No | Yes | No | Yes | No |
| Create API keys, set guardrails | Yes | No | Yes | No | Yes | No |
| Manage webhooks | No | No | Yes | No | Yes | No |
| Verify webhook signatures | n/a | n/a | Yes | Yes | n/a | n/a |
| Read plan usage | Yes | Yes | Yes | Yes | Yes | Yes |
Which surface can run analytics and AI?
| Feature | Dashboard | CLI | TypeScript SDK | Python SDK | REST API | MCP |
|---|---|---|---|---|---|---|
| Follower growth | Yes | Yes | Yes | Yes | Yes | Yes |
| Compare accounts | Yes | Yes | Yes | Yes | Yes | Yes |
| Per-post analytics | Yes | No | Yes | Yes | Yes | Yes |
| Export analytics as CSV | Yes | No | No | No | Yes | No |
| Generate captions | Yes | --ai on post | Yes | Yes | Yes | Yes |
| Suggest hashtags | Yes | No | Yes | Yes | Yes | No |
| Set your own AI key | Yes | No | No | No | Yes | No |
What do agents with guardrails lose?
An API key with guardrails can call only a short list of routes. It cannot approve posts, change keys, manage webhooks, members or AI settings, refresh or reconnect accounts, or delete media. In MCP that blocks refresh_connection, reconnect_connection and delete_media. See Approvals and guardrails.
Where can I read about each surface?
- Dashboard: Dashboard guide
- CLI: CLI reference
- TypeScript SDK: SDK overview
- Python SDK: Python SDK
- REST: REST API reference
- MCP: MCP tools
FAQ
Why does the Python SDK have fewer features?
It covers publishing by ID or URL, scheduling, status, retry, connections, usage, analytics and AI. It has no media resource, no webhook or workspace management and no update or delete. Use REST or the TypeScript SDK for those.
Is anything missing everywhere?
Starting a new OAuth connection outside the dashboard, and listing posts that are waiting for approval by status filter.