API and MCP
SynTwin exposes core data-management capabilities through REST and MCP. Meeting transcripts, email summaries, and call notes are not special: they are sources linked to people or to the owner.
Most owners should start with Connect external tools. This page is for technical setup.
Authentication
Section titled “Authentication”External clients use WorkOS API keys.
WorkOS setup
Section titled “WorkOS setup”Use the same WorkOS environment that AuthKit uses.
- Enable API keys.
- In Authorization, enable API key management for the role owners receive.
The role needs
widgets:api-keys:manage. - In Authorization > Configuration, add the organization API key permissions below. SynTwin-created keys use
syntwin:all; keys without permissions are rejected.
Use least-privilege permissions:
people:readpeople:writesources:readsources:writesources:importknowledge:readknowledge:writedeployments:readdeployments:writesyntwin:readsyntwin:writesyntwin:all
syntwin:all is a master scope. Write scopes imply matching read scopes.
Existing unscoped API keys must be rotated after enabling these permissions.
- Set Convex env vars:
WORKOS_API_KEY=sk_...WORKOS_CLIENT_ID=client_...WORKOS_CUSTOM_DOMAIN=login.syntwin.aiOptional, if the default membership role is not the owner role:
WORKOS_PERSONAL_ORGANIZATION_ROLE_SLUG=adminSynTwin creates a personal WorkOS organization per owner. The organization is not shown in SynTwin UI. It is only used so WorkOS can issue organization API keys through the API keys widget.
Implementation details:
- organization external id:
syntwin-owner-<workos-user-id> - organization membership: active membership for the WorkOS user
- cached Convex field:
users.workosPersonalOrganizationId - widget scope:
widgets:api-keys:manage
Interactive API reference:
GET /api/v1/docsOpenAPI spec:
GET /api/v1/openapi.jsonPeople:
GET /api/v1/peoplePOST /api/v1/peopleGET /api/v1/people/{id}PATCH /api/v1/people/{id}DELETE /api/v1/people/{id}Sources:
GET /api/v1/sourcesPOST /api/v1/sourcesPOST /api/v1/sources/upload-urlPOST /api/v1/sources/uploadsGET /api/v1/sources/{id}PATCH /api/v1/sources/{id}DELETE /api/v1/sources/{id}Knowledge and deployments:
GET /api/v1/tagsPOST /api/v1/tagsPATCH /api/v1/tags/{id}DELETE /api/v1/tags/{id}
GET /api/v1/rulesPOST /api/v1/rulesPATCH /api/v1/rules/{id}DELETE /api/v1/rules/{id}
GET /api/v1/deploymentsPOST /api/v1/deploymentsPATCH /api/v1/deployments/{id}DELETE /api/v1/deployments/{id}
GET /api/v1/questionsPOST /api/v1/questions/answerPOST /api/v1/questions/dismissCreate a source for people by email:
{ "title": "Alice / Bob meeting", "content": "Full transcript or notes...", "personEmails": ["alice@example.com", "bob@example.com"], "createMissingPeople": true, "externalProvider": "custom-cron", "externalId": "meeting-123"}externalProvider plus externalId makes source creation idempotent.
Upload a file source:
POST /api/v1/sources/upload-urlPOSTthe file bytes to the returneduploadUrl- Read
{ "storageId": "..." }from the upload response POST /api/v1/sources/uploads
{ "fileName": "meeting.pdf", "storageId": "returned-by-upload-response", "fileType": "application/pdf", "personEmails": ["alice@example.com"], "createMissingPeople": true, "tags": ["meeting"]}Remote MCP endpoint:
POST /api/mcpThis endpoint uses the MCP SDK in stateless JSON response mode over HTTP. Use the same WorkOS API key permissions as the REST API.
Available tools:
list_peoplecreate_personupdate_persondelete_personlist_sourcesget_sourcecreate_sourcecreate_source_upload_urlcreate_uploaded_sourceupdate_sourcedelete_sourcecall_capability
call_capability covers tags, rules, deployments, and reflection questions. Agents can pull data from calendars, email, notetakers, or files, then create people and sources or adjust other SynTwin state through these tools.