Plugins
Overview
PyGPT can be enhanced with plugins to add new features.
The following plugins are currently available, and model can use them instantly:
APIcalls- plugin lets you connect the model to the external services using custom defined API calls.AudioInput- provides speech recognition.AudioOutput- provides voice synthesis.AutonomousAgent(inline)- enables autonomous conversation (AI to AI), manages loop, and connects output back to input. This is the inline Agent mode.Bitbucket- Access Bitbucket API to manage repositories, issues, and pull requests.Chatwithfiles(LlamaIndex,inline)- plugin integrates LlamaIndex storage in any chat and provides additional knowledge into context (from indexed files).CodeInterpreter- responsible for generating and executing Python code, functioning much like theCode Interpreter onChatGPT, but locally. This means model can interface with any script, application, or code. Plugins can work in conjunction to perform sequential tasks; for example, theFiles plugin can write generated Python code to a file, which theCode Interpreter can execute it and return its result to model.Contexthistory(calendar,inline)- provides access to context history database.Crontab/Taskscheduler- plugin provides cron-based job scheduling - you can schedule tasks/prompts to be sent at any time using cron-based syntax for task setup.CustomCommands- allows you to create and execute custom commands on your system.Experts(inline)- allows calling experts in any chat mode. This is the inline Experts (co-op) mode.Facebook- Manage user info, pages, posts, and photos on Facebook pages.FilesI/O- grants access to the local filesystem, enabling model to read and write files, as well as list and create directories.GitHub- Access GitHub API to manage repositories, issues, and pull requests.Google- Access Gmail, Drive, Docs, Maps, Calendar, Contacts, Colab, YouTube, Keep - for managing emails, files, events, notes, video info, and contacts.ImageGeneration(inline)- integrates DALL-E 3 image generation with any chat and mode. Just enable and ask for image in Chat mode, using standard model like GPT-4. The plugin does not require the+Toolsoption to be enabled.Mailer- Provides the ability to send, receive and read emails.MCP- Provides access to remote tools via the Model Context Protocol (MCP), including stdio, SSE, and Streamable HTTP transports, with per-server allow/deny filtering, Authorization header support, and a tools cache.MouseandKeyboard- provides the ability to control the mouse and keyboard by the model.OpenStreetMap- Search, geocode, plan routes, and generate static maps using OpenStreetMap services (Nominatim, OSRM, staticmap).RealTime- automatically appends the current date and time to the system prompt, informing the model about current time.Serialport/USB- plugin provides commands for reading and sending data to USB ports.Server(SSH/FTP)- Connect to remote servers using FTP, SFTP, and SSH. Execute remote commands, upload, download, and more.Slack- Handle users, conversations, messages, and files on Slack.System(OS)- provides access to the operating system and executes system commands.SystemPromptExtra- appends additional system prompts (extra data) from a list to every current system prompt. You can enhance every system prompt with extra instructions that will be automatically appended to the system prompt.Telegram- Send messages, photos, and documents; manage chats and contacts.Tuya(IoT)- Handle Tuya Smart Home devices via Tuya Cloud API.Vision(inline)- integrates vision capabilities with any chat mode, not just Vision mode. When the plugin is enabled, the model temporarily switches to vision in the background when an image attachment or vision capture is provided.VoiceControl(inline)- provides voice control command execution within a conversation.WebSearch- provides the ability to connect to the Web, search web pages for current data, and index external content using LlamaIndex data loaders.Wikipedia- Search Wikipedia for information.WolframAlpha- Compute and solve with Wolfram Alpha: short answers, full JSON pods, math (solve, derivatives, integrals), unit conversions, matrix operations, and plots.X/Twitter- Interact with tweets and users, manage bookmarks and media, perform likes, retweets, and more.
Creating Your Own Plugins
You can create your own plugin forPyGPT at any time. The plugin can be written in Python and then registered with the application just before launching it. All plugins included with the app are stored in theplugin directory - you can use them as coding examples for your own plugins.
PyGPT can be extended with:
custom plugins
custom LLMs
custom vector store providers
custom data loaders
custom audio input providers
custom audio output providers
custom web search engine providers
custom agents (LlamaIndex or OpenAI Agents)
See the sectionExtendingPyGPT/Addingacustomplugin for more details.
API calls
PyGPT lets you connect the model to the external services using custom defined API calls.
To activate this feature, turn on theAPIcalls plugin found in thePlugins menu.
In this plugin you can provide list of allowed API calls, their parameters and request types. The model will replace provided placeholders with required params and make API call to external service.
YourcustomAPIcallscmds
You can provide custom API calls on the list here.
Params to specify for API call:
Enabled (True / False)
Name: unique API call name (ID)
Instruction: description for model when and how to use this API call
GET params: list, separated by comma, GET params to append to endpoint URL
POST params: list, separated by comma, POST params to send in POST request
POST JSON: provide the JSON object, template to send in POST JSON request, use
%param%as POST param placeholdersHeaders: provide the JSON object with dictionary of extra request headers, like Authorization, API keys, etc.
Request type: use GET for basic GET request, POST to send encoded POST params or POST_JSON to send JSON-encoded object as body
Endpoint: API endpoint URL, use
{param}as GET param placeholders
An example API call is provided with plugin by default, it calls the Wikipedia API:
Name:
search_wikiInstructiom:
sendAPIcalltoWikipediatosearchpagesbyqueryGET params:
query,limitType:
GETAPI endpoint:https://en.wikipedia.org/w/api.php?action=opensearch&limit={limit}&format=json&search={query}
In the above example, every time you ask the model for query Wiki for provided query (e.g.CalltheWikipediaAPIforquery:NikolaTesla) it will replace placeholders in provided API endpoint URL with a generated query and it will call prepared API endpoint URL, like below:
https://en.wikipedia.org/w/api.php?action=opensearch&limit=5&format=json&search=Nikola%20Tesla
You can specify type of request:GET,POST andPOSTJSON.
In thePOST request you can provide POST params, they will be encoded and send as POST data.
In thePOSTJSON request you must provide JSON object template to be send, using%param% placeholders in the JSON object to be replaced with the model.
You can also provide any required credentials, like Authorization headers, API keys, tokens, etc. using theheaders field - you can provide a JSON object here with a dictionarykey=>value - provided JSON object will be converted to headers dictonary and send with the request.
DisableSSLverifydisable_ssl
Disables SSL verification when making requests.Default:False
Timeouttimeout
Connection timeout (seconds).Default:5
Useragentuser_agent
User agent to use when making requests, default:Mozilla/5.0.Default:Mozilla/5.0
Audio Input
The plugin facilitates speech recognition (by default using theWhisper model from OpenAI,Google andBing are also available). It allows for voice commands to be relayed to the AI using your own voice. Whisper doesn’t require any extra API keys or additional configurations; it uses the main OpenAI key. In the plugin’s configuration options, you should adjust the volume level (min energy) at which the plugin will respond to your microphone. Once the plugin is activated, a newSpeak option will appear at the bottom near theSend button - when this is enabled, the application will respond to the voice received from the microphone.
The plugin can be extended with other speech recognition providers.
Options
Providerprovider
Choose the provider.Default:Whisper
Available providers:
Whisper (via
OpenAIAPI)Whisper (local model) - not available in compiled and Snap versions, only Python/PyPi version
Google (via
SpeechRecognitionlibrary)Google Cloud (via
SpeechRecognitionlibrary)Microsoft Bing (via
SpeechRecognitionlibrary)
Whisper (API)
Modelwhisper_model
Choose the model.Default:whisper-1
Whisper (local)
Modelwhisper_local_model
Choose the local model.Default:base
Available models:https://github.com/openai/whisper
Additionalkeywordsargumentsgoogle_args
Additional keywords arguments for r.recognize_google(audio,**kwargs)
Google Cloud
Additionalkeywordsargumentsgoogle_args
Additional keywords arguments for r.recognize_google_cloud(audio,**kwargs)
Bing
Additionalkeywordsargumentsbing_args
Additional keywords arguments for r.recognize_bing(audio,**kwargs)
General options
Autosendauto_send
Automatically send recognized speech as input text after recognition.Default:True
Advancedmodeadvanced
Enable only if you want to use advanced mode and the settings below. Do not enable this option if you just want to use the simplified mode (default).Default:False
Advanced mode options
Timeouttimeout
The duration in seconds that the application waits for voice input from the microphone.Default:5
Phrasemaxlengthphrase_length
Maximum duration for a voice sample (in seconds).Default:10
Minenergymin_energy
Minimum threshold multiplier above the noise level to begin recording.Default:1.3
Adjustforambientnoiseadjust_noise
Enables adjustment to ambient noise levels.Default:True
Continuouslistencontinuous_listen
Experimental: continuous listening - do not stop listening after a single input. Warning: This feature may lead to unexpected results and requires fine-tuning with the rest of the options! If disabled, listening must be started manually by enabling theSpeak option.Default:False
Waitforresponsewait_response
Wait for a response before initiating listening for the next input.Default:True
Magicwordmagic_word
Activate listening only after the magic word is provided.Default:False
ResetMagicwordmagic_word_reset
Reset the magic word status after it is received (the magic word will need to be provided again).Default:True
Magicwordsmagic_words
List of magic words to initiate listening (Magic word mode must be enabled).Default:OK, Okay, Hey GPT, OK GPT
Magicwordtimeoutmagic_word_timeout
he number of seconds the application waits for magic word.Default:1
Magicwordphrasemaxlengthmagic_word_phrase_length
The minimum phrase duration for magic word.Default:2
Prefixwordsprefix_words
List of words that must initiate each phrase to be processed. For example, you can define words like “OK” or “GPT”—if set, any phrases not starting with those words will be ignored. Insert multiple words or phrases separated by commas. Leave empty to deactivate.Default:empty
Stopwordsstop_words
List of words that will stop the listening process.Default:stop, exit, quit, end, finish, close, terminate, kill, halt, abort
Options related to Speech Recognition internals:
energy_thresholdrecognition_energy_threshold
Represents the energy level threshold for sounds.Default:300
dynamic_energy_thresholdrecognition_dynamic_energy_threshold
Represents whether the energy level threshold (see recognizer_instance.energy_threshold) for sounds should be automatically adjusted based on the currently ambient noise level while listening.Default:True
dynamic_energy_adjustment_dampingrecognition_dynamic_energy_adjustment_damping
Represents approximately the fraction of the current energy threshold that is retained after one second of dynamic threshold adjustment.Default:0.15
pause_thresholdrecognition_pause_threshold
Represents the minimum length of silence (in seconds) that will register as the end of a phrase.Default:0.8
adjust_for_ambient_noise:durationrecognition_adjust_for_ambient_noise_duration
The duration parameter is the maximum number of seconds that it will dynamically adjust the threshold for before returning.Default:1
Options reference:https://pypi.org/project/SpeechRecognition/1.3.1/
Audio Output
The plugin lets you turn text into speech using the TTS model from OpenAI or other services likeMicrosoftAzure,Google, andElevenLabs. You can add more text-to-speech providers to it too.OpenAITTS does not require any additional API keys or extra configuration; it utilizes the main OpenAI key.Microsoft Azure requires to have an Azure API Key. Before using speech synthesis viaMicrosoftAzure,Google orElevenLabs, you must configure the audio plugin with your API keys, regions and voices if required.

