The Integrations API lets you connect third-party tools to ManticScore, configure their defaults so one-tap actions work without extra prompting, and execute any of 1000+ Composio tools directly. Connections are managed through OAuth flows brokered by Composio. Once a toolkit is connected, ManticScore auto-discovers your resources (repos, teams, channels) and saves smart defaults for use in ship, ship-research, and automation flows.
List all integrations
Returns the full inventory of available integrations and their connection status for the authenticated user.
curl "https://api.manticscore.com/integrations/composio/tools" \
-H "Authorization: Bearer <token>"
{
"tools" : [
{
"id" : "github" ,
"name" : "GitHub" ,
"category" : "code" ,
"logo_url" : "https://cdn.manticscore.com/logos/github.svg" ,
"description" : "Create branches, open PRs, and trigger Forge coding runs." ,
"status" : "connected" ,
"agent_capabilities" : [ "create_pr" , "list_repos" ],
"config_fields" : [ "repo" , "default_branch" , "branch_prefix" ],
"account_id" : "acc_abc123" ,
"can_refresh" : false
},
{
"id" : "linear" ,
"name" : "Linear" ,
"category" : "tasks" ,
"logo_url" : "https://cdn.manticscore.com/logos/linear.svg" ,
"description" : "Create and manage issues from build nodes." ,
"status" : "disconnected" ,
"agent_capabilities" : [],
"config_fields" : [],
"account_id" : null ,
"can_refresh" : false
}
],
"total_connected" : 1 ,
"total_available" : 18
}
Toolkit slug (e.g. github, linear, slack).
connected, expired, disabled, or disconnected.
Tool names the agent can invoke for this toolkit.
Configurable default fields for this toolkit.
Composio connected-account ID. Present only when status is connected or expired.
Whether the expired token can be refreshed without re-authenticating.
Starts the OAuth flow for a toolkit. Open the returned URL in a browser to complete authentication.
Profile route
Composio route
curl -X POST https://api.manticscore.com/profile/integrations/linear/connect \
-H "Authorization: Bearer <token>"
{
"url" : "https://composio.dev/oauth/linear?session=..." ,
"toolkit" : "linear"
}
curl -X POST https://api.manticscore.com/integrations/composio/linear/connect \
-H "Authorization: Bearer <token>"
{
"url" : "https://composio.dev/oauth/linear?session=..."
}
After the user authenticates in the browser, Composio redirects to the ManticScore callback which fires background resource discovery for the newly connected toolkit.
Profile route
Composio route
curl -X POST https://api.manticscore.com/profile/integrations/linear/disconnect \
-H "Authorization: Bearer <token>"
curl -X POST https://api.manticscore.com/integrations/composio/linear/disconnect \
-H "Authorization: Bearer <token>"
Refresh an expired connection
Refreshes an expired OAuth token without requiring the user to re-authenticate. Use account_id (the Composio connected-account ID, not the toolkit slug) from the tools list.
Profile route
Composio route
curl -X POST https://api.manticscore.com/profile/integrations/acc_abc123/refresh \
-H "Authorization: Bearer <token>"
curl -X POST https://api.manticscore.com/integrations/composio/acc_abc123/refresh \
-H "Authorization: Bearer <token>"
If the token cannot be refreshed silently, refreshed is false and an error string explains why. In that case, prompt the user to reconnect.
Check connection status
curl "https://api.manticscore.com/integrations/composio/linear/status" \
-H "Authorization: Bearer <token>"
Returns the Composio connection status payload for the specified toolkit.
List all connections
curl "https://api.manticscore.com/integrations/composio/connections" \
-H "Authorization: Bearer <token>"
Sets the defaults the agent and ship endpoints use when a tool call omits optional fields. This is a sparse merge — only the fields you send are updated; all others remain unchanged. Pass null as a value to remove a field.
Profile route
Integrations route
curl -X PATCH https://api.manticscore.com/profile/integrations/linear/defaults \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"team_id": "TEAM123", "default_priority": 2}'
curl -X PATCH https://api.manticscore.com/integrations/linear/defaults \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"team_id": "TEAM123", "default_priority": 2}'
{
"toolkit" : "linear" ,
"defaults" : {
"team_id" : "TEAM123" ,
"default_priority" : 2
}
}
Returns 404 if the toolkit is not connected. Connect it first, then configure defaults.
Field Type Description repostring Default repository in owner/repo format. default_branchstring Base branch for PRs (e.g. main). branch_prefixstring Prefix for auto-generated branch names. pr_reviewersstring[] GitHub usernames to assign as reviewers.
Field Type Description team_idstring Linear team ID. team_namestring Display name of the team. project_idstring Linear project ID. default_prioritynumber Priority 0 (no priority) to 4 (urgent). default_labelsstring[] Label names to apply to created issues. assignee_idstring Linear user ID to assign issues to.
Field Type Description project_keystring Jira project key (e.g. ENG). project_namestring Display name of the Jira project. default_issue_typestring Issue type (e.g. Task, Story). default_prioritystring Jira priority name (e.g. Medium). component_idstring Jira component to assign to new issues.
Field Type Description channel_idstring Default channel ID for general notifications. channel_namestring Display name of the default channel. research_channelstring Channel ID for research completion notifications. builds_channelstring Channel ID for build graph notifications. signals_channelstring Channel ID for signal alerts. formatstring Message format: summary or detailed. notify_on_researchboolean Send a message when research completes. notify_on_buildboolean Send a message when a build graph is ready. notify_on_signalboolean Send a message when a new signal is detected.
Field Type Description parent_idstring Notion page or database ID to create pages under. parent_titlestring Display title of the parent. research_db_idstring Database ID for research exports. build_plan_db_idstring Database ID for build plan exports.
Field Type Description default_ccstring Email address to CC on outbound messages. signaturestring Signature appended to outbound emails.
Trigger resource discovery
Manually discovers resources for a connected toolkit (repositories, teams, channels, etc.) and saves smart defaults. This runs automatically when you first connect a toolkit; use this endpoint to refresh after account changes.
curl -X POST https://api.manticscore.com/integrations/linear/discover \
-H "Authorization: Bearer <token>"
{
"defaults" : {
"team_id" : "TEAM123" ,
"team_name" : "Engineering"
},
"resources" : {
"teams" : [
{ "id" : "TEAM123" , "name" : "Engineering" }
]
}
}
Returns 400 if the toolkit is not connected.
The universal executor lets you invoke any of 1000+ Composio tools directly, without a dedicated endpoint. Use the Composio action slug (e.g. LINEAR_CREATE_LINEAR_ISSUE) as the action.
Composio action slug. Max 200 characters. Examples: LINEAR_CREATE_LINEAR_ISSUE, SLACK_SEND_MESSAGE, GITHUB_CREATE_ISSUE.
Arguments for the action. The required fields depend on the specific Composio action.
Composio connected-account ID to use. Pass null to use the user’s default connected account for the toolkit.
curl -X POST https://api.manticscore.com/integrations/execute \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"action": "LINEAR_CREATE_LINEAR_ISSUE",
"arguments": {
"title": "Implement auth module",
"team_id": "TEAM123"
},
"connected_account_id": null
}'
{
"status" : "completed" ,
"action" : "LINEAR_CREATE_LINEAR_ISSUE" ,
"result" : {
"id" : "LIN-42" ,
"url" : "https://linear.app/acme/issue/LIN-42"
}
}
Returns 502 if Composio or the upstream service returns an error. The detail field includes the upstream error message.
High-level action endpoints
These endpoints wrap the most common Composio actions with typed request bodies. They are equivalent to calling POST /integrations/execute with the corresponding action slug.
Create an issue curl -X POST https://api.manticscore.com/integrations/linear/issues \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"title": "Auth module", "team_id": "TEAM123", "description": "Implement JWT auth.", "priority": 2}'
List teams curl "https://api.manticscore.com/integrations/linear/teams" \
-H "Authorization: Bearer <token>"
Create an issue curl -X POST https://api.manticscore.com/integrations/jira/issues \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"project_key": "ENG", "summary": "Auth module", "issue_type": "Task", "description": "Implement JWT auth."}'
List projects curl "https://api.manticscore.com/integrations/jira/projects" \
-H "Authorization: Bearer <token>"
Send a message curl -X POST https://api.manticscore.com/integrations/slack/messages \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"channel": "C01234567", "text": "Research complete for AI expense tracker."}'
List channels curl "https://api.manticscore.com/integrations/slack/channels" \
-H "Authorization: Bearer <token>"
Create a page curl -X POST https://api.manticscore.com/integrations/notion/pages \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"parent_id": "abc123", "title": "AI Expense Tracker Research", "content": "## Market Overview\n..."}'
Search pages curl "https://api.manticscore.com/integrations/notion/search?q=expense+tracker" \
-H "Authorization: Bearer <token>"
Integration preferences
Returns all integration preferences including connection status, defaults, config fields, agent capabilities, and discovered resources in a single call.
curl "https://api.manticscore.com/integrations/preferences" \
-H "Authorization: Bearer <token>"
{
"integrations" : [
{
"toolkit" : "linear" ,
"name" : "Linear" ,
"connected" : true ,
"defaults" : { "team_id" : "TEAM123" },
"config_fields" : [ "team_id" , "project_id" , "default_priority" ],
"agent_capabilities" : [ "create_issue" , "list_teams" ],
"discovered_at" : "2026-04-10T10:00:00Z" ,
"resources" : {
"teams" : [{ "id" : "TEAM123" , "name" : "Engineering" }]
}
}
]
}