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+Tools option 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 placeholders

  • Headers: 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_wiki

  • Instructiom:sendAPIcalltoWikipediatosearchpagesbyquery

  • GET params:query,limit

  • Type:GET

  • API 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 (viaOpenAIAPI)

  • Whisper (local model) - not available in compiled and Snap versions, only Python/PyPi version

  • Google (viaSpeechRecognition library)

  • Google Cloud (viaSpeechRecognition library)

  • Microsoft Bing (viaSpeechRecognition library)

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

Google

  • 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.

_images/v2_azure.png

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_base

    Define the base URL for the Bitbucket Cloud API.Default:https://api.bitbucket.org/2.0

  • HTTPtimeout(s)http_timeout

    Set the timeout for HTTP requests in seconds.Default:30

Auth options

  • Authmodeauth_mode

    Select the authentication mode.Default:auto

    Available modes:* auto* basic* bearer

  • Usernamebb_username

    Provide your Bitbucket username (handle, not email).

  • AppPasswordbb_app_password

    Specify your Bitbucket App Password (Basic). This option is secret.

  • Bearertokenbb_access_token

    Enter the OAuth access token (Bearer). This option is secret.

Cached convenience

  • (auto)UserUUIDuser_uuid

    Cached after using thebb_me command.

  • (auto)Usernameusername

    Cached after using thebb_me command.

Commands

Auth Options

  • bb_auth_set_mode

    Set the authentication mode: auto|basic|bearer.

  • bb_set_app_password

    Set App Password credentials including username and app password.

  • bb_set_bearer

    Set the Bearer authentication token.

  • bb_auth_check

    Run diagnostics to show authentication results for/user.

User Management

  • bb_me

    Retrieve details for the authenticated user.

  • bb_user_get

    Fetch user information by username.

  • bb_workspaces_list

    List all accessible workspaces.

Repositories Management

  • bb_repos_list

    Display a list of repositories.

  • bb_repo_get

    Fetch details of a specific repository.

  • bb_repo_create

    Create a new repository in a specified workspace.

  • bb_repo_delete

    Delete a repository (requires confirmation).

Contents Management

  • bb_contents_get

    Retrieve file or directory contents from a repository.

  • bb_file_put

    Create or update a file in a repository.

  • bb_file_delete

    Delete specified files within a repository.

Issues Management

  • bb_issues_list

    List issues in a repository.

  • bb_issue_create

    Create a new issue within a repository.

  • bb_issue_comment

    Add a comment to an existing issue.

  • bb_issue_update

    Update details of an existing issue.

Pull Requests Management

  • bb_prs_list

    Display a list of pull requests.

  • bb_pr_create

    Create a new pull request.

  • bb_pr_merge

    Merge an existing pull request.

Search Functionality

  • bb_search_repos

    Search 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-daemon

Code 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.

_images/v2_python.png

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:

@123

Where123 is the ID of previous context (conversation) in database, example of use:

Let's talk about discussion @123

Options

  • 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.

_images/v2_crontab.png

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:

_images/v2_crontab_tray.png
  • 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:

_images/v2_custom_cmd.png

To add a new custom command, click theADD button and then:

  1. Provide a name for your command: this is a unique identifier for model.

  2. Provide aninstruction explaining what this command does; model will know when to use the command based on this instruction.

  3. Defineparams, separated by commas - model will send data to your commands using these params. These params will be placed into placeholders you have defined in thecmd field. 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 1