Through the available options, you can select the voice that you want the model to use. More voice synthesis providers coming soon.
To enable voice synthesis, activate theAudioOutput plugin in thePlugins menu or turn on theAudioOutput option in theAudio/Voice menu (both options in the menu achieve the same outcome).
Options
Providerprovider
Choose the provider.Default:OpenAI TTS
Available providers:
OpenAI TTS
Microsoft Azure TTS
Google TTS
Eleven Labs TTS
OpenAI Text-To-Speech
Modelopenai_model
Choose the model. Available options:
tts-1
tts-1-hd
Default:tts-1
Voiceopenai_voice
Choose the voice. Available voices to choose from:
alloy
echo
fable
onyx
nova
shimmer
Default:alloy
Microsoft Azure Text-To-Speech
AzureAPIKeyazure_api_key
Here, you should enter the API key, which can be obtained by registering for free on the following website:https://azure.microsoft.com/en-us/services/cognitive-services/text-to-speech
AzureRegionazure_region
You must also provide the appropriate region for Azure here.Default:eastus
Voice(EN)azure_voice_en
Here you can specify the name of the voice used for speech synthesis for English.Default:en-US-AriaNeural
Voice(non-English)azure_voice_pl
Here you can specify the name of the voice used for speech synthesis for other non-english languages.Default:pl-PL-AgnieszkaNeural
Google Text-To-Speech
GoogleCloudText-to-speechAPIKeygoogle_api_key
You can obtain your own API key at:https://console.cloud.google.com/apis/library/texttospeech.googleapis.com
Voicegoogle_voice
Specify voice. Voices:https://cloud.google.com/text-to-speech/docs/voices
Languagecodegoogle_api_key
Language code. Language codes:https://cloud.google.com/speech-to-text/docs/speech-to-text-supported-languages
Eleven Labs Text-To-Speech
ElevenLabsAPIKeyeleven_labs_api_key
You can obtain your own API key at:https://elevenlabs.io/speech-synthesis
VoiceIDeleven_labs_voice
Voice ID. Voices:https://elevenlabs.io/voice-library
Modeleleven_labs_model
Specify model. Models:https://elevenlabs.io/docs/speech-synthesis/models
If speech synthesis is enabled, a voice will be additionally generated in the background while generating a response via model.
BothOpenAITTS andOpenAIWhisper use the same single API key provided for the OpenAI API, with no additional keys required.
Autonomous Agent (inline)
Warning
Please use autonomous mode with caution! - this mode, when connected with other plugins, may produce unexpected results!
The plugin activates autonomous mode in standard chat modes, where AI begins a conversation with itself.You can set this loop to run for any number of iterations. Throughout this sequence, the model will engagein self-dialogue, answering his own questions and comments, in order to find the best possible solution, subjecting previously generated steps to criticism.
This mode is similar toAuto-GPT - it can be used to create more advanced inferences and to solve problems by breaking them down into subtasks that the model will autonomously perform one after another until the goal is achieved. The plugin is capable of working in cooperation with other plugins, thus it can utilize tools such as web search, access to the file system, or image generation usingDALL-E.
Options
You can adjust the number of iterations for the self-conversation in thePlugins/Settings... menu under the following option:
Iterationsiterations
Default:3
Warning
Setting this option to0 activates aninfinity loop which can generate a large number of requests and cause very high token consumption, so use this option with caution!
Promptsprompts
Editable list of prompts used to instruct how to handle autonomous mode, you can create as many prompts as you want.First active prompt on list will be used to handle autonomous mode.
Auto-stopaftergoalisreachedauto_stop
If enabled, plugin will stop after goal is reached.Default:True
Reverserolesbetweeniterationsreverse_roles
Only for Completion mode.If enabled, this option reverses the roles (AI <> user) with each iteration. For example,if in the previous iteration the response was generated for “Batman,” the next iteration will use thatresponse to generate an input for “Joker.”Default:True
Bitbucket
The Bitbucket plugin allows for seamless integration with the Bitbucket Cloud API, offering functionalities to manage repositories, issues, and pull requests. This plugin provides highly configurable options for authentication, cached convenience, and manages HTTP requests efficiently.
Retrieve details about the authenticated user.
Get information about a specific user.
List available workspaces.
List repositories in a workspace.
Get details about a specific repository.
Create a new repository.
Delete an existing repository.
Retrieve contents of a file in a repository.
Upload a file to a repository.
Delete a file from a repository.
List issues in a repository.
Create a new issue.
Comment on an existing issue.
Update details of an issue.
List pull requests in a repository.
Create a new pull request.
Merge an existing pull request.
Search for repositories.
Options
APIbaseapi_baseDefine the base URL for the Bitbucket Cloud API.Default:https://api.bitbucket.org/2.0
HTTPtimeout(s)http_timeoutSet the timeout for HTTP requests in seconds.Default:30
Auth options
Authmodeauth_modeSelect the authentication mode.Default:auto
Available modes:* auto* basic* bearer
Usernamebb_usernameProvide your Bitbucket username (handle, not email).
AppPasswordbb_app_passwordSpecify your Bitbucket App Password (Basic). This option is secret.
Bearertokenbb_access_tokenEnter the OAuth access token (Bearer). This option is secret.
Cached convenience
(auto)UserUUIDuser_uuidCached after using thebb_me command.
(auto)UsernameusernameCached after using thebb_me command.
Commands
Auth Options
bb_auth_set_modeSet the authentication mode: auto|basic|bearer.
bb_set_app_passwordSet App Password credentials including username and app password.
bb_set_bearerSet the Bearer authentication token.
bb_auth_checkRun diagnostics to show authentication results for/user.
User Management
bb_meRetrieve details for the authenticated user.
bb_user_getFetch user information by username.
bb_workspaces_listList all accessible workspaces.
Repositories Management
bb_repos_listDisplay a list of repositories.
bb_repo_getFetch details of a specific repository.
bb_repo_createCreate a new repository in a specified workspace.
bb_repo_deleteDelete a repository (requires confirmation).
Contents Management
bb_contents_getRetrieve file or directory contents from a repository.
bb_file_putCreate or update a file in a repository.
bb_file_deleteDelete specified files within a repository.
Issues Management
bb_issues_listList issues in a repository.
bb_issue_createCreate a new issue within a repository.
bb_issue_commentAdd a comment to an existing issue.
bb_issue_updateUpdate details of an existing issue.
Pull Requests Management
bb_prs_listDisplay a list of pull requests.
bb_pr_createCreate a new pull request.
bb_pr_mergeMerge an existing pull request.
Search Functionality
bb_search_reposSearch repositories using Bitbucket Query Language (BBQL).
Chat with files (LlamaIndex, inline)
Plugin integratesLlamaIndex storage in any chat and provides additional knowledge into context.
Options
AskLlamaIndexfirstask_llama_first
When enabled, thenLlamaIndex will be asked first, and response will be used as additional knowledge in prompt. When disabled, thenLlamaIndex will be asked only when needed.INFO: Disabled in autonomous mode (via plugin)!Default:False
Auto-preparequestionbeforeaskingLlamaIndexfirstprepare_question
When enabled, then question will be prepared before asking LlamaIndex first to create best query.
Modelforquestionpreparationmodel_prepare_question
Model used to prepare question before asking LlamaIndex.Default:gpt-3.5-turbo
Maxoutputtokensforquestionpreparationprepare_question_max_tokens
Max tokens in output when preparing question before asking LlamaIndex.Default:500
Promptforquestionpreparationsyntax_prepare_question
System prompt for question preparation.
Maxcharactersinquestionmax_question_chars
Max characters in question when querying LlamaIndex, 0 = no limit, default:1000
Appendmetadatatocontextappend_meta
If enabled, then metadata from LlamaIndex will be appended to additional context.Default:False
Modelmodel_query
Model used for queryingLlamaIndex.Default:gpt-3.5-turbo
Indexnameidx
Indexes to use. If you want to use multiple indexes at once then separate them by comma.Default:base
Code Interpreter
Executing Code
From version2.4.13 with built-inIPython.
The plugin operates similarly to theCodeInterpreter inChatGPT, with the key difference that it works locally on the user’s system. It allows for the execution of any Python code on the computer that the model may generate. When combined with theFilesI/O plugin, it facilitates running code from files saved in thedata directory. You can also prepare your own code files and enable the model to use them or add your own plugin for this purpose. You can execute commands and code on the host machine or in Docker container.
IPython: Starting from version2.4.13, it is highly recommended to adopt the new option:IPython, which offers significant improvements over previous workflows. IPython provides a robust environment for executing code within a kernel, allowing you to maintain the state of your session by preserving the results of previous commands. This feature is particularly useful for iterative development and data analysis, as it enables you to build upon prior computations without starting from scratch. Moreover, IPython supports the use of magic commands, such as!pipinstall<package_name>, which facilitate the installation of new packages directly within the session. This capability streamlines the process of managing dependencies and enhances the flexibility of your development environment. Overall, IPython offers a more efficient and user-friendly experience for executing and managing code.
To use IPython in sandbox mode, Docker must be installed on your system.
You can find the installation instructions here:https://docs.docker.com/engine/install/
Connecting IPython in Docker in Snap version:
To use IPython in the Snap version, you must connect PyGPT to the Docker daemon:
$sudosnapconnectpygpt:docker-executablesdocker:docker-executables$sudosnapconnectpygpt:dockerdocker:docker-daemonCode interpreter: a real-time Python code interpreter is built-in. Click the<> icon to open the interpreter window. Both the input and output of the interpreter are connected to the plugin. Any output generated by the executed code will be displayed in the interpreter. Additionally, you can request the model to retrieve contents from the interpreter window output.

