The Devin MCP connector routes your AI agent's tool calls to Devin's own MCP server through Scalekit. Each user connects their own Devin access token once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 19 tools.
- Tools
- 19
- What they doRead · write · destructive
- 0 · 19 · 00 read19 write0 destructive
- Users sign in with
- Access token
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Devin MCP connection
In AgentKit > Connections, create a Devin MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Console steps with screenshots
Register your Devin API key with Scalekit so it stores it securely and injects it into every request. Devin uses API key authentication.
-
Get your Devin API key
- Sign in to Devin and go to Settings → Devin API.
- Click the API keys (legacy) tab.
- Under Personal API key, click View key to reveal your key, or expand the dropdown to regenerate it.

-
Create a connection in Scalekit
- In Scalekit dashboard, go to AgentKit → Connections → Create Connection. Find Devin MCP and click Create.
- Note the Connection name — you will use this as
connection_namein your code (e.g.,devinmcp). - Click Save.
-
Add a connected account
Connected accounts link a specific user identifier in your system to their Devin API key. Add one in the dashboard to test. In production, each user adds their own through the authorization link: they enter their credentials on the page it opens.
In the dashboard, to test
- Open the connection you created and click the Connected Accounts tab → Add account.
- Fill in:
- Your User’s ID — a unique identifier for this user in your system (e.g.,
user_123) - API Key — the Devin API key from step 1
- Your User’s ID — a unique identifier for this user in your system (e.g.,
- Click Create Account.
From your backend, if your app already has the credentials
For example, when users enter them on a settings page in your app:
import { Scalekit, ConnectorStatus } from '@scalekit-sdk/node';const scalekit = new Scalekit(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,);// Never hard-code credentials — read from secure storage or user inputconst devinApiKey = getUserDevinApiKey(); // retrieve from your secure storeconst authorizationDetails = {details: {case: 'staticAuth',value: {details: {token: devinApiKey,},},},};let { connectedAccount } = await scalekit.actions.upsertConnectedAccount({connectionName: 'devinmcp',identifier: 'user_123',authorizationDetails,});// Make sure the account is ACTIVE before the first tool call.if (connectedAccount?.status !== ConnectorStatus.ACTIVE) {({ connectedAccount } = await scalekit.actions.upsertConnectedAccount({connectionName: 'devinmcp',identifier: 'user_123',authorizationDetails,}));}import osfrom scalekit import ScalekitClientscalekit_client = ScalekitClient(env_url=os.environ["SCALEKIT_ENVIRONMENT_URL"],client_id=os.environ["SCALEKIT_CLIENT_ID"],client_secret=os.environ["SCALEKIT_CLIENT_SECRET"],)# Never hard-code credentials — read from secure storage or user inputdevin_api_key = get_user_devin_api_key() # retrieve from your secure storeauthorization_details = {"static_auth": {"token": devin_api_key}}response = scalekit_client.actions.upsert_connected_account(connection_name="devinmcp",identifier="user_123",authorization_details=authorization_details,)# Make sure the account is ACTIVE before the first tool call.if response.connected_account.status != "ACTIVE":response = scalekit_client.actions.upsert_connected_account(connection_name="devinmcp",identifier="user_123",authorization_details=authorization_details,)
-
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'devinmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Devin MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'devinmcp_devin_session_search',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "devinmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Devin MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="devinmcp_devin_session_search",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Devin MCP server credentials there. If your app already has a user's credentials, add the account from your backend instead, as the console steps above show. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_tooldevinmcp_ask_questionAsk any question about a GitHub repository and get an AI-powered, context-grounded response.WriteAsk Question
Ask any question about a GitHub repository and get an AI-powered, context-grounded response.
Inputs
questionstringrequired- No description.
repoNamestringrequired- No description.
devinmcp_devin_automation_manageManage Devin automations that run Devin in response to events (GitHub, Slack, Linear, schedules, webhooks) — list, get, create, update, delete, or run them.WriteDevin Automation Manage
Manage Devin automations that run Devin in response to events (GitHub, Slack, Linear, schedules, webhooks) — list, get, create, update, delete, or run them.
Inputs
actionstringrequired- No description.one of
listgetschemastemplatescreatevalidate_createupdatevalidate_updatedeleterun actionsstring- No description.
afterstring- No description.
agent_typesstring- No description.
automation_idstring- No description.
concurrencystring- No description.
creator_idstring- No description.
enabledstring- No description.
event_datastring- No description.
event_typestring- No description.
firststring- No description.
limitsstring- No description.
metadatastring- No description.
namestring- No description.
notificationsstring- No description.
promptstring- No description.
run_asstring- No description.
searchstring- No description.
security_profilestring- No description.
session_settingsstring- No description.
template_idstring- No description.
toolsstring- No description.
triggersstring- No description.
devinmcp_devin_code_scan_manageManage Devin code scans and scan profiles — list scans and findings, manage profiles, create scans, or remediate findings.WriteDevin Code Scan Manage
Manage Devin code scans and scan profiles — list scans and findings, manage profiles, create scans, or remediate findings.
Inputs
actionstringrequired- No description.one of
list_scanslist_findingslist_profilesget_profilecreate_profileupdate_profilecreate_scanremediate_finding afterstring- No description.
communication_guidancestring- No description.
descriptionstring- No description.
exclude_globsstring- No description.
finding_idstring- No description.
firststring- No description.
hoststring- No description.
include_globsstring- No description.
ingestion_source_guidancestring- No description.
investigation_guidancestring- No description.
modestring- No description.
post_ingestion_guidancestring- No description.
profile_idstring- No description.
profile_namestring- No description.
remediation_guidancestring- No description.
repo_namestring- No description.
report_guidancestring- No description.
scan_idstring- No description.
scan_typestring- No description.
severitystring- No description.
statusstring- No description.
threat_model_guidancestring- No description.
time_afterstring- No description.
time_beforestring- No description.
triage_guidancestring- No description.
validation_guidancestring- No description.
devinmcp_devin_knowledge_manageManage Devin knowledge notes and suggestions — list, get, create, or update entries.WriteDevin Knowledge Manage
Manage Devin knowledge notes and suggestions — list, get, create, or update entries.
Inputs
actionstringrequired- No description.one of
listgetcreateupdatedeletefolderslist_suggestionsview_suggestiondismiss_suggestions afterstring- No description.
bodystring- No description.
contentstring- No description.
event_idstring- No description.
event_idsstring- No description.
firststring- No description.
folder_pathstring- No description.
limitstring- No description.
namestring- No description.
note_idstring- No description.
offsetstring- No description.
pinned_repostring- No description.
querystring- No description.
searchstring- No description.
since_daysstring- No description.
statusstring- No description.
triggerstring- No description.
devinmcp_devin_oncall_manageView a Devin Oncall report's current responder membership, or a responder's open issues.WriteDevin Oncall Manage
View a Devin Oncall report's current responder membership, or a responder's open issues.
Inputs
actionstringrequired- No description.one of
report_contextresponder_issues afterstring- No description.
firststring- No description.
order_bystring- No description.
report_idstring- No description.
responder_idstring- No description.
devinmcp_devin_playbook_manageManage Devin playbooks — list, get, create, or update playbook entries.WriteDevin Playbook Manage
Manage Devin playbooks — list, get, create, or update playbook entries.
Inputs
actionstringrequired- No description.one of
listgetcreateupdatedelete afterstring- No description.
bodystring- No description.
contentstring- No description.
firststring- No description.
macrostring- No description.
playbook_idstring- No description.
structured_output_schemastring- No description.
titlestring- No description.
devinmcp_devin_review_manageTrigger a Devin Review for a pull/merge request, or fetch its latest review status.WriteDevin Review Manage
Trigger a Devin Review for a pull/merge request, or fetch its latest review status.
Inputs
actionstringrequired- No description.one of
triggerget_status pr_urlstringrequired- No description.
commit_shastring- No description.
devinmcp_devin_schedule_manageManage scheduled Devin sessions — list, get, create, update, or delete schedules.WriteDevin Schedule Manage
Manage scheduled Devin sessions — list, get, create, update, or delete schedules.
Inputs
actionstringrequired- No description.one of
listgetcreateupdatedelete agentstring- No description.
bypass_approvalstring- No description.
enabledstring- No description.
frequencystring- No description.
limitstring- No description.
namestring- No description.
notify_onstring- No description.
offsetstring- No description.
platformstring- No description.
playbook_idstring- No description.
promptstring- No description.
schedule_idstring- No description.
schedule_typestring- No description.
scheduled_atstring- No description.
target_devin_idstring- No description.
devinmcp_devin_session_createCreate one or more child Devin sessions via the REST API.WriteDevin Session Create
Create one or more child Devin sessions via the REST API.
Inputs
sessionsarrayrequired- No description.
devin_modestring- No description.
platformstring- No description.
reposstring- No description.
structured_output_schemastring- No description.
devinmcp_devin_session_eventsInspect events within a Devin session — list summaries, fetch full details, or search.WriteDevin Session Events
Inspect events within a Devin session — list summaries, fetch full details, or search.
Inputs
actionstringrequired- No description.one of
listdetailssearch session_idstringrequired- No description.
afterstring- No description.
categoriesstring- No description.
created_afterstring- No description.
created_beforestring- No description.
directionstring- No description.
event_idsstring- No description.
event_typesstring- No description.
firststring- No description.
limitstring- No description.
max_content_lengthstring- No description.
offsetstring- No description.
querystring- No description.
devinmcp_devin_session_gatherWait for multiple Devin sessions to reach a settled state before returning.WriteDevin Session Gather
Wait for multiple Devin sessions to reach a settled state before returning.
Inputs
session_idsarrayrequired- No description.
poll_interval_secondsinteger- No description.default
30 timeout_secondsinteger- No description.default
300
devinmcp_devin_session_interactInteract with a Devin session — get status, send a message, sleep, or terminate.WriteDevin Session Interact
Interact with a Devin session — get status, send a message, sleep, or terminate.
Inputs
actionstringrequired- No description.one of
getmessagesleepterminatearchiveunarchiveget_messagesget_attachmentsset_tags session_idstringrequired- No description.
afterstring- No description.
archive_on_terminateboolean- No description.default
false attachment_urlsstring- No description.
firststring- No description.
messagestring- No description.
tagsstring- No description.
devinmcp_devin_session_searchSearch and filter Devin sessions by date, tags, playbook, schedule, or user.WriteDevin Session Search
Search and filter Devin sessions by date, tags, playbook, schedule, or user.
Inputs
afterstring- No description.
created_afterstring- No description.
created_beforestring- No description.
firststring- No description.
originsstring- No description.
parent_session_idstring- No description.
playbook_idstring- No description.
schedule_idstring- No description.
session_idsstring- No description.
tagsstring- No description.
updated_afterstring- No description.
updated_beforestring- No description.
user_idsstring- No description.
devinmcp_find_settingFind a Devin webapp setting and get a deep-link URL to it.WriteFind Setting
Find a Devin webapp setting and get a deep-link URL to it.
Inputs
querystring- No description.
devinmcp_generate_wikiGenerate a codebase wiki for a repository and wait for it to complete.WriteGenerate Wiki
Generate a codebase wiki for a repository and wait for it to complete.
Inputs
repoNamestringrequired- No description.
devinmcp_list_available_reposList all repositories available to query with your Devin account.WriteList Available Repos
List all repositories available to query with your Devin account.
Inputs
This tool takes no inputs.
devinmcp_list_integrationsList all native integrations and MCP servers for the organization with status and settings.WriteList Integrations
List all native integrations and MCP servers for the organization with status and settings.
Inputs
filterstring- No description.one of
allinstallednot_installeddefaultall
devinmcp_read_wiki_contentsView documentation content for a GitHub repository.WriteRead Wiki Contents
View documentation content for a GitHub repository.
Inputs
repoNamestringrequired- No description.
devinmcp_read_wiki_structureGet a list of documentation topics for a GitHub repository.WriteRead Wiki Structure
Get a list of documentation topics for a GitHub repository.
Inputs
repoNamestringrequired- No description.
No tools match.