And 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:S format

  • {_date} - current date inY-m-d format

  • {_datetime} - current date and time inY-m-dH:M:S format

  • {_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:

  1. Generate a song.

  2. Locate your command.

  3. Execute the command by sending the song’s title and text.

  4. 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
_images/v2_custom_cmd_example.png

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_base

    Configure the base URL for GitHub’s API.Default:https://api.github.com

  • Webbaseweb_base

    Set the GitHub website base URL.Default:https://github.com

  • APIversionheaderapi_version

    Specify the API version for requests.Default:2022-11-28

  • HTTPtimeout(s)http_timeout

    Define timeout for API requests in seconds.Default:30

OAuth Device Flow

  • OAuthClientIDoauth_client_id

    Set the Client ID from your GitHub OAuth App. Supports Device Flow.Secret

  • Scopesoauth_scopes

    List the space-separated OAuth scopes.Default:repo read:org read:user user:email

  • Openbrowserautomaticallyoauth_open_browser

    Automatically open the verification URL in the default browser.Default:True

  • Auto-startauthwhenrequiredoauth_auto_begin

    Start Device Flow automatically when a command requires a token.Default:True

Tokens

  • (auto)OAuthaccesstokengh_access_token

    Store OAuth access token for Device/Web.Secret

  • PATtoken(optional)pat_token

    Provide a Personal Access Token (classic or fine-grained) for authentication.Secret

  • Authschemeauth_scheme

    Choose the authentication scheme:Bearer orToken (useToken for PAT).

Cache

  • (auto)UserIDuser_id

    Cache User ID aftergh_me or authentication.

  • (auto)Usernameusername

    Cache 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)credentials

    Paste 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_token

    Automatically stores and updates the refresh token necessary for Google service access.Secret: Yes

  • UselocalserverforOAuthoauth_local_server

    Run a local server for the installed app OAuth flow to simplify the authentication process.Default:True

  • OAuthlocalport(0=random)oauth_local_port

    Specify the port forInstalledAppFlow.run_local_server. A value of0 lets the system choose a random available port.Default:0

  • Scopesoauth_scopes

    Define 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_user

    Optionally provide a subject for service account domain-wide delegation.

  • YouTubeAPIKey(optional)youtube_api_key

    If provided, allows fetching public video information without needing OAuth tokens.Secret: Yes

  • AllowunofficialYouTubetranscriptallow_unofficial_youtube_transcript

    Enables the use ofyoutube-transcript-api for transcripts when official captions are unavailable.Default:False

  • Keepmodekeep_mode

    Determines the mode for accessing Keep:official,unofficial, orauto.Default:auto

  • AllowunofficialKeepallow_unofficial_keep

    Usegkeepapi as a fallback for Keep services, requiringkeep_username andkeep_master_token.Default:True

  • Keepusername(unofficial)keep_username

    Set the email used forgkeepapi.

  • Keepmastertoken(unofficial)keep_master_token

    Provide the master token forgkeepapi usage, ensuring secure handling.Secret: Yes

  • GoogleMapsAPIKeygoogle_maps_api_key

    Necessary for accessing Google Maps features like Geocoding, Directions, and Distance Matrix.Secret: Yes

  • MapsAPIKey(alias)maps_api_key

    Alias 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.

_images/v2_mcp.png

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 formlabel__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.

  • Ifallowed_commands is set, only those tools are exposed (whitelist).

  • Ifdisabled_commands is 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:

  1. 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.

  2. server_address- Transport is detected from the address:

    • stdio:-stdio:uvrunserverfastmcp_quickstartstdio-stdio:python/path/to/your_mcp_server.py--stdio

    • Streamable HTTP:-http://localhost:8000/mcp-https://your-host.tld/mcp

    • SSE:-http://localhost:8000/sse-sse://your-host.tld/sse orsse+https://your-host.tld/sse

  3. authorization (optional)- Value for theAuthorization header on HTTP/SSE (e.g.,BearerYOUR_TOKEN).- Not used for stdio.

  4. 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).

  5. disabled_commands (optional)- Comma-separated list of tool names to hide from this server (blacklist).

  6. 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:quickstart

  • server_address:stdio:uvrunserverfastmcp_quickstartstdio

  • allowed_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:deepwiki

  • server_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_question

  • active: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 fromserver_address automatically.