Important
Executing Python code using IPython in compiled versions requires an enabled sandbox (Docker container). You can connect the Docker container viaPlugins->Settings.
Tip
always remember to enable the+Tools option to allow execute commands from the plugins.
Options:
General
ConnecttothePythoncodeinterpreterwindowattach_output
Automatically attach code input/output to the Python code interpreter window.Default:True
Tool:get_python_outputcmd.get_python_output
Allowsget_python_output command execution. If enabled, it allows retrieval of the output from the Python code interpreter window.Default:True
Tool:get_python_inputcmd.get_python_input
Allowsget_python_input command execution. If enabled, it allows retrieval all input code (from edit section) from the Python code interpreter window.Default:True
Tool:clear_python_outputcmd.clear_python_output
Allowsclear_python_output command execution. If enabled, it allows clear the output of the Python code interpreter window.Default:True
IPython
Sandbox(dockercontainer)sandbox_ipython
Executes IPython in sandbox (docker container). Docker must be installed and running.
Dockerfileipython_dockerfile
You can customize the Dockerfile for the image used by IPython by editing the configuration above and rebuilding the image via Tools -> Rebuild IPython Docker Image.
SessionKeyipython_session_key
It must match the key provided in the Dockerfile.
Dockerimagenameipython_image_name
Custom Docker image name
Dockercontainernameipython_container_name
Custom Docker container name
Connectionaddressipython_conn_addr
Default: 127.0.0.1
Port:shellipython_port_shell
Default: 5555
Port:iopubipython_port_iopub
Default: 5556
Port:stdinipython_port_stdin
Default: 5557
Port:controlipython_port_control
Default: 5558
Port:hbipython_port_hb
Default: 5559
Tool:ipython_executecmd.ipython_execute
Allows Python code execution in IPython interpreter (in current kernel).Default:True
Tool:python_kernel_restartcmd.ipython_kernel_restart
Allows to restart IPython kernel.Default:True
Python (legacy)
Sandbox(dockercontainer)sandbox_docker
Executes commands in sandbox (docker container). Docker must be installed and running.
Pythoncommandtemplatepython_cmd_tpl
Python command template (use {filename} as path to file placeholder).Default:python3{filename}
Dockerfiledockerfile
You can customize the Dockerfile for the image used by legacy Python by editing the configuration above and rebuilding the image via Tools -> Rebuild Python (Legacy) Docker Image.
Dockerimagenameimage_name
Custom Docker image name
Dockercontainernamecontainer_name
Custom Docker container name
Tool:code_executecmd.code_execute
Allowscode_execute command execution. If enabled, provides Python code execution (generate and execute from file).Default:True
Tool:code_execute_allcmd.code_execute_all
Allowscode_execute_all command execution. If enabled, provides execution of all the Python code in interpreter window.Default:True
Tool:code_execute_filecmd.code_execute_file
Allowscode_execute_file command execution. If enabled, provides Python code execution from existing .py file.Default:True
HTML Canvas
Tool:render_html_outputcmd.render_html_output
Allowsrender_html_output command execution. If enabled, it allows to render HTML/JS code in built-it HTML/JS browser (HTML Canvas).Default:True
Tool:get_html_outputcmd.get_html_output
Allowsget_html_output command execution. If enabled, it allows retrieval current output from HTML Canvas.Default:True
Sandbox(dockercontainer)sandbox_docker
Execute commands in sandbox (docker container). Docker must be installed and running.Default:False
Dockerimagesandbox_docker_image
Docker image to use for sandboxDefault:python:3.8-alpine
Context history (calendar, inline)
Provides access to context history database.Plugin also provides access to reading and creating day notes.
Examples of use, you can ask e.g. for the following:
Give me today day note
Save a new note for today
Update my today note with…
Get the list of yesterday conversations
Get contents of conversation ID 123
etc.
You can also use@ ID tags to automatically use summary of previous contexts in current discussion.To use context from previous discussion with specified ID use following syntax in your query:
@123Where123 is the ID of previous context (conversation) in database, example of use:
Let's talk about discussion @123Options
Enable:usingcontext@IDtagsuse_tags
When enabled, it allows to automatically retrieve context history using @ tags, e.g. use @123 in question to use summary of context with ID 123 as additional context.Default:False
Tool:getdaterangecontextlistcmd.get_ctx_list_in_date_range
Allowsget_ctx_list_in_date_range command execution. If enabled, it allows getting the list of context history (previous conversations).Default:True
Tool:getcontextcontentbyIDcmd.get_ctx_content_by_id
Allowsget_ctx_content_by_id command execution. If enabled, it allows getting summarized content of context with defined ID.Default:True
Tool:countcontextsindaterangecmd.count_ctx_in_date
Allowscount_ctx_in_date command execution. If enabled, it allows counting contexts in date range.Default:True
Tool:getdaynotecmd.get_day_note
Allowsget_day_note command execution. If enabled, it allows retrieving day note for specific date.Default:True
Tool:adddaynotecmd.add_day_note
Allowsadd_day_note command execution. If enabled, it allows adding day note for specific date.Default:True
Tool:updatedaynotecmd.update_day_note
Allowsupdate_day_note command execution. If enabled, it allows updating day note for specific date.Default:True
Tool:removedaynotecmd.remove_day_note
Allowsremove_day_note command execution. If enabled, it allows removing day note for specific date.Default:True
Modelmodel_summarize
Model used for summarize.Default:gpt-3.5-turbo
Maxsummarytokenssummary_max_tokens
Max tokens in output when generating summary.Default:1500
Maxcontextstoretrievectx_items_limit
Max items in context history list to retrieve in one query. 0 = no limit.Default:30
Per-contextitemscontentchunksizechunk_size
Per-context content chunk size (max characters per chunk).Default:100000 chars
Options (advanced)
Prompt:@tags(system)prompt_tag_system
Prompt for use @ tag (system).
Prompt:@tags(summary)prompt_tag_summary
Prompt for use @ tag (summary).
Crontab / Task scheduler
Plugin provides cron-based job scheduling - you can schedule tasks/prompts to be sent at any time using cron-based syntax for task setup.

Options
Yourtaskscrontab
Add your cron-style tasks here.They will be executed automatically at the times you specify in the cron-based job format.If you are unfamiliar with Cron, consider visiting the Cron Guru page for assistance:https://crontab.guru
Number of active tasks is always displayed in a tray dropdown menu:

Createanewcontextonjobrunnew_ctx
If enabled, then a new context will be created on every run of the job.”Default:True
Shownotificationonjobrunshow_notify
If enabled, then a tray notification will be shown on every run of the job.Default:True
Custom Commands
With theCustomCommands plugin, you can integratePyGPT with your operating system and scripts or applications. You can define an unlimited number of custom commands and instruct model on when and how to execute them. Configuration is straightforward, andPyGPT includes a simple tutorial command for testing and learning how it works:

