{
  "service": "personal_ai",
  "displayName": "Personal AI",
  "categories": [
    "AI",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "PERSONAL_AI_API_KEY",
      "description": "Personal AI API key sent with the x-api-key header. Create or copy it from your Personal AI API settings: https://docs.personal.ai/api-reference/endpoint/ai-message",
      "extraFields": [
        {
          "key": "domainName",
          "label": "Domain Name",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "product-demo-jebzrhw",
          "description": "The hyphenated domain name shown below the AI persona name in Personal AI."
        }
      ]
    }
  ],
  "homepageUrl": "https://personal.ai",
  "actions": [
    {
      "id": "personal_ai.send_instruction",
      "service": "personal_ai",
      "name": "send_instruction",
      "description": "Send a chatgpt or search instruction to a Personal AI persona.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "command": {
            "type": "string",
            "enum": [
              "chatgpt",
              "search"
            ],
            "description": "The Personal AI instruction command to execute."
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The text to send to the Personal AI persona."
          },
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The hyphenated domain name of the target Personal AI persona."
          },
          "context": {
            "type": "string",
            "minLength": 1,
            "description": "Additional context for the AI response."
          },
          "userName": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the user sending the request."
          },
          "sessionId": {
            "type": "string",
            "minLength": 1,
            "description": "The session identifier used to continue a conversation."
          },
          "sourceName": {
            "type": "string",
            "minLength": 1,
            "description": "The source application name for the inbound message."
          },
          "isMessage": {
            "type": "boolean",
            "description": "Whether the instruction should be treated as a message."
          }
        },
        "additionalProperties": false,
        "required": [
          "command",
          "text",
          "domainName"
        ],
        "description": "The input payload for sending a Personal AI instruction."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "aiMessage": {
            "type": "string",
            "description": "The AI's response message."
          },
          "aiScore": {
            "anyOf": [
              {
                "type": "number",
                "description": "The confidence score of the AI response."
              },
              {
                "type": "null"
              }
            ]
          },
          "aiName": {
            "anyOf": [
              {
                "type": "string",
                "description": "The name of the AI persona that responded."
              },
              {
                "type": "null"
              }
            ]
          },
          "aiPicture": {
            "anyOf": [
              {
                "type": "string",
                "description": "The image URL for the responding AI persona.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "sessionId": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Personal AI conversation session identifier."
              },
              {
                "type": "null"
              }
            ]
          },
          "sourceApp": {
            "anyOf": [
              {
                "type": "string",
                "description": "The source application returned by Personal AI."
              },
              {
                "type": "null"
              }
            ]
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Personal AI response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "aiMessage",
          "raw"
        ],
        "description": "The response returned by Personal AI after message or instruction processing."
      }
    },
    {
      "id": "personal_ai.send_message",
      "service": "personal_ai",
      "name": "send_message",
      "description": "Send a message to a Personal AI persona and receive a response.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The text to send to the Personal AI persona."
          },
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The hyphenated domain name of the target Personal AI persona."
          },
          "context": {
            "type": "string",
            "minLength": 1,
            "description": "Additional context for the AI response."
          },
          "userName": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the user sending the request."
          },
          "sessionId": {
            "type": "string",
            "minLength": 1,
            "description": "The session identifier used to continue a conversation."
          },
          "sourceName": {
            "type": "string",
            "minLength": 1,
            "description": "The source application name for the inbound message."
          },
          "events": {
            "type": "string",
            "minLength": 1,
            "description": "The document name to reference from the persona upload library."
          },
          "isStack": {
            "type": "boolean",
            "description": "Whether to add the user message to memory."
          },
          "isDraft": {
            "type": "boolean",
            "description": "Whether to create a copilot draft message."
          },
          "metadata": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Additional metadata to pass through to Personal AI."
          }
        },
        "additionalProperties": false,
        "required": [
          "text",
          "domainName"
        ],
        "description": "The input payload for sending a Personal AI message."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "aiMessage": {
            "type": "string",
            "description": "The AI's response message."
          },
          "aiScore": {
            "anyOf": [
              {
                "type": "number",
                "description": "The confidence score of the AI response."
              },
              {
                "type": "null"
              }
            ]
          },
          "aiName": {
            "anyOf": [
              {
                "type": "string",
                "description": "The name of the AI persona that responded."
              },
              {
                "type": "null"
              }
            ]
          },
          "aiPicture": {
            "anyOf": [
              {
                "type": "string",
                "description": "The image URL for the responding AI persona.",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "sessionId": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Personal AI conversation session identifier."
              },
              {
                "type": "null"
              }
            ]
          },
          "sourceApp": {
            "anyOf": [
              {
                "type": "string",
                "description": "The source application returned by Personal AI."
              },
              {
                "type": "null"
              }
            ]
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Personal AI response object."
          }
        },
        "additionalProperties": false,
        "required": [
          "aiMessage",
          "raw"
        ],
        "description": "The response returned by Personal AI after message or instruction processing."
      }
    },
    {
      "id": "personal_ai.upload_memory",
      "service": "personal_ai",
      "name": "upload_memory",
      "description": "Upload one plain text memory to a Personal AI persona memory stack.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The plain text memory to upload."
          },
          "sourceName": {
            "type": "string",
            "minLength": 1,
            "description": "The source or application name for the memory."
          },
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The hyphenated domain name of the target Personal AI persona."
          },
          "createdTime": {
            "type": "string",
            "minLength": 1,
            "description": "The memory time including timezone."
          },
          "rawFeedText": {
            "type": "string",
            "minLength": 1,
            "description": "The formatted text to store with the memory."
          },
          "tags": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-delimited tags for the memory."
          }
        },
        "additionalProperties": false,
        "required": [
          "text",
          "sourceName",
          "domainName"
        ],
        "description": "The input payload for uploading a Personal AI memory."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "type": {
            "anyOf": [
              {
                "type": "string",
                "description": "The top-level response type returned by Personal AI."
              },
              {
                "type": "null"
              }
            ]
          },
          "memories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Personal AI memory item type."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "memlevel": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Personal AI memory level."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "memlabel": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The memory label generated by Personal AI."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "startTimeUtc": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The UTC start time for the memory item."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "source": {
                  "anyOf": [
                    {
                      "type": "object",
                      "properties": {
                        "type": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "The source type of the memory item."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "name": {
                          "anyOf": [
                            {
                              "type": "string",
                              "description": "The source name of the memory item."
                            },
                            {
                              "type": "null"
                            }
                          ]
                        }
                      },
                      "additionalProperties": false,
                      "description": "The source metadata associated with one memory item."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "topics": {
                  "anyOf": [
                    {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {},
                        "additionalProperties": true,
                        "description": "One topic attached to a Personal AI memory item."
                      },
                      "description": "The topics attached to the memory item."
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "additionalProperties": true,
              "description": "One memory item returned by Personal AI."
            },
            "description": "The memory items returned by Personal AI."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Personal AI response object."
          }
        },
        "additionalProperties": false,
        "description": "The response returned after uploading a memory."
      }
    },
    {
      "id": "personal_ai.upload_text_document",
      "service": "personal_ai",
      "name": "upload_text_document",
      "description": "Upload a text document to a Personal AI persona memory library.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The body text to upload as a document."
          },
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The hyphenated domain name of the target Personal AI persona."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The title of the uploaded document."
          },
          "startTime": {
            "type": "string",
            "description": "The UTC start timestamp for the document.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "The UTC end timestamp for the document.",
            "format": "date-time"
          },
          "tags": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-delimited tags for the document."
          },
          "isStack": {
            "type": "boolean",
            "description": "Whether to add the document to memory."
          }
        },
        "additionalProperties": false,
        "required": [
          "text",
          "domainName"
        ],
        "description": "The input payload for uploading a Personal AI text document."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The upload status message returned by Personal AI."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Personal AI response object."
          }
        },
        "additionalProperties": false,
        "description": "The status returned by a Personal AI upload endpoint."
      }
    },
    {
      "id": "personal_ai.upload_url",
      "service": "personal_ai",
      "name": "upload_url",
      "description": "Upload public URL content to a Personal AI persona memory library.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The public URL to upload.",
            "format": "uri"
          },
          "domainName": {
            "type": "string",
            "minLength": 1,
            "description": "The hyphenated domain name of the target Personal AI persona."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "The title of the uploaded content."
          },
          "startTime": {
            "type": "string",
            "description": "The UTC start timestamp for the content.",
            "format": "date-time"
          },
          "endTime": {
            "type": "string",
            "description": "The UTC end timestamp for the content.",
            "format": "date-time"
          },
          "tags": {
            "type": "string",
            "minLength": 1,
            "description": "Comma-delimited tags for the URL content."
          },
          "isStack": {
            "type": "boolean",
            "description": "Whether to add the URL content to memory."
          }
        },
        "additionalProperties": false,
        "required": [
          "url",
          "domainName"
        ],
        "description": "The input payload for uploading URL content to Personal AI."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "The upload status message returned by Personal AI."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Personal AI response object."
          }
        },
        "additionalProperties": false,
        "description": "The status returned by a Personal AI upload endpoint."
      }
    }
  ]
}