Security notes

  • authorization is sent as theAuthorization header 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_timeout

  • User-Agentuser_agent

  • Contactemail(Nominatim)contact_email

  • Accept-Languageaccept_language

  • Nominatimbasenominatim_base

  • OSRMbaseosrm_base

  • Tilebasetile_base

  • Defaultzoommap_zoom

  • Defaultwidthmap_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_geocode

    Forward geocoding of free-text addresses/places using Nominatim. Supports optional country filtering and near/viewbox bounding. Each result includesmap_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,lon to 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 URLs

  • Tool:osm_reverse

    Reverse geocoding for a given coordinate. Response includesmap_url (openstreetmap.org link).

    Parameters:-lat (float) andlon (float) orpoint (strlat,lon)-zoom (int, optional) — also used formap_url zoom-addressdetails (bool, optional)-layers (str, optional) — optionallayers= value for OSM site URLs

  • Tool:osm_search

    Alias convenience wrapper forosm_geocode with the same parameters (results also includemap_url).

  • Tool:osm_route

    Plan a route via OSRM. Accepts addresses or coordinates for start/end and optional waypoints. Always returnsmap_url pointing 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.

    Ifsave_map is 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) infull mode-include_steps (bool, optional) — include step-by-step (full mode 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_url when applicable-layers (str, optional) — optionallayers= forpreview_url-width (int, optional),height (int, optional) — used only to estimate bbox zoom-markers (list, optional) — forpreview_url the first valid point is used as marker

    Deprecated/no-op parameters (kept for backward compatibility):out,color,weight.

  • Tool:osm_staticmap

    Build an openstreetmap.org URL (center/zoom or bbox; optional marker). Only the first valid marker is used.width/height are 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 bbox

  • Tool:osm_bbox_map

    Shortcut to build an openstreetmap.org URL from a bounding box.

    Parameters:-bbox (list[4], required) —minlon,minlat,maxlon,maxlat- optionalmarkers,width,height

  • Tool:osm_show_url

    Build 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_url

    Build 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 |foot

  • Tool:osm_tile

    Download a single XYZ tile (z/x/y.png). Useful for diagnostics or custom composition. The file is saved underdata/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.

_images/v2_serial.png

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_default

      Choose whether to use FTP over TLS (explicit) by default.Default:False

    • FTPpassivemodeftp_passive_default

      Set the default FTP mode to passive.Default:True

  • Telnet

    • Telnet:loginprompttelnet_login_prompt

      Expected prompt for username during Telnet login.Default:“login:”

    • Telnet:passwordprompttelnet_password_prompt

      Expected prompt for password input during Telnet login.Default:“Password:”

    • Telnet:shellprompttelnet_prompt

      Define the prompt used to delimit command output in Telnet.Default:“$ “

  • SMTP

    • SMTPSTARTTLSdefaultsmtp_use_tls_default

      Enable STARTTLS by default for SMTP connections.Default:True

    • SMTPSSLdefaultsmtp_use_ssl_default

      Enable SMTP over SSL by default.Default:False

    • DefaultFromaddresssmtp_from_default

      Default address used if ‘from_addr’ not provided in smtp_send command.Default:“”

Commands

  • srv_exec

    Execute remote shell command via SSH or Telnet.

  • srv_ls

    List remote directory contents using SFTP/FTP or SSH.

  • srv_get

    Download files from remote servers to local directories.

  • srv_put

    Upload local files to remote servers.

  • srv_rm

    Remove remote files or empty directories (non-recursive).

  • srv_mkdir

    Create directories on remote servers.

  • srv_stat

    Retrieve information about remote files, such as type, size, and last modification time.

  • smtp_send

    Send 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_docker

    Executes allsys_exec shell commands inside an isolated Docker container. Requires Docker to be installed and running. Default:False

  • Dockerfiledockerfile

    The 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/data workdir.

  • Dockerimagenameimage_name

    Name of the Docker image used by the sandbox. Default:pygpt_system

  • Dockercontainernamecontainer_name

    Name of the Docker container started for the sandbox. Default:pygpt_system_container

  • Dockerruncommanddocker_entrypoint

    Command executed when starting the container (keeps container alive). Default:tail-f/dev/null

  • Dockervolumesdocker_volumes

    Host ↔ container volume mappings. By default, user data directory on host ({workdir}) is mapped read/write to/data in the container.

    Structure of each item:

    • enabled (bool) – include this mapping

    • docker (text) – container path (e.g./data)

    • host (text) – host path (e.g.{workdir})

    Default: one mapping of{workdir}/data

  • Dockerportsdocker_ports

    Host ↔ 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 mapping

    • docker (text) – container port (e.g.8888 or8888/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_enabled

    Enables Windows Desktop/WinAPI integration (window management, input, screenshots) on Microsoft Windows. Default:True

  • Keys:per-chardelay(ms)win_keys_per_char_delay_ms

    Delay between characters when typing Unicode text withwin_keys_text. Default:2

  • Keys:hold(ms)win_keys_hold_ms

    Hold duration for modifier keys (e.g., CTRL/ALT/SHIFT) inwin_keys_send. Default:50

  • Keys:gap(ms)win_keys_gap_ms

    Gap between consecutive key taps inwin_keys_send. Default:30

  • Drag:stepdelay(ms)win_drag_step_delay_ms

    Delay between intermediate mouse-move steps duringwin_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 whenplatform=="Windows" andwinapi_enabled isTrue.

  • Window and area screenshots use Qt’sQScreen.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

  • Modemode

    Choose the mode of operation.Default:bot

    Available modes:

    • Bot (viaBotAPI)

    • User (viaTelethon)

  • APIbase(Bot)api_base

    Base URL for the Telegram Bot API.Default:https://api.telegram.org

  • HTTPtimeout(s)http_timeout

    Timeout in seconds for HTTP requests.Default:30

Bot Options

  • Bottokenbot_token

    Token obtained from BotFather for authentication.

  • Defaultparse_modedefault_parse_mode

    Default parse mode for sending messages.Default:HTML

    Available modes:

    • HTML

    • Markdown

    • MarkdownV2

  • Disablelinkpreviews(default)default_disable_preview

    Option to disable link previews by default.Default:False

  • Disablenotifications(default)default_disable_notification

    Option to disable message notifications by default.Default:False

  • Protectcontent(default)default_protect_content

    Option to protect the content by default.Default:False

  • (auto)lastupdateidlast_update_id

    Automatically stored ID after using tg_get_updates.

User Options (Telethon)

  • APIID(usermode)api_id

    ID required for user authentication. Get from:https://my.telegram.org

  • APIHash(usermode)api_hash

    Hash required for user authentication. Get from:https://my.telegram.org

  • Phonenumber(+CC...)phone_number

    Phone number used to send login code in user mode.

  • (optional)2FApasswordpassword_2fa

    Password for two-step verification if enabled.

  • (auto)Session(StringSession)user_session

    Session string saved after successful login in user mode.

  • Auto-beginloginwhenneededauto_login_begin

    Automatically send login code if authentication is needed and not available.Default:True

Commands

  • tg_login_begin

    Begin Telegram user login (sends code to phone).

  • tg_login_complete

    Complete login with code and optional 2FA password.

  • tg_logout

    Log out and clear saved session.

  • tg_mode

    Return current mode (bot|user).

  • tg_me

    Get authorized identity using Bot getMe or User get_me.

  • tg_send_message

    Send text message to chat/channel.

  • tg_send_photo

    Send photo to chat/channel.

  • tg_send_document

    Send document/file to chat/channel.

  • tg_get_chat

    Get chat info by id or @username.

  • tg_get_updates

    Poll updates in bot mode, automatically store last_update_id.

  • tg_download_file

    Download file by file_id in bot mode.

  • tg_contacts_list

    List contacts in user mode.

  • tg_dialogs_list

    List recent dialogs or chats in user mode.

  • tg_messages_get

    Get 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_base

    Base URL for interacting with the Tuya API.Default:https://openapi.tuyaeu.com

  • HTTPtimeout(s)http_timeout

    Requests timeout duration in seconds.Default:30

  • Languagelang

    Language setting for API interactions.Default:en

Commands

Auth

  • tuya_set_keys

    Input your Tuya Cloud credentials to enable device interactions.

  • tuya_set_uid

    Set your Tuya App Account UID for managing device listings.

  • tuya_token_get

    Obtain an access token for authenticated API requests.

Devices

  • tuya_devices_list

    List all devices associated with your account UID, with options to paginate results.

  • tuya_device_get

    Retrieve detailed information for a specified device.

  • tuya_device_status

    Check the current status and data point values of a device.

  • tuya_device_functions

    Discover supported functions and data point codes for a specific device.

  • tuya_find_device

    Quickly locate devices using name-based searches from cached data.

Control

  • tuya_device_set

    Set specific data point values for a device or use multiple settings at once.

  • tuya_device_send

    Send a list of raw commands directly to a device for execution.

  • tuya_device_on

    Turn a device on with an optional switch code.

  • tuya_device_off

    Switch a device off, with automatic code detection if needed.

  • tuya_device_toggle

    Toggle a device’s on/off state.

Sensors

  • tuya_sensors_read

    Read 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

Google

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:

_images/v2_plugin_google.png

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

  • Languagelang

    Default Wikipedia language.Default:en

  • AutoSuggestauto_suggest

    Enable automatic suggestions for titles.Default:True

  • FollowRedirectsredirect

    Enable following of page redirects.Default:True

  • RateLimitrate_limit

    Control Wikipedia API request rate limiting.Default:True

  • User-Agentuser_agent

    Custom User-Agent string for requests.Default:pygpt-net-wikipedia-plugin/1.0 (+https://pygpt.net)

  • SummarySentencessummary_sentences

    Default number of sentences in summaries.Default:3

  • DefaultResultsLimitresults_default

    Number of results for searches.Default:10

  • ContentMaximumCharacterscontent_max_chars

    Maximum characters for page content.Default:5000

  • MaxListItemsmax_list_items

    Maximum items from article lists.Default:50

  • FullContentbyDefaultcontent_full_default

    Return full content by default.Default:False

Commands

Language

  • wp_set_lang

    Set the language for Wikipedia queries.

  • wp_get_lang

    Retrieve current language setting.

  • wp_languages

    Get list of supported languages.

Search / Suggest

  • wp_search

    Search for articles using keywords.

  • wp_suggest

    Get title suggestions for queries.

Read

  • wp_summary

    Fetch a summary of a Wikipedia article.

  • wp_page

    Access full details of a Wikipedia article.

  • wp_section

    Get content of a specific article section.

Discover

  • wp_random

    Discover random Wikipedia article titles.

  • wp_geosearch

    Find articles near specific coordinates.

Utilities

  • wp_open

    Open 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_base

    Base API URL (default:https://api.wolframalpha.com). Change only if you use a proxy/gateway.

  • HTTPtimeout(s)http_timeout

    Request timeout in seconds.

  • WolframAlphaAppIDwa_appid

    AppID used to authenticate requests. Stored as a secret. Get it from:https://developer.wolframalpha.com/portal/myapps/

  • Unitsunits

    Preferred unit system for supported endpoints:metric ornonmetric.

  • Simplebackgroundsimple_background

    Background for Simple API images:white ortransparent.

  • Simplelayoutsimple_layout

    Layout for Simple API images, e.g.,labelbar orinputonly.

  • Simplewidthsimple_width

    Target width for Simple API images (pixels). Leave empty to use the service default.

Tools (Commands)

  • Tool:wa_shortcmd.wa_short

    Returns 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_spoken

    Returns a one-sentence, spoken-style answer.

    Parameters:-query (str, required)

  • Tool:wa_simplecmd.wa_simple

    Renders 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_query

    Runs 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) — repeatedassumption parameters.-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_calculate

    Evaluates 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_solve

    Solves 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_derivative

    Computes 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_integral

    Computes 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_convert

    Converts numeric values between units.

    Parameters:-value (str, required) — numeric value.-from (str, required) — source unit.-to (str, required) — target unit.

  • Tool:wa_matrixcmd.wa_matrix

    Performs 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_plot

    Generates 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_base

    Base API URL.Default:https://api.x.com

  • Authorizebaseauthorize_base

    Base URL for OAuth authorization.Default:https://x.com

  • HTTPtimeout(s)http_timeout

    Requests timeout in seconds.Default:30

OAuth2 PKCE

  • OAuth2ClientIDoauth2_client_id

    Client ID from X Developer Portal.Secret

  • OAuth2ClientSecret(optional)oauth2_client_secret

    Only for confidential clients.Secret

  • Confidentialclient(useBasicauth)oauth2_confidential

    Enable if your App is confidential.Default:False

  • RedirectURIoauth2_redirect_uri

    Must match one of the callback URLs in your X App.Default:http://127.0.0.1:8731/callback

  • Scopesoauth2_scopes

    OAuth2 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_verifier

    Generated by x_oauth_begin.Secret

  • (auto)stateoauth2_state

    Generated by x_oauth_begin.Secret

  • (auto)Accesstokenoauth2_access_token

    Stored user access token.Secret

  • (auto)Refreshtokenoauth2_refresh_token

    Stored user refresh token.Secret

  • (auto)Expiresat(unix)oauth2_expires_at

    Auto-calculated expiry time.

App-only Bearer (optional for read-only)

  • App-onlyBearertoken(optional)bearer_token

    Optional app-only bearer for read endpoints.Secret

Convenience cache

  • (auto)UserIDuser_id

    Cached after x_me or oauth exchange.

  • (auto)Usernameusername

    Cached after x_me or oauth exchange.

  • Auto-startOAuthwhenrequiredoauth_auto_begin

    Start PKCE flow automatically if needed.Default:True

  • Openbrowserautomaticallyoauth_open_browser

    Open authorize URL in default browser.Default:True

  • UselocalserverforOAuthoauth_local_server

    Capture redirect using a local server.Default:True

  • OAuthlocaltimeout(s)oauth_local_timeout

    Time to wait for redirect with code.Default:180

  • SuccessHTMLoauth_success_html

    HTML displayed on local callback success.

  • FailHTMLoauth_fail_html

    HTML displayed on local callback error.

  • OAuthlocalport(0=auto)oauth_local_port

    Local HTTP port for callback.Default:8731

  • Allowfallbackportifbusyoauth_allow_port_fallback

    Use a free port if the preferred port is busy.Default:True

Commands

Auth

  • x_oauth_begin

    Begin OAuth2 PKCE flow.

  • x_oauth_exchange

    Exchange authorization code for tokens.

  • x_oauth_refresh

    Refresh access token using refresh_token.

Users

  • x_me

    Get authorized user information.

  • x_user_by_username

    Lookup user by username.

  • x_user_by_id

    Lookup user by ID.

Timelines / Search

  • x_user_tweets

    Retrieve user Tweet timeline.

  • x_search_recent

    Perform recent search within the last 7 days.

Tweet CRUD

  • x_tweet_create

    Create a new Tweet/Post.

  • x_tweet_delete

    Delete a Tweet by ID.

  • x_tweet_reply

    Reply to a Tweet.

  • x_tweet_quote

    Quote a Tweet.

Actions

  • x_like

    Like a Tweet.

  • x_unlike

    Unlike a Tweet.

  • x_retweet

    Retweet a Tweet.

  • x_unretweet

    Undo a retweet.

  • x_hide_reply

    Hide or unhide a reply to your Tweet.

Bookmarks

  • x_bookmarks_list

    List bookmarks.

  • x_bookmark_add

    Add a bookmark.

  • x_bookmark_remove

    Remove a bookmark.

Media

  • x_upload_media

    Upload media and return media_id.

  • x_media_set_alt_text

    Attach alt text to uploaded media.