To add a new custom command, click theADD button and then:
Provide a name for your command: this is a unique identifier for model.
Provide an
instructionexplaining what this command does; model will know when to use the command based on this instruction.Define
params, separated by commas - model will send data to your commands using these params. These params will be placed into placeholders you have defined in thecmdfield. For example:
If you want instruct model to execute your Python script namedsmart_home_lights.py with an argument, such as1 to turn the light ON, and0 to turn it OFF, define it as follows:
name: lights_cmd
instruction: turn lights on/off; use 1 as ‘arg’ to turn ON, or 0 as ‘arg’ to turn OFF
params: arg
cmd:
python/path/to/smart_home_lights.py{arg}
The setup defined above will work as follows:
When you ask model to turn your lights ON, model will locate this command and prepare the commandpython/path/to/smart_home_lights.py{arg} with{arg} replaced with1. On your system, it will execute the command:
python /path/to/smart_home_lights.py 1And that’s all. Model will take care of the rest when you ask to turn ON the lights.
You can define as many placeholders and parameters as you desire.
Here are some predefined system placeholders for use:
{_time}- current time inH:M:Sformat{_date}- current date inY-m-dformat{_datetime}- current date and time inY-m-dH:M:Sformat{_file}- path to the file from which the command is invoked{_home}- path to PyGPT’s home/working directory
You can connect predefined placeholders with your own params.
Example:
name: song_cmd
instruction: store the generated song on hard disk
params: song_text, title
cmd:
echo"{song_text}">{_home}/{title}.txt
With the setup above, every time you ask model to generate a song for you and save it to the disk, it will:
Generate a song.
Locate your command.
Execute the command by sending the song’s title and text.
The command will save the song text into a file named with the song’s title in thePyGPT working directory.
Example tutorial command
PyGPT provides simple tutorial command to show how it work, to run it just ask model for executetutorialtestcommand and it will show you how it works:
> please execute tutorial test command
Experts (inline)
The plugin allows calling experts in any chat mode. This is the inline Experts (co-op) mode.
See theWorkmodes->Experts section for more details.
Facebook
The plugin integrates with Facebook’s Graph API to enable various actions such as managing pages, posts, and media uploads. It uses OAuth2 for authentication and supports automatic token exchange processes.
Retrieving basic information about the authenticated user.
Listing all Facebook pages the user has access to.
Setting a specified Facebook page as the default.
Retrieving a list of posts from a Facebook page.
Creating a new post on a Facebook page.
Deleting a post from a Facebook page.
Uploading a photo to a Facebook page.
Options
GraphAPIVersiongraph_version
Specify the API version.Default:v21.0
APIBaseapi_base
Base address for the Graph API. The version will be appended automatically.
AuthorizeBaseauthorize_base
Base address for OAuth authorization. The version will be appended automatically.
HTTPTimeout(s)http_timeout
Set the timeout for HTTP requests in seconds.Default:30
OAuth2 (PKCE) Settings
AppID(client_id)oauth2_client_id
Provide your Facebook App ID.
AppSecret(optional)oauth2_client_secret
Required for long-lived token exchange unless using PKCE.Secret
ConfidentialClientoauth2_confidential
Useclient_secret on exchange instead ofcode_verifier.
RedirectURIoauth2_redirect_uri
Matches one of the valid OAuth Redirect URIs in your Meta App.
Scopesoauth2_scopes
Space-separated authorized permissions.
UserAccessTokenoauth2_access_token
Stores user access token.Secret
Cache
UserIDuser_id
Cached after callingfb_me or OAuth exchange.
UserNameuser_name
Cached after callingfb_me or OAuth exchange.
DefaultPageIDfb_page_id
Selected viafb_page_set_default.
DefaultPageNamefb_page_name
Selected viafb_page_set_default.
DefaultPageAccessTokenfb_page_access_token
Cached withfb_page_set_default or on demand.Secret
OAuth UX Options
Auto-startOAuthoauth_auto_begin
Automatically begin PKCE flow when commands need a user token.
OpenBrowserAutomaticallyoauth_open_browser
Open authorization URL in the default web browser.
UseLocalServerforOAuthoauth_local_server
Start a local HTTP server to capture redirect.
OAuthLocalTimeout(s)oauth_local_timeout
Duration to wait for a redirect with code.Default:180
SuccessHTMLoauth_success_html
HTML displayed on successful local callback.
FailHTMLoauth_fail_html
HTML displayed on callback error.
OAuthLocalPortoauth_local_port
Set the local HTTP port; should be above 1024 and allowed in the app.Default:8732
AllowFallbackPortoauth_allow_port_fallback
Choose a free local port if the preferred port is busy or forbidden.
Commands
Auth:BeginOAuth2fb_oauth_begin
Starts OAuth2 (PKCE) flow and returns the authorization URL.
Auth:ExchangeCodefb_oauth_exchange
Trades authorization code for a user access token.
Auth:ExtendUserTokenfb_token_extend
Exchanges a short-lived token for a long-lived token; requires app secret.
Users:Mefb_me
Retrieves the authorized user’s profile.
Pages:Listfb_pages_list
Lists pages the user manages with details like ID, name, and access token.
Pages:SetDefaultfb_page_set_default
Caches name and access token for a default page.
Posts:Listfb_page_posts
Retrieves the page’s feed (posts).
Posts:Createfb_page_post_create
Publishes a post with optional text, links, and photos.
Posts:Deletefb_page_post_delete
Removes a specified page post.
Media:UploadPhotofb_page_photo_upload
Uploads a photo to a page from a local path or URL.
Files I/O
The plugin allows for file management within the local filesystem. It enables the model to create, read, write and query files located in thedata directory, which can be found in the user’s work directory. With this plugin, the AI can also generate Python code files and thereafter execute that code within the user’s system.
Plugin capabilities include:
Sending files as attachments
Reading files
Appending to files
Writing files
Deleting files and directories
Listing files and directories
Creating directories
Downloading files
Copying files and directories
Moving (renaming) files and directories
Reading file info
Indexing files and directories using LlamaIndex
Querying files using LlamaIndex
Searching for files and directories
If a file being created (with the same name) already exists, a prefix including the date and time is added to the file name.
Options:
General
Tool:send(upload)fileasattachmentcmd.send_file
Allowssend_file command execution.Default:True
Tool:readfilecmd.read_file
Allowsread_file command execution.Default:True
Tool:appendtofilecmd.append_file
Allowsappend_file command execution. Text-based files only (plain text, JSON, CSV, etc.)Default:True
Tool:savefilecmd.save_file
Allowssave_file command execution. Text-based files only (plain text, JSON, CSV, etc.)Default:True
Tool:deletefilecmd.delete_file
Allowsdelete_file command execution.Default:True
Tool:listfiles(ls)cmd.list_files
Allowslist_dir command execution.Default:True
Tool:listfilesindirsindirectory(ls)cmd.list_dir
Allowsmkdir command execution.Default:True
Tool:downloadingfilescmd.download_file
Allowsdownload_file command execution.Default:True
Tool:removingdirectoriescmd.rmdir
Allowsrmdir command execution.Default:True
Tool:copyingfilescmd.copy_file
Allowscopy_file command execution.Default:True
Tool:copyingdirectories(recursive)cmd.copy_dir
Allowscopy_dir command execution.Default:True
Tool:movefilesanddirectories(rename)cmd.move
Allowsmove command execution.Default:True
Tool:checkifpathisdirectorycmd.is_dir
Allowsis_dir command execution.Default:True
Tool:checkifpathisfilecmd.is_file
Allowsis_file command execution.Default:True
Tool:checkiffileordirectoryexistscmd.file_exists
Allowsfile_exists command execution.Default:True
Tool:getfilesizecmd.file_size
Allowsfile_size command execution.Default:True
Tool:getfileinfocmd.file_info
Allowsfile_info command execution.Default:True
Tool:findfileordirectorycmd.find
Allowsfind command execution.Default:True
Tool:getcurrentworkingdirectorycmd.cwd
Allowscwd command execution.Default:True
Usedataloadersuse_loaders
Use data loaders from LlamaIndex for file reading (read_file command).Default:True
Indexing
Tool:quickquerythefilewithLlamaIndexcmd.query_file
Allowsquery_file command execution (in-memory index). If enabled, model will be able to quick index file into memory and query it for data (in-memory index)Default:True
Modelforqueryin-memoryindexmodel_tmp_query
Model used for query temporary index forquery_file command (in-memory index).Default:gpt-3.5-turbo
Tool:indexingfilestopersistentindexcmd.file_index
Allowsfile_index command execution. If enabled, model will be able to index file or directory using LlamaIndex (persistent index).Default:True
Indextousewhenindexingfilesidx
ID of index to use for indexing files (persistent index).Default:base
Autoindexreadingfilesauto_index
If enabled, every time file is read, it will be automatically indexed (persistent index).Default:False
Onlyindexreadingfilesonly_index
If enabled, file will be indexed without return its content on file read (persistent index).Default:False
GitHub
The plugin provides seamless integration with GitHub, allowing various operations such as repository management, issue tracking, pull requests, and more through GitHub’s API. This plugin requires authentication, which can be configured using a Personal Access Token (PAT) or OAuth Device Flow.
Retrieve details about your GitHub profile.
Get information about a specific GitHub user.
List repositories for a user or organization.
Retrieve details about a specific repository.
Create a new repository.
Delete an existing repository.
Retrieve the contents of a file in a repository.
Upload or update a file in a repository.
Delete a file from a repository.
List issues in a repository.
Create a new issue in a repository.
Add a comment to an existing issue.
Close an existing issue.
List pull requests in a repository.
Create a new pull request.
Merge an existing pull request.
Search for repositories based on a query.
Search for issues based on a query.
Search for code based on a query.
Options
APIbaseapi_baseConfigure the base URL for GitHub’s API.Default:https://api.github.com
Webbaseweb_baseSet the GitHub website base URL.Default:https://github.com
APIversionheaderapi_versionSpecify the API version for requests.Default:2022-11-28
HTTPtimeout(s)http_timeoutDefine timeout for API requests in seconds.Default:30
OAuth Device Flow
OAuthClientIDoauth_client_idSet the Client ID from your GitHub OAuth App. Supports Device Flow.Secret
Scopesoauth_scopesList the space-separated OAuth scopes.Default:repo read:org read:user user:email
Openbrowserautomaticallyoauth_open_browserAutomatically open the verification URL in the default browser.Default:True
Auto-startauthwhenrequiredoauth_auto_beginStart Device Flow automatically when a command requires a token.Default:True
Tokens
(auto)OAuthaccesstokengh_access_tokenStore OAuth access token for Device/Web.Secret
PATtoken(optional)pat_tokenProvide a Personal Access Token (classic or fine-grained) for authentication.Secret
Authschemeauth_schemeChoose the authentication scheme:Bearer orToken (useToken for PAT).
Cache
(auto)UserIDuser_idCache User ID aftergh_me or authentication.
(auto)UsernameusernameCache username aftergh_me or authentication.
Commands
Auth
gh_device_begin- Begin OAuth Device Flow.gh_device_poll- Poll for access token using device code.gh_set_pat- Set Personal Access Token.
Users
gh_me- Get authenticated user details.gh_user_get- Retrieve user information by username.
Repositories
gh_repos_list- List all repositories.gh_repo_get- Get details for a specific repository.gh_repo_create- Create a new repository.gh_repo_delete- Delete an existing repository. (Disabled by default)
Contents
gh_contents_get- Get file or directory contents.gh_file_put- Create or update a file via Contents API.gh_file_delete- Delete a file via Contents API.
Issues
gh_issues_list- List issues in a repository.gh_issue_create- Create a new issue.gh_issue_comment- Comment on an issue.gh_issue_close- Close an existing issue.
Pull Requests
gh_pulls_list- List all pull requests.gh_pull_create- Create a new pull request.gh_pull_merge- Merge an existing pull request.
Search
gh_search_repos- Search for repositories.gh_search_issues- Search for issues and pull requests.gh_search_code- Search for code across repositories.
Google (Gmail, Drive, Calendar, Contacts, YT, Keep, Docs, Maps, Colab)
The plugin integrates with various Google services, enabling features such as email management, calendar events, contact handling, and document manipulation through Google APIs.
Gmail
Listing recent emails from Gmail.
Listing all emails from Gmail.
Searching emails in Gmail.
Retrieving email details by ID in Gmail.
Sending an email via Gmail.
Google Calendar
Listing recent calendar events.
Listing today’s calendar events.
Listing tomorrow’s calendar events.
Listing all calendar events.
Retrieving calendar events by a specific date.
Adding a new event to the calendar.
Deleting an event from the calendar.
Google Keep
Listing notes from Google Keep.
Adding a new note to Google Keep.
Google Drive
Listing files from Google Drive.
Finding a file in Google Drive by its path.
Downloading a file from Google Drive.
Uploading a file to Google Drive.
YouTube
Retrieving information about a YouTube video.
Retrieving the transcript of a YouTube video.
Google Contacts
Listing contacts from Google Contacts.
Adding a new contact to Google Contacts.
Google Docs
Creating a new document.
Retrieving a document.
Listing documents.
Appending text to a document.
Replacing text in a document.
Inserting a heading in a document.
Exporting a document.
Copying from a template.
Google Maps
Geocoding an address.
Reverse geocoding coordinates.
Getting directions between locations.
Using the distance matrix.
Text search for places.
Finding nearby places.
Generating static map images.
Google Colab
Listing notebooks.
Creating a new notebook.
Adding a code cell.
Adding a markdown cell.
Getting a link to a notebook.
Renaming a notebook.
Duplicating a notebook.
Options
Googlecredentials.json(content)credentialsPaste the JSON content of your OAuth client or Service Account. This is mandatory for the plugin to access your Google services.Secret: Yes
OAuthtokenstore(auto)oauth_tokenAutomatically stores and updates the refresh token necessary for Google service access.Secret: Yes
UselocalserverforOAuthoauth_local_serverRun a local server for the installed app OAuth flow to simplify the authentication process.Default:True
OAuthlocalport(0=random)oauth_local_portSpecify the port forInstalledAppFlow.run_local_server. A value of0 lets the system choose a random available port.Default:0
Scopesoauth_scopesDefine space-separated OAuth scopes for services like Gmail, Calendar, Drive, Contacts, YouTube, Docs, and Keep. Extend scopes to include Keep services if needed.
Impersonateuser(WorkspaceDWD)impersonate_userOptionally provide a subject for service account domain-wide delegation.
YouTubeAPIKey(optional)youtube_api_keyIf provided, allows fetching public video information without needing OAuth tokens.Secret: Yes
AllowunofficialYouTubetranscriptallow_unofficial_youtube_transcriptEnables the use ofyoutube-transcript-api for transcripts when official captions are unavailable.Default:False
Keepmodekeep_modeDetermines the mode for accessing Keep:official,unofficial, orauto.Default:auto
AllowunofficialKeepallow_unofficial_keepUsegkeepapi as a fallback for Keep services, requiringkeep_username andkeep_master_token.Default:True
Keepusername(unofficial)keep_usernameSet the email used forgkeepapi.
Keepmastertoken(unofficial)keep_master_tokenProvide the master token forgkeepapi usage, ensuring secure handling.Secret: Yes
GoogleMapsAPIKeygoogle_maps_api_keyNecessary for accessing Google Maps features like Geocoding, Directions, and Distance Matrix.Secret: Yes
MapsAPIKey(alias)maps_api_keyAlias forgoogle_maps_api_key for backward compatibility.Secret: Yes
Commands
Gmail
gmail_list_recent- List n newest Gmail messages.gmail_list_all- List all Gmail messages (paginated).gmail_search- Search Gmail.gmail_get_by_id- Get Gmail message by ID.gmail_send- Send Gmail message.
Calendar
calendar_events_recent- Upcoming events (from now).calendar_events_today- Events for today (UTC day bounds).calendar_events_tomorrow- Events for tomorrow (UTC day bounds).calendar_events_all- All events in range.calendar_events_by_date- Events for date or date range.calendar_add_event- Add calendar event.calendar_delete_event- Delete event by ID.
Keep
keep_list_notes- List notes (Keep).keep_add_note- Add note (Keep).
Drive
drive_list_files- List Drive files.drive_find_by_path- Find Drive file by path.drive_download_file- Download Drive file.drive_upload_file- Upload local file to Drive.
YouTube
youtube_video_info- Get YouTube video info.youtube_transcript- Get YouTube transcript.
Contacts
contacts_list- List contacts.contacts_add- Add new contact.
Google Docs
docs_create- Create Google Doc.docs_get- Get Google Doc (structure + plain text).docs_list- List Google Docs.docs_append_text- Append text to Google Doc.docs_replace_text- Replace all text occurrences in Google Doc.docs_insert_heading- Insert heading at end of Google Doc.docs_export- Export Google Doc to file.docs_copy_from_template- Make a copy of template Google Doc.
Google Maps
maps_geocode- Geocode an address.maps_reverse_geocode- Reverse geocode coordinates.maps_directions- Get directions between origin and destination.maps_distance_matrix- Distance Matrix for origins and destinations.maps_places_textsearch- Places Text Search.maps_places_nearby- Nearby Places.maps_static_map- Generate Static Map image.
Google Colab
colab_list_notebooks- List Colab notebooks on Drive.colab_create_notebook- Create new Colab notebook.colab_add_code_cell- Add code cell to notebook.colab_add_markdown_cell- Add markdown cell to notebook.colab_get_link- Get Colab edit link.colab_rename- Rename notebook.colab_duplicate- Duplicate notebook.
Image Generation (inline)
The plugin integratesDALL-E3 image generation with any chat mode. Simply enable it and request an image in Chat mode, using a standard model such asGPT-4. The plugin does not require the+Tools option to be enabled.
Options
Promptprompt
The prompt is used to generate a query for theDALL-E image generation model, which runs in the background.
Mailer
Enables the sending, receiving, and reading of emails from the inbox. Currently, only SMTP is supported. More options coming soon.
Options
From(email)from_email
From (email), e.g.me@domain.com
Tool:send_mailcmd.send_mail
Allowssend_mail command execution. If enabled, model will be able to sending emails.
Tool:receive_emailscmd.receive_emails
Allowsreceive_emails command execution. If enabled, model will be able to receive emails from the server.
Tool:get_email_bodycmd.get_email_body
Allowsget_email_body command execution. If enabled, model will be able to receive message body from the server.
SMTPHostsmtp_host
SMTP Host, e.g. smtp.domain.com
SMTPPort(Inbox)smtp_port_inbox
SMTP Port, default: 995
SMTPPort(Outbox)smtp_port_outbox
SMTP Port, default: 465
SMTPUsersmtp_user
SMTP User, e.g.user@domain.com
SMTPPasswordsmtp_password
SMTP Password.
MCP
With theMCP plugin, you can connectPyGPT to remote tools exposed by Model Context Protocol servers (stdio, Streamable HTTP, or SSE). The plugin discovers available tools on your configured servers and publishes them to the model as callable commands with proper parameter schemas. You can whitelist/blacklist tools per server and optionally cache discovery results for speed.

How it works
You define one or more MCP servers in the plugin settings.
For every active server, the plugin discovers its tools and exposes them to the model as commands.
Each exposed command name is derived from the server label and tool name in the form
label__tool.- Names are sanitized to allowed characters[a-zA-Z0-9_-]and kept under 64 characters. The plugin truncates and adds a short hash if needed to ensure uniqueness.If
allowed_commandsis set, only those tools are exposed (whitelist).If
disabled_commandsis set, those tools are hidden (blacklist).Discovery results can be cached (TTL) so you don’t re-fetch the list on every prompt.
When the model chooses a command, the plugin opens a session to the appropriate server and calls the tool with typed arguments mapped from JSON Schema.
Adding a new MCP server
Click theADD button and fill in:
label- A short, human-friendly server name used in tool names (
label__tool).- It should be unique across servers. Only[a-zA-Z0-9_-]are used; other characters are replaced automatically.server_address- Transport is detected from the address:
stdio:-
stdio:uvrunserverfastmcp_quickstartstdio-stdio:python/path/to/your_mcp_server.py--stdioStreamable HTTP:-
http://localhost:8000/mcp-https://your-host.tld/mcpSSE:-
http://localhost:8000/sse-sse://your-host.tld/sseorsse+https://your-host.tld/sse
authorization (optional)- Value for the
Authorizationheader on HTTP/SSE (e.g.,BearerYOUR_TOKEN).- Not used for stdio.allowed_commands (optional)- Comma-separated list of tool names to expose from this server (whitelist).- Match the exact tool names reported by the MCP server (not titles).
disabled_commands (optional)- Comma-separated list of tool names to hide from this server (blacklist).
active- Enable/disable this server.
After saving, open any chat. During the command syntax build step, the plugin discovers tools on all active servers and publishes them to the model.
Example: quickstart via stdio
label:
quickstartserver_address:
stdio:uvrunserverfastmcp_quickstartstdioallowed_commands: (leave empty)
disabled_commands: (leave empty)
active:
ON
Discovered commands might look like:
[{"cmd":"quickstart__echo","instruction":"Echo a message back (server: quickstart)","params":[{"name":"message","type":"str","description":"[required]"}],"enabled":true}]
Example: remote docs server (HTTP/SSE)
label:
deepwikiserver_address:
https://example.com/mcp(or SSE:https://example.com/sse)authorization:
BearerYOUR_TOKEN(if required)allowed_commands:
read_wiki_structure,read_wiki_contents,ask_questionactive:
ON
The model will see commands like:
[{"cmd":"deepwiki__read_wiki_structure","instruction":"Get a list of documentation topics for a GitHub repository (server: deepwiki)","params":[{"name":"repoName","type":"str","description":"GitHub repository: owner/repo (e.g. \"facebook/react\") [required]"}],"enabled":true},{"cmd":"deepwiki__read_wiki_contents","instruction":"View documentation about a GitHub repository (server: deepwiki)","params":[{"name":"repoName","type":"str","description":"GitHub repository: owner/repo (e.g. \"facebook/react\") [required]"}],"enabled":true},{"cmd":"deepwiki__ask_question","instruction":"Ask any question about a GitHub repository (server: deepwiki)","params":[{"name":"repoName","type":"str","description":"GitHub repository: owner/repo (e.g. \"facebook/react\") [required]"},{"name":"question","type":"str","description":"The question to ask about the repository [required]"}],"enabled":true}]
Caching (Tools Cache)
Enable “Cache tools list” to avoid discovering tools on every prompt.
TTL defines how long (in seconds) the cache stays valid per server (default: 300).
The plugin automatically invalidates the cache if you change server configuration (label, address, authorization, allow/deny lists).
To force refresh immediately, toggle a server off/on or modify any of its fields and save.
Transports
stdio: best for local processes started by PyGPT; no network involved.
Streamable HTTP: recommended for production; uses a duplex HTTP stream.
SSE: fully supported; useful for servers exposing an SSE endpoint.
The plugin detects the transport from
server_addressautomatically.
Security notes
authorizationis sent as theAuthorizationheader to HTTP/SSE servers; put the exact value you need (e.g.,Bearer<token>).Only connect to servers you trust. Tools can perform actions as implemented by the server.
Keep labels short and non-sensitive (labels are visible in tool names and logs).
Mouse And Keyboard
Introduced in version:2.4.4 (2024-11-09)
Warning
Use this plugin with caution - allowing all options gives the model full control over the mouse and keyboard
The plugin allows for controlling the mouse and keyboard by the model. With this plugin, you can send a task to the model, e.g., “open notepad, type something in it” or “open web browser, do search, find something.”
Plugin capabilities include:
Get mouse cursor position
Control mouse cursor position
Control mouse clicks
Control mouse scroll
Control the keyboard (pressing keys, typing text)
Making screenshots
The+Tools option must be enabled to use this plugin.
Options:
General
Promptprompt
Prompt used to instruct how to control the mouse and keyboard.
Enable:Allowmousemovementallow_mouse_move
Allows mouse movement.Default:True
Enable:Allowmouseclickallow_mouse_click
Allows mouse click.Default:True
Enable:Allowmousescrollallow_mouse_scroll
Allows mouse scroll.Default:True
Enable:Allowkeyboardkeypressallow_keyboard
Allows keyboard typing.Default:True
Enable:Allowmakingscreenshotsallow_screenshot
Allows making screenshots.Default:True
Tool:mouse_get_poscmd.mouse_get_pos
Allowsmouse_get_pos command execution.Default:True
Tool:mouse_set_poscmd.mouse_set_pos
Allowsmouse_set_pos command execution.Default:True
Tool:make_screenshotcmd.make_screenshot
Allowsmake_screenshot command execution.Default:True
Tool:mouse_clickcmd.mouse_click
Allowsmouse_click command execution.Default:True
Tool:mouse_movecmd.mouse_move
Allowsmouse_move command execution.Default:True
Tool:mouse_scrollcmd.mouse_scroll
Allowsmouse_scroll command execution.Default:True
Tool:keyboard_keycmd.keyboard_key
Allowskeyboard_key command execution.Default:True
Tool:keyboard_typecmd.keyboard_type
Allowskeyboard_type command execution.Default:True
OpenStreetMap
Provides everyday mapping utilities using OpenStreetMap services:
Forward and reverse geocoding via Nominatim
Search with optional near/bbox filters
Routing via OSRM (driving, walking, cycling)
Generate openstreetmap.org URL (center/zoom or bbox; optional marker)
Utility helpers: open an OSM website URL centered on a point; download a single XYZ tile
By default no images are downloaded; commands return URLs. Theosm_tile command saves tiles underdata/openstreetmap/ in the user data directory.
Important notes and usage etiquette
Nominatim requires a proper User-Agent and recommends including a contact email. Set both in the plugin options.
Public endpoints are community/demo services and not intended for heavy production use. If you need higher throughput, host your own services and set custom base URLs in options.
Always provide attribution to OpenStreetMap contributors where required by the data license.
Options
HTTPtimeout(s)http_timeoutUser-Agentuser_agentContactemail(Nominatim)contact_emailAccept-Languageaccept_languageNominatimbasenominatim_baseOSRMbaseosrm_baseTilebasetile_baseDefaultzoommap_zoomDefaultwidthmap_widthUsed only to estimate zoom for bbox (no image rendering).Defaultheightmap_heightUsed only to estimate zoom for bbox (no image rendering).
Tools (Commands)
Tool:osm_geocodeForward geocoding of free-text addresses/places using Nominatim. Supports optional country filtering and near/viewbox bounding. Each result includes
map_url(openstreetmap.org link centered on the result with a marker).Parameters:-
query(str, required)-limit(int, optional)-countrycodes(str, optional, e.g.pl,de)-viewbox(str|list, optional) —minlon,minlat,maxlon,maxlat-bounded(bool, optional)-addressdetails(bool, optional)-polygon_geojson(bool, optional)-near(str, optional) — address orlat,lonto bias results (creates a viewbox)-near_lat(float, optional),near_lon(float, optional),radius_m(int, optional)-zoom(int, optional) — zoom used formap_url(defaults to optionDefaultzoom)-layers(str, optional) — optionallayers=value for OSM site URLsTool:osm_reverseReverse geocoding for a given coordinate. Response includes
map_url(openstreetmap.org link).Parameters:-
lat(float) andlon(float) orpoint(strlat,lon)-zoom(int, optional) — also used formap_urlzoom-addressdetails(bool, optional)-layers(str, optional) — optionallayers=value for OSM site URLsTool:osm_searchAlias convenience wrapper for
osm_geocodewith the same parameters (results also includemap_url).Tool:osm_routePlan a route via OSRM. Accepts addresses or coordinates for start/end and optional waypoints. Always returns
map_urlpointing to the openstreetmap.org Directions page (the route is drawn there). In addition:- mode=url — no OSRM call; returns onlymap_url(Directions) and waypoints,- mode=summary (default) — returns distance/duration (no geometry) +map_url,- mode=full — can include compact geometry (geometry_polyline6) and optionally steps.If
save_mapis true, an additionalpreview_url(regular map view centered/bbox) is returned; it does not replacemap_url.Parameters:-
start(str) orstart_lat/start_lon-end(str) orend_lat/end_lon-waypoints(list, optional)-profile(str, optional) —driving|walking|cycling(defaultdriving)-mode(str, optional) —url|summary|full(defaultsummary)-include_geometry(bool, optional) — include compact geometry (polyline6) infullmode-include_steps(bool, optional) — include step-by-step (fullmode only)-alternatives(int, optional) — 0|1; if >0 treated as true for OSRM alternatives-max_polyline_chars(int, optional) — limit geometry string length (default 5000)-debug_url(bool, optional) — include OSRM request URL in the response-save_map(bool, optional) — build an additionalpreview_url(OSM map centered/bbox)-zoom(int, optional) — zoom forpreview_urlwhen applicable-layers(str, optional) — optionallayers=forpreview_url-width(int, optional),height(int, optional) — used only to estimate bbox zoom-markers(list, optional) — forpreview_urlthe first valid point is used as markerDeprecated/no-op parameters (kept for backward compatibility):
out,color,weight.Tool:osm_staticmapBuild an openstreetmap.org URL (center/zoom or bbox; optional marker). Only the first valid marker is used.
width/heightare used only to estimate zoom when a bbox is provided.Parameters:-
center(str) orlat/lon(optional),zoom(int, optional)-bbox(list[4], optional) —minlon,minlat,maxlon,maxlat-markers(list, optional) — candidates for a single marker; the first valid point is used-marker(bool, optional) — if true and no markers provided, place a marker at center-layers(str, optional) — optionallayers=value-width(int),height(int) — used only to estimate zoom for bboxTool:osm_bbox_mapShortcut to build an openstreetmap.org URL from a bounding box.
Parameters:-
bbox(list[4], required) —minlon,minlat,maxlon,maxlat- optionalmarkers,width,heightTool:osm_show_urlBuild an openstreetmap.org URL centered at a point with a marker.
Parameters:-
point(str) orlat/lon-zoom(int, optional)-layers(str, optional)Tool:osm_route_urlBuild an openstreetmap.org Directions URL for start/end (the route is drawn on the page).
Parameters:-
start(str) /end(str) or coordinate pairs-mode(str, optional) —car|bike|footTool:osm_tileDownload a single XYZ tile (z/x/y.png). Useful for diagnostics or custom composition. The file is saved under
data/openstreetmap/by default.Parameters:-
z(int),x(int),y(int),out(str, optional)
Real Time
This plugin automatically adds the current date and time to each system prompt you send.You have the option to include just the date, just the time, or both.
When enabled, it quietly enhances each system prompt with current time information before sending it to model.
Options
Appendtimehour
If enabled, it appends the current time to the system prompt.Default:True
Appenddatedate
If enabled, it appends the current date to the system prompt.Default:True
Templatetpl
Template to append to the system prompt. The placeholder{time} will be replaced with thecurrent date and time in real-time.Default:Current time is {time}.
Serial port / USB
Provides commands for reading and sending data to USB ports.
Note
In the Snap version you must connect the interface first:https://snapcraft.io/docs/serial-port-interface
You can send commands to, for example, an Arduino or any other controllers using the serial port for communication.

Above is an example of co-operation with the following code uploaded toArduinoUno and connected via USB:
// example.inovoidsetup(){Serial.begin(9600);}voidloop(){if(Serial.available()>0){Stringinput=Serial.readStringUntil('\n');if(input.length()>0){Serial.println("OK, response for: "+input);}}}
Options
USBportserial_port
USB port name, e.g. /dev/ttyUSB0, /dev/ttyACM0, COM3,Default:/dev/ttyUSB0
Connectionspeed(baudrate,bps)serial_bps
Port connection speed, in bps.Default:9600
Timeouttimeout
Timeout in seconds.Default:1
Sleepsleep
Sleep in seconds after connection.Default:2
Tool:SendtextcommandstoUSBportcmd.serial_send
Allowsserial_send command execution”.Default:True
Tool:SendrawbytestoUSBportcmd.serial_send_bytes
Allowsserial_send_bytes command execution.Default:True
Tool:ReaddatafromUSBportcmd.serial_read
Allowsserial_read command execution.Default:True
Server (SSH/FTP)
The Server plugin provides integration for remote server management via SSH, SFTP, and FTP protocols. This plugin allows executing commands, transferring files, and managing directories on remote servers.
The plugin can be configured with various options to customize connectivity and feature access.
Options
Serversservers
Define server configurations with credentials and server details.The model does not access credentials, only names and ports.
enabled- Enable or disable server configuration
name- Name of the server.(visible for the model)
host- Hostname of the server.
login- Login username.
password- Password for the connection (hidden).
port- Connection port (SSH by default).(visible for the model)
desc- Description of the server configuration.
Networktimeout(s)net_timeout
Set the timeout for network operations.Default:30
Prefersystemssh/scp/sftpprefer_system_ssh
Choose whether to use native ssh/scp/sftp binaries and system keys.Default:False
sshbinaryssh_binary
Specify the path to the ssh binary.Default:“ssh”
scpbinaryscp_binary
Specify the path to the scp binary.Default:“scp”
sftpbinarysftp_binary
Specify the path to the sftp binary.Default:“sftp”
Extrasshoptionsssh_options
Add extra options to be appended to ssh/scp commands.Default:“”
Paramiko:Autoaddhostkeysssh_auto_add_hostkey
Enable automatic addition of host keys for Paramiko SSHClient.Default:True
FTP/FTPS
FTPTLSdefaultftp_use_tls_defaultChoose whether to use FTP over TLS (explicit) by default.Default:False
FTPpassivemodeftp_passive_defaultSet the default FTP mode to passive.Default:True
Telnet
Telnet:loginprompttelnet_login_promptExpected prompt for username during Telnet login.Default:“login:”
Telnet:passwordprompttelnet_password_promptExpected prompt for password input during Telnet login.Default:“Password:”
Telnet:shellprompttelnet_promptDefine the prompt used to delimit command output in Telnet.Default:“$ “
SMTP
SMTPSTARTTLSdefaultsmtp_use_tls_defaultEnable STARTTLS by default for SMTP connections.Default:True
SMTPSSLdefaultsmtp_use_ssl_defaultEnable SMTP over SSL by default.Default:False
DefaultFromaddresssmtp_from_defaultDefault address used if ‘from_addr’ not provided in smtp_send command.Default:“”
Commands
srv_execExecute remote shell command via SSH or Telnet.
srv_lsList remote directory contents using SFTP/FTP or SSH.
srv_getDownload files from remote servers to local directories.
srv_putUpload local files to remote servers.
srv_rmRemove remote files or empty directories (non-recursive).
srv_mkdirCreate directories on remote servers.
srv_statRetrieve information about remote files, such as type, size, and last modification time.
smtp_sendSend emails via SMTP, using the server configurations provided.
Slack
The Slack plugin integrates with the Slack Web API, enabling interaction with Slack workspaces through the application. This plugin supports OAuth2 for authentication, which allows for seamless integration with Slack services, enabling actions such as posting messages, retrieving users, and managing conversations.
Retrieving a list of users.
Listing all conversations.
Accessing conversation history.
Retrieving conversation replies.
Opening a conversation.
Posting a message in a chat.
Deleting a chat message.
Uploading files to Slack.
The plugin can be configured with various options to customize connectivity and feature access.
Options
APIbaseapi_base
Set the base URL for Slack’s API.Default:https://slack.com/api
OAuthbaseoauth_base
Set the base URL for OAuth authorization.Default:https://slack.com
HTTPtimeout(s)http_timeout
Specify the request timeout in seconds.Default:30
OAuth2 (Slack)
OAuth2ClientIDoauth2_client_id
Provide the Client ID from your Slack App. This field is secret.
OAuth2ClientSecretoauth2_client_secret
Provide the Client Secret from your Slack App. This field is secret.
RedirectURIoauth2_redirect_uri
Specify the redirect URI that matches one in your Slack App.Default:http://127.0.0.1:8733/callback
Botscopes(comma-separated)bot_scopes
Define the scopes for the bot token.Default:chat:write,users:read,…
Userscopes(comma-separated)user_scopes
Specify optional user scopes for user token if required.
Tokens/cache
(auto/manual)Bottokenbot_token
Input or obtain the bot token automatically or manually. This field is secret.
(auto)Usertoken(optional)user_token
Get the user token if user scopes are required. This field is secret.
(auto)Refreshtokenoauth2_refresh_token
Store refresh token if rotation is enabled. This field is secret.
(auto)Expiresat(unix)oauth2_expires_at
Automatically calculate the token expiry time.
(auto)TeamIDteam_id
Cache the Team ID after auth.test or OAuth.
(auto)BotuserIDbot_user_id
Cache the Bot user ID post OAuth exchange.
(auto)AutheduserIDauthed_user_id
Cache the authenticated user ID after auth.test/OAuth.
Auto-startOAuthwhenrequiredoauth_auto_begin
Enable automatic initiation of OAuth flow if a command needs a token.Default:True
Openbrowserautomaticallyoauth_open_browser
Open the authorize URL in default browser.Default:True
UselocalserverforOAuthoauth_local_server
Activate local HTTP server to capture redirect.Default:True
OAuthlocaltimeout(s)oauth_local_timeout
Set time to wait for redirect with code.Default:180
SuccessHTMLoauth_success_html
Specify HTML displayed on successful local callback.
FailHTMLoauth_fail_html
Specify HTML displayed on failed local callback.
OAuthlocalport(0=auto)oauth_local_port
Set local HTTP port; must be registered in Slack App.Default:8733
Allowfallbackportifbusyoauth_allow_port_fallback
Fallback to a free local port if preferred port is busy.Default:True
Commands
slack_oauth_begin
Begin the OAuth2 flow and return the authorize URL.
slack_oauth_exchange
Exchange authorization code for tokens.
slack_oauth_refresh
Refresh token if rotation is enabled.
slack_auth_test
Test authentication and retrieve IDs.
slack_users_list
List workspace users (contacts).
slack_conversations_list
List channels/DMs visible to the token.
slack_conversations_history
Fetch channel/DM history.
slack_conversations_replies
Fetch a thread by root ts.
slack_conversations_open
Open or resume DM or MPDM.
slack_chat_post_message
Post a message to a channel or DM.
slack_chat_delete
Delete a message from a channel or DM.
slack_files_upload
Upload a file via external flow and share in Slack.
System Prompt Extra (append)
The plugin appends additional system prompts (extra data) from a list to every current system prompt. You can enhance every system prompt with extra instructions that will be automatically appended to the system prompt.
Options
Promptsprompts
List of extra prompts - prompts that will be appended to system prompt.All active extra prompts defined on list will be appended to the system prompt in the order they are listed here.
System (OS)
The plugin provides access to the operating system and executes system commands.
Options:
General
Auto-appendCWDtosys_execauto_cwd
Automatically append current working directory tosys_exec command.Default:True
Tool:sys_execcmd.sys_exec
Allowssys_exec command execution. If enabled, provides system commands execution.Default:True
Sandbox (Docker)
Sandbox(dockercontainer)sandbox_dockerExecutes all
sys_execshell commands inside an isolated Docker container. Requires Docker to be installed and running. Default:FalseDockerfiledockerfileThe Dockerfile used to build the sandbox image. You can customize it and rebuild via Tools → “Rebuild Docker sandbox Images”. Default: a minimal Python image with
/dataworkdir.Dockerimagenameimage_nameName of the Docker image used by the sandbox. Default:
pygpt_systemDockercontainernamecontainer_nameName of the Docker container started for the sandbox. Default:
pygpt_system_containerDockerruncommanddocker_entrypointCommand executed when starting the container (keeps container alive). Default:
tail-f/dev/nullDockervolumesdocker_volumesHost ↔ container volume mappings. By default, user data directory on host (
{workdir}) is mapped read/write to/datain the container.Structure of each item:
enabled(bool) – include this mappingdocker(text) – container path (e.g./data)host(text) – host path (e.g.{workdir})
Default: one mapping of
{workdir}→/dataDockerportsdocker_portsHost ↔ container port mappings. You can specify protocol on the container side (e.g.
8888/tcp), otherwise TCP is assumed.Structure of each item:
enabled(bool) – include this mappingdocker(text) – container port (e.g.8888or8888/tcp)host(int) – host port (e.g.8888)
Default: empty list (no ports exposed)
Notes:
When sandboxing is enabled, relative paths passed in commands are resolved against the user data directory and mounted into the container at
/data.The plugin checks for Docker availability and will prompt to build the image if it does not exist.
WinAPI (Windows)
EnableWinAPIwinapi_enabledEnables Windows Desktop/WinAPI integration (window management, input, screenshots) on Microsoft Windows. Default:
TrueKeys:per-chardelay(ms)win_keys_per_char_delay_msDelay between characters when typing Unicode text with
win_keys_text. Default:2Keys:hold(ms)win_keys_hold_msHold duration for modifier keys (e.g., CTRL/ALT/SHIFT) in
win_keys_send. Default:50Keys:gap(ms)win_keys_gap_msGap between consecutive key taps in
win_keys_send. Default:30Drag:stepdelay(ms)win_drag_step_delay_msDelay between intermediate mouse-move steps during
win_drag. Default:10
Notes:
WinAPI features are available only on Microsoft Windows. On other platforms, WinAPI commands are not exposed.
WinAPI commands are added to the command syntax list only when
platform=="Windows"andwinapi_enabledisTrue.Window and area screenshots use Qt’s
QScreen.grabWindow(...); images are saved as PNG files (non-absolute paths are stored under the user data directory).
Telegram
The plugin enables integration with Telegram for both bots and user accounts through theBotAPI and theTelethon library respectively. It allows sending and receiving messages, managing chats, and handling updates.
Sending text messages to a chat or channel.
Sending photos with an optional caption to a chat or channel.
Sending documents or files to a chat or channel.
Retrieving information about a specific chat or channel.
Polling for updates in bot mode.
Downloading files using a file identifier.
Listing contacts in user mode.
Listing recent dialogs or chats in user mode.
Retrieving recent messages from a specific chat or channel in user mode.
Options
ModemodeChoose the mode of operation.Default:bot
Available modes:
Bot (via
BotAPI)User (via
Telethon)
APIbase(Bot)api_baseBase URL for the Telegram Bot API.Default:https://api.telegram.org
HTTPtimeout(s)http_timeoutTimeout in seconds for HTTP requests.Default:30
Bot Options
Bottokenbot_tokenToken obtained from BotFather for authentication.
Defaultparse_modedefault_parse_modeDefault parse mode for sending messages.Default:HTML
Available modes:
HTML
Markdown
MarkdownV2
Disablelinkpreviews(default)default_disable_previewOption to disable link previews by default.Default:False
Disablenotifications(default)default_disable_notificationOption to disable message notifications by default.Default:False
Protectcontent(default)default_protect_contentOption to protect the content by default.Default:False
(auto)lastupdateidlast_update_idAutomatically stored ID after using tg_get_updates.
User Options (Telethon)
APIID(usermode)api_idID required for user authentication. Get from:https://my.telegram.org
APIHash(usermode)api_hashHash required for user authentication. Get from:https://my.telegram.org
Phonenumber(+CC...)phone_numberPhone number used to send login code in user mode.
(optional)2FApasswordpassword_2faPassword for two-step verification if enabled.
(auto)Session(StringSession)user_sessionSession string saved after successful login in user mode.
Auto-beginloginwhenneededauto_login_beginAutomatically send login code if authentication is needed and not available.Default:True
Commands
tg_login_beginBegin Telegram user login (sends code to phone).
tg_login_completeComplete login with code and optional 2FA password.
tg_logoutLog out and clear saved session.
tg_modeReturn current mode (bot|user).
tg_meGet authorized identity using Bot getMe or User get_me.
tg_send_messageSend text message to chat/channel.
tg_send_photoSend photo to chat/channel.
tg_send_documentSend document/file to chat/channel.
tg_get_chatGet chat info by id or @username.
tg_get_updatesPoll updates in bot mode, automatically store last_update_id.
tg_download_fileDownload file by file_id in bot mode.
tg_contacts_listList contacts in user mode.
tg_dialogs_listList recent dialogs or chats in user mode.
tg_messages_getGet recent messages from a chat in user mode.
Tuya (IoT)
The Tuya plugin integrates with Tuya’s Smart Home platform, enabling seamless interactions with your smart devices via the Tuya Cloud API. This plugin provides a user-friendly interface to manage and control devices directly from your assistant.
Provide your Tuya Cloud credentials to enable communication.
Access and list all smart devices connected to your Tuya app account.
Retrieve detailed information about each device, including its status and supported functions.
Effortlessly search for devices by their names using cached data for quick access.
Control devices by turning them on or off, toggle states, and set specific device parameters.
Send custom commands to devices for more advanced control.
Read sensor values and normalize them for easy interpretation.
Options
APIbaseapi_baseBase URL for interacting with the Tuya API.Default:https://openapi.tuyaeu.com
HTTPtimeout(s)http_timeoutRequests timeout duration in seconds.Default:30
LanguagelangLanguage setting for API interactions.Default:en
Commands
Auth
tuya_set_keysInput your Tuya Cloud credentials to enable device interactions.
tuya_set_uidSet your Tuya App Account UID for managing device listings.
tuya_token_getObtain an access token for authenticated API requests.
Devices
tuya_devices_listList all devices associated with your account UID, with options to paginate results.
tuya_device_getRetrieve detailed information for a specified device.
tuya_device_statusCheck the current status and data point values of a device.
tuya_device_functionsDiscover supported functions and data point codes for a specific device.
tuya_find_deviceQuickly locate devices using name-based searches from cached data.
Control
tuya_device_setSet specific data point values for a device or use multiple settings at once.
tuya_device_sendSend a list of raw commands directly to a device for execution.
tuya_device_onTurn a device on with an optional switch code.
tuya_device_offSwitch a device off, with automatic code detection if needed.
tuya_device_toggleToggle a device’s on/off state.
Sensors
tuya_sensors_readRead normalized sensor values from your connected devices.
Vision (inline)
The plugin integrates vision capabilities across all chat modes, not just Vision mode. Once enabled, it allows the model to seamlessly switch to vision processing in the background whenever an image attachment or vision capture is detected.
Tip
When usingVision(inline) by utilizing a plugin in standard mode, such asChat (notVision mode), the+Vision special checkbox will appear at the bottom of the Chat window. It will be automatically enabled any time you provide content for analysis (like an uploaded photo). When the checkbox is enabled, the vision model is used. If you wish to exit the vision model after image analysis, simply uncheck the checkbox. It will activate again automatically when the next image content for analysis is provided.
Options
Modelmodel
The model used to temporarily provide vision capabilities.Default:gpt-4-vision-preview.
Promptprompt
The prompt used for vision mode. It will append or replace current system prompt when using vision model.
Replacepromptreplace_prompt
Replace whole system prompt with vision prompt against appending it to the current prompt.Default:False
Tool:capturingimagesfromcameracmd.camera_capture
Allowscapture command execution. If enabled, model will be able to capture images from camera itself. The+ Tools option must be enabled.Default:False
Tool:makingscreenshotscmd.make_screenshot
Allowsscreenshot command execution. If enabled, model will be able to making screenshots itself. The+ Tools option must be enabled.Default:False
Voice Control (inline)
The plugin provides voice control command execution within a conversation.
See theAccessibility section for more details.
Web Search
PyGPT lets you connect model to the internet and carry out web searches in real time as you make queries.
To activate this feature, turn on theWebSearch plugin found in thePlugins menu.
Web searches are provided byDuckDuckGo,GoogleCustomSearchEngine andMicrosoftBing APIs and can be extended with other search engine providers.
Options
Providerprovider
Choose the provider.Default:Google
Available providers:
Google
Microsoft Bing
To use this provider, you need an API key, which you can obtain by registering an account at:
https://developers.google.com/custom-search/v1/overview
After registering an account, create a new project and select it from the list of available projects:
https://programmablesearchengine.google.com/controlpanel/all
After selecting your project, you need to enable theWholeInternetSearch option in its settings.Then, copy the following two items intoPyGPT:
Api Key
CX ID
These data must be configured in the appropriate fields in thePlugins/Settings... menu:

Options
GoogleCustomSearchAPIKEYgoogle_api_key
You can obtain your own API key athttps://developers.google.com/custom-search/v1/overview
GoogleCustomSearchCXIDgoogle_api_cx
You will find your CX ID athttps://programmablesearchengine.google.com/controlpanel/all - remember to enable “Search on ALL internet pages” option in project settings.
Microsoft Bing
BingSearchAPIKEYbing_api_key
You can obtain your own API key athttps://www.microsoft.com/en-us/bing/apis/bing-web-search-api
BingSearchAPIendpointbing_endpoint
API endpoint for Bing Search API, default:https://api.bing.microsoft.com/v7.0/search
General options
Numberofpagestosearchnum_pages
Number of max pages to search per query.Default:10
Maxcontentcharactersmax_page_content_length
Max characters of page content to get (0 = unlimited).Default:0
Per-pagecontentchunksizechunk_size
Per-page content chunk size (max characters per chunk).Default:20000
DisableSSLverifydisable_ssl
Disables SSL verification when crawling web pages.Default:False
Userawcontent(withoutsummarization)raw
Return raw content from web search instead of summarized content. Provides more data but consumes more tokens.Default:True
Timeouttimeout
Connection timeout (seconds).Default:5
Useragentuser_agent
User agent to use when making requests.Default:Mozilla/5.0.
Maxresultlengthmax_result_length
Max length of the summarized or raw result (characters).Default:50000
Maxsummarytokenssummary_max_tokens
Max tokens in output when generating summary.Default:1500
Tool:web_searchcmd.web_search
Allowsweb_search command execution. If enabled, model will be able to search the Web.Default:True
Tool:web_url_opencmd.web_url_open
Allowsweb_url_open command execution. If enabled, model will be able to open specified URL and summarize content.Default:True
Tool:web_url_rawcmd.web_url_raw
Allowsweb_url_raw command execution. If enabled, model will be able to open specified URL and get the raw content.Default:True
Tool:web_requestcmd.web_request
Allowsweb_request command execution. If enabled, model will be able to send any HTTP request to specified URL or API endpoint.Default:True
Tool:web_extract_linkscmd.web_extract_links
Allowsweb_extract_links command execution. If enabled, model will be able to open URL and get list of all links from it.Default:True
Tool:web_extract_imagescmd.web_extract_images
Allowsweb_extract_images command execution. If enabled, model will be able to open URL and get list of all images from it..Default:True
Advanced
Modelusedforwebpagesummarizesummary_model
Model used for web page summarize.Default:gpt-3.5-turbo-1106
Summarizepromptprompt_summarize
Prompt used for web search results summarize, use {query} as a placeholder for search query
Summarizeprompt(URLopen)prompt_summarize_url
Prompt used for specified URL page summarize
Indexing
Tool:web_indexcmd.web_index
Allowsweb_index command execution. If enabled, model will be able to index pages and external content using LlamaIndex (persistent index).Default:True
Tool:web_index_querycmd.web_index_query
Allowsweb_index_query command execution. If enabled, model will be able to quick index and query web content using LlamaIndex (in-memory index).Default:True
Auto-indexallusedURLsusingLlamaIndexauto_index
If enabled, every URL used by the model will be automatically indexed using LlamaIndex (persistent index).Default:False
Indextouseidx
ID of index to use for web page indexing (persistent index).Default:base
–
Wikipedia
The Wikipedia plugin allows for comprehensive interactions with Wikipedia, including language settings, article searching, summaries, and random article discovery. This plugin offers a variety of options to optimize your search experience.
Set your preferred language for Wikipedia queries.
Retrieve and check the current language setting.
Explore a list of supported languages.
Search for articles using keywords or get suggestions for queries.
Obtain summaries and detailed page content.
Discover articles by geographic location or randomly.
Open articles directly in your web browser.
Options
LanguagelangDefault Wikipedia language.Default:en
AutoSuggestauto_suggestEnable automatic suggestions for titles.Default:True
FollowRedirectsredirectEnable following of page redirects.Default:True
RateLimitrate_limitControl Wikipedia API request rate limiting.Default:True
User-Agentuser_agentCustom User-Agent string for requests.Default:pygpt-net-wikipedia-plugin/1.0 (+https://pygpt.net)
SummarySentencessummary_sentencesDefault number of sentences in summaries.Default:3
DefaultResultsLimitresults_defaultNumber of results for searches.Default:10
ContentMaximumCharacterscontent_max_charsMaximum characters for page content.Default:5000
MaxListItemsmax_list_itemsMaximum items from article lists.Default:50
FullContentbyDefaultcontent_full_defaultReturn full content by default.Default:False
Commands
Language
wp_set_langSet the language for Wikipedia queries.
wp_get_langRetrieve current language setting.
wp_languagesGet list of supported languages.
Search / Suggest
wp_searchSearch for articles using keywords.
wp_suggestGet title suggestions for queries.
Read
wp_summaryFetch a summary of a Wikipedia article.
wp_pageAccess full details of a Wikipedia article.
wp_sectionGet content of a specific article section.
Discover
wp_randomDiscover random Wikipedia article titles.
wp_geosearchFind articles near specific coordinates.
Utilities
wp_openOpen articles in a web browser by title or URL.
Wolfram Alpha
Provides computational knowledge via Wolfram Alpha: short answers, full JSON pods, numeric and symbolic math (solve, derivatives, integrals), unit conversions, matrix operations, and plots rendered as images. Images are saved underdata/wolframalpha/ in the user data directory.
Options
APIbaseapi_baseBase API URL (default:
https://api.wolframalpha.com). Change only if you use a proxy/gateway.HTTPtimeout(s)http_timeoutRequest timeout in seconds.
WolframAlphaAppIDwa_appidAppID used to authenticate requests. Stored as a secret. Get it from:https://developer.wolframalpha.com/portal/myapps/
UnitsunitsPreferred unit system for supported endpoints:
metricornonmetric.Simplebackgroundsimple_backgroundBackground for Simple API images:
whiteortransparent.Simplelayoutsimple_layoutLayout for Simple API images, e.g.,
labelbarorinputonly.Simplewidthsimple_widthTarget width for Simple API images (pixels). Leave empty to use the service default.
Tools (Commands)
Tool:wa_shortcmd.wa_shortReturns a concise text answer suitable for quick facts and simple numeric results.
Parameters:-
query(str, required) — natural-language or math input.Tool:wa_spokencmd.wa_spokenReturns a one-sentence, spoken-style answer.
Parameters:-
query(str, required)Tool:wa_simplecmd.wa_simpleRenders a compact result image (PNG/GIF) via the Simple API and saves it to a file.
Parameters:-
query(str, required)-out(str, optional) — output path; if relative, saved underdata/wolframalpha/.-background(str, optional) —white|transparent.-layout(str, optional) — e.g.,labelbar|inputonly.-width(int, optional) — target image width (px).Tool:wa_querycmd.wa_queryRuns a full query and returns pods as JSON (
queryresult.pods). Can optionally download pod images.Parameters:-
query(str, required)-format(str, optional) — e.g.,plaintext,image.-assumptions(list[str], optional) — repeatedassumptionparameters.-podstate(str, optional) — pod state id.-scantimeout(int, optional),podtimeout(int, optional)-maxwidth(int, optional) — max image width.-download_images(bool, optional) — if true, downloads pod images.-max_images(int, optional) — limit for downloaded images.Tool:wa_calculatecmd.wa_calculateEvaluates or simplifies an expression. Tries the short-answer endpoint first, then falls back to a full JSON query.
Parameters:-
expr(str, required)Tool:wa_solvecmd.wa_solveSolves one equation or a system of equations over a chosen domain.
Parameters:-
equation(str, optional) — single equation.-equations(list[str], optional) — list of equations.-var(str, optional) — single variable.-variables(list[str], optional) — variables set.-domain(str, optional) —reals|integers|complexes.Tool:wa_derivativecmd.wa_derivativeComputes a derivative (with optional evaluation at a point).
Parameters:-
expr(str, required)-var(str, optional, defaultx)-order(int, optional, default1)-at(str, optional) — evaluation point, e.g.,x=0.Tool:wa_integralcmd.wa_integralComputes an indefinite or definite integral.
Parameters:-
expr(str, required)-var(str, optional, defaultx)-a(str, optional) — lower bound (for definite integrals).-b(str, optional) — upper bound.Tool:wa_units_convertcmd.wa_units_convertConverts numeric values between units.
Parameters:-
value(str, required) — numeric value.-from(str, required) — source unit.-to(str, required) — target unit.Tool:wa_matrixcmd.wa_matrixPerforms matrix operations.
Parameters:-
op(str, optional, defaultdeterminant) —determinant|inverse|eigenvalues|rank.-matrix(list[list], required) — e.g.,[[1,2],[3,4]].Tool:wa_plotcmd.wa_plotGenerates a function plot as an image via the Simple API and saves it to a file.
Parameters:-
func(str, required) — function, e.g.,sin(x).-var(str, optional, defaultx)-a(str, optional) — domain start.-b(str, optional) — domain end.-out(str, optional) — output path; relative paths go underdata/wolframalpha/.
X/Twitter
The X/Twitter plugin integrates with the X platform, allowing for comprehensive interactions such as tweeting, retweeting, liking, media uploads, and more. This plugin requires OAuth2 authentication and offers various configuration options to manage API interactions effectively.
Retrieve user details by providing their username.
Fetch user information using their unique ID.
Access recent tweets from a specific user.
Search for recent tweets using specific keywords or hashtags.
Create a new tweet and post it on the platform.
Remove an existing tweet from your profile.
Reply to a specific tweet with a new comment.
Quote a tweet while adding your own comments or thoughts.
Like a tweet to show appreciation or support.
Remove a like from a previously liked tweet.
Retweet a tweet to share it with your followers.
Undo a retweet to remove it from your profile.
Hide a specific reply to a tweet.
List all bookmarked tweets for easy access.
Add a tweet to your bookmarks for later reference.
Remove a tweet from your bookmarks.
Upload media files such as images or videos for tweeting.
Set alternative text for uploaded media for accessibility.
Options
APIbaseapi_baseBase API URL.Default:https://api.x.com
Authorizebaseauthorize_baseBase URL for OAuth authorization.Default:https://x.com
HTTPtimeout(s)http_timeoutRequests timeout in seconds.Default:30
OAuth2 PKCE
OAuth2ClientIDoauth2_client_idClient ID from X Developer Portal.Secret
OAuth2ClientSecret(optional)oauth2_client_secretOnly for confidential clients.Secret
Confidentialclient(useBasicauth)oauth2_confidentialEnable if your App is confidential.Default:False
RedirectURIoauth2_redirect_uriMust match one of the callback URLs in your X App.Default:http://127.0.0.1:8731/callback
Scopesoauth2_scopesOAuth2 scopes for Authorization Code with PKCE.Default:tweet.read users.read like.read like.write tweet.write bookmark.read bookmark.write tweet.moderate.write offline.access
(auto)code_verifieroauth2_code_verifierGenerated by x_oauth_begin.Secret
(auto)stateoauth2_stateGenerated by x_oauth_begin.Secret
(auto)Accesstokenoauth2_access_tokenStored user access token.Secret
(auto)Refreshtokenoauth2_refresh_tokenStored user refresh token.Secret
(auto)Expiresat(unix)oauth2_expires_atAuto-calculated expiry time.
App-only Bearer (optional for read-only)
App-onlyBearertoken(optional)bearer_tokenOptional app-only bearer for read endpoints.Secret
Convenience cache
(auto)UserIDuser_idCached after x_me or oauth exchange.
(auto)UsernameusernameCached after x_me or oauth exchange.
Auto-startOAuthwhenrequiredoauth_auto_beginStart PKCE flow automatically if needed.Default:True
Openbrowserautomaticallyoauth_open_browserOpen authorize URL in default browser.Default:True
UselocalserverforOAuthoauth_local_serverCapture redirect using a local server.Default:True
OAuthlocaltimeout(s)oauth_local_timeoutTime to wait for redirect with code.Default:180
SuccessHTMLoauth_success_htmlHTML displayed on local callback success.
FailHTMLoauth_fail_htmlHTML displayed on local callback error.
OAuthlocalport(0=auto)oauth_local_portLocal HTTP port for callback.Default:8731
Allowfallbackportifbusyoauth_allow_port_fallbackUse a free port if the preferred port is busy.Default:True
Commands
Auth
x_oauth_beginBegin OAuth2 PKCE flow.
x_oauth_exchangeExchange authorization code for tokens.
x_oauth_refreshRefresh access token using refresh_token.
Users
x_meGet authorized user information.
x_user_by_usernameLookup user by username.
x_user_by_idLookup user by ID.
Timelines / Search
x_user_tweetsRetrieve user Tweet timeline.
x_search_recentPerform recent search within the last 7 days.
Tweet CRUD
x_tweet_createCreate a new Tweet/Post.
x_tweet_deleteDelete a Tweet by ID.
x_tweet_replyReply to a Tweet.
x_tweet_quoteQuote a Tweet.
Actions
x_likeLike a Tweet.
x_unlikeUnlike a Tweet.
x_retweetRetweet a Tweet.
x_unretweetUndo a retweet.
x_hide_replyHide or unhide a reply to your Tweet.
Bookmarks
x_bookmarks_listList bookmarks.
x_bookmark_addAdd a bookmark.
x_bookmark_removeRemove a bookmark.
Media
x_upload_mediaUpload media and return media_id.
x_media_set_alt_textAttach alt text to uploaded media.