diff --git a/.github/workflows/build_tools.yaml b/.github/workflows/build_tools.yaml index 477971df..81aad4fe 100644 --- a/.github/workflows/build_tools.yaml +++ b/.github/workflows/build_tools.yaml @@ -4,12 +4,12 @@ on: workflow_dispatch: inputs: node_version: - description: 'Shinkai Node version to use (e.g. 0.9.7)' + description: 'Shinkai Node version to use (e.g. 0.9.8)' required: true type: string - default: "0.9.7" + default: "0.9.8" use_dev_prefix: - description: 'Use dev prefix for download URL (e.g. https://download.shinkai.com/dev-tools-0.9.7)' + description: 'Use dev prefix for download URL (e.g. https://download.shinkai.com/dev-tools-0.9.7). If false, it will build for production (e.g. https://download.shinkai.com/tools-0.9.7)' required: true type: boolean default: true @@ -17,7 +17,6 @@ on: description: 'Have you run tests successfully?' required: true type: boolean - default: false jobs: build_tools: diff --git a/.github/workflows/run_tests.yaml b/.github/workflows/run_tests.yaml index 0892265d..851a27c4 100644 --- a/.github/workflows/run_tests.yaml +++ b/.github/workflows/run_tests.yaml @@ -10,10 +10,10 @@ on: workflow_dispatch: inputs: node_version: - description: 'Shinkai Node version to use (e.g. 0.9.7)' + description: 'Shinkai Node version to use (e.g. 0.9.8)' required: true type: string - default: "0.9.7" + default: "0.9.8" jobs: run_tests: @@ -60,7 +60,7 @@ jobs: SHINKAI_STORE_ADDR: "https://shinkai-store-302883622007.us-central1.run.app" SHINKAI_STORE_TOKEN: ${{ secrets.SHINKAI_STORE_TOKEN }} USE_DOCKER: true - SHINKAI_NODE_IMAGE: "dcsparkdevops/shinkai-node:${{ inputs.node_version || 'latest' }}" + SHINKAI_NODE_IMAGE: "dcsparkdevops/shinkai-node:${{ inputs.node_version || 'debug-latest' }}" run: | ./scripts/run_node.sh & timeout 60 bash -c 'until curl -s --location "$SHINKAI_NODE_ADDR/v2/health_check" | jq -e ".status == \"ok\"" > /dev/null; do sleep 1; done' diff --git a/README.md b/README.md index d2d3ec5d..21f75877 100644 --- a/README.md +++ b/README.md @@ -4,27 +4,101 @@ A collection of official tools for Shinkai, providing various functionalities fr ## Overview -This repository hosts a suite of tools designed to work with Shinkai's infrastructure +This repository hosts a suite of tools designed to work with Shinkai's infrastructure. Each tool is built to provide specific functionality while maintaining security and reliability through Shinkai's sandboxed environment. ## Available Tools Currently available tools include: -### 1. Email IMAP Fetcher -- Fetches emails from an IMAP server -- Returns subject, date, sender, and text content -- Secure email handling +### Search & Information +- **Smart Search**: Comprehensive answer generation with source citations and statement extraction +- **DuckDuckGo Search**: Web search functionality with structured results +- **Google Search**: Web search using Google's search engine +- **X/Twitter Search**: Search tweets and user information +- **YouTube Summary**: Generate summaries of YouTube video content +- **Perplexity**: AI-powered search and analysis +- **Perplexity API**: Direct integration with Perplexity's API -### 2. Email Sender -- Sends emails using SMTP -- Simple and reliable email dispatch +### Email & Communication +- **Email IMAP Fetcher**: Secure email retrieval from IMAP servers +- **Email Sender**: SMTP-based email dispatch service +- **Email Responder**: Automated email response generation with context awareness +- **Twitter Post**: Post updates to X/Twitter platform -### 3. Smart Search -- Performs intelligent query optimization -- Returns comprehensive answers with sources -- Advanced search capabilities +### File & Data Management +- **File Read**: Secure file reading operations +- **File Write**: File creation and update capabilities +- **File Update**: Modify existing file contents +- **Memory**: SQLite-based memory storage and retrieval +- **Download Page**: Web page content retrieval -And more! +### Blockchain & Crypto +- **Coinbase Call Faucet**: Interact with Coinbase faucet +- **Coinbase Create Wallet**: Wallet creation functionality +- **Coinbase Get Balance**: Check wallet balances +- **Coinbase Get My Address**: Retrieve wallet addresses +- **Coinbase Get Transactions**: View transaction history +- **Coinbase Send TX**: Execute transactions + +### Media & Content +- **Meme Generator**: Create custom meme images +- **Text-to-Audio Kokoro**: Convert text to audio using Kokoro + +## Tool Structure and Required Files + +Every Shinkai tool requires specific files to function properly. Here's a detailed look at each required file: + +### icon.png +- Square image in PNG format (1:1 ratio) +- Minimum dimensions: 80x80 pixels +- Used for tool identification in the Shinkai UI and Store +- Example: A distinctive icon representing the tool's primary function + +### banner.png +- Wide image in PNG format (16:9 ratio) +- Minimum dimensions: 1200x676 pixels +- Used for tool identification in the Shinkai UI and Store +- Example: A real world usage scenario that explains the tool benefits. + +### metadata.json +- Defines tool configuration and interface +- Contains version, name, description, and author +- Specifies input parameters and output format +- Example: +```json +{ + "version": "1.0.0", + "name": "Example Tool", + "description": "Brief description of the tool's purpose", + "parameters": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "Description of the input" + } + } + } +} +``` + +### tool.ts or tool.py +- Main implementation file (TypeScript or Python) +- Contains the core logic and functionality +- Exports a default function that processes inputs +- Example: +```typescript +export default async function(input: string): Promise { + // Tool implementation + return processedResult; +} +``` + +### README.md +- Documentation for tool usage and setup +- Installation and configuration instructions +- Examples of input/output formats +- Any additional requirements or dependencies ## Project Structure ``` @@ -33,9 +107,8 @@ tools/ │ ├── metadata.json # Tool metadata. │ ├── README.md # A description of the tool. │ └── tool.ts # The code of the tool. -├── packages/ -│ ├── tool.zip # Zipped contents of the tool. -│ └── directory.json # A listing of the available tools. +│ └── icon.png # Icon of the tool. +│ └── banner.png # Banner of the tool. ``` ## Run Tests diff --git a/scripts/build_tools/interfaces.ts b/scripts/build_tools/interfaces.ts index 9fcdf6ac..e13f71ce 100644 --- a/scripts/build_tools/interfaces.ts +++ b/scripts/build_tools/interfaces.ts @@ -40,6 +40,7 @@ export interface Metadata { name: string; query: string; }[]; + oauth: Record[] | null; } export interface DirectoryEntry { diff --git a/scripts/build_tools/save_tools.ts b/scripts/build_tools/save_tools.ts index 082acbe1..9bb11e75 100644 --- a/scripts/build_tools/save_tools.ts +++ b/scripts/build_tools/save_tools.ts @@ -42,7 +42,7 @@ async function buildToolJson( activated: false, assets: null, file_inbox: null, - oauth: null, + oauth: metadata.oauth, output_arg: { json: "" }, author, config: metadata.configurations?.properties ? diff --git a/tools/email-responder/metadata.json b/tools/email-responder/metadata.json index 61406c19..a2c066e3 100644 --- a/tools/email-responder/metadata.json +++ b/tools/email-responder/metadata.json @@ -94,5 +94,5 @@ "local:::__official_shinkai:::shinkai_llm_prompt_processor", "local:::__official_shinkai:::memory_management" ], - "oauth": [] + "oauth": null } diff --git a/tools/file-read/metadata.json b/tools/file-read/metadata.json index 7d66e92e..db8e6800 100644 --- a/tools/file-read/metadata.json +++ b/tools/file-read/metadata.json @@ -42,5 +42,5 @@ "sqlTables": [], "sqlQueries": [], "tools": [], - "oauth": [] + "oauth": null } diff --git a/tools/file-update/metadata.json b/tools/file-update/metadata.json index 2b34855f..81fe2e47 100644 --- a/tools/file-update/metadata.json +++ b/tools/file-update/metadata.json @@ -53,5 +53,5 @@ "tools": [ "local:::__official_shinkai:::shinkai_llm_prompt_processor" ], - "oauth": [] + "oauth": null } diff --git a/tools/file-write/metadata.json b/tools/file-write/metadata.json index 08538c76..039d4395 100644 --- a/tools/file-write/metadata.json +++ b/tools/file-write/metadata.json @@ -48,5 +48,5 @@ "sqlTables": [], "sqlQueries": [], "tools": [], - "oauth": [] + "oauth": null } diff --git a/tools/meme-generator/metadata.json b/tools/meme-generator/metadata.json index 44c1a723..41fb0279 100644 --- a/tools/meme-generator/metadata.json +++ b/tools/meme-generator/metadata.json @@ -57,5 +57,5 @@ "local:::__official_shinkai:::shinkai_llm_prompt_processor", "local:::__official_shinkai:::smart_search_engine" ], - "oauth": [] + "oauth": null } diff --git a/tools/memory/metadata.json b/tools/memory/metadata.json index ef94143f..b407cfd0 100644 --- a/tools/memory/metadata.json +++ b/tools/memory/metadata.json @@ -82,5 +82,5 @@ "local:::__official_shinkai:::shinkai_sqlite_query_executor", "local:::__official_shinkai:::shinkai_llm_prompt_processor" ], - "oauth": [] + "oauth": null } diff --git a/tools/text-to-audio-kokoro/metadata.json b/tools/text-to-audio-kokoro/metadata.json index 461beab5..a3075e17 100644 --- a/tools/text-to-audio-kokoro/metadata.json +++ b/tools/text-to-audio-kokoro/metadata.json @@ -29,8 +29,8 @@ }, "parameters": { "properties": { - "input_file": { - "description": "Path to the input text file (.txt or .md)", + "text": { + "description": "text to convert to audio", "type": "string" }, "voice": { @@ -58,7 +58,7 @@ } }, "required": [ - "input_file" + "text" ], "type": "object" }, diff --git a/tools/twitter-post/.tool-dump.test.json b/tools/twitter-post/.tool-dump.test.json index b669008a..1f547b6d 100644 --- a/tools/twitter-post/.tool-dump.test.json +++ b/tools/twitter-post/.tool-dump.test.json @@ -1 +1 @@ -{"type":"Deno","content":[{"name":"X/Twitter Post","homepage":null,"author":"@@official.shinkai","version":"1.0.0","js_code":"import { getAccessToken } from './shinkai-local-support.ts';\n\ntype CONFIG = {};\ntype INPUTS = {\n text: string;\n};\ntype OUTPUT = {\n};\n\nasync function postTweet(bearerToken: string, text: string) {\n try {\n const url = 'https://api.x.com/2/tweets';\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n text\n })\n });\n\n if (!response.ok) {\n throw new Error(`Server returned ${response.status} : ${response.statusText}`);\n }\n\n const data = await response.json();\n console.log('Tweet posted:', data);\n return data;\n } catch (error) {\n console.error('Error posting tweet:', error);\n return error;\n }\n}\n\nexport async function run(config: CONFIG, inputs: INPUTS): Promise {\n const accessToken = await getAccessToken(\"twitter\");\n return await postTweet(accessToken, inputs.text) \n \n}","tools":[],"config":[],"description":"Function to post a tweet to Twitter.","keywords":["twitter","X","post","social media"],"input_args":{"type":"object","properties":{"text":{"type":"string","description":"Message to post"}},"required":[]},"output_arg":{"json":""},"activated":false,"embedding":[0.29419714,0.044715993,-0.08472824,-0.3596148,-0.36112997,0.15024751,-1.2623692,-0.121126145,0.77052677,-0.37017107,-0.16201174,0.31220248,-0.30055413,0.39176568,0.5124255,-0.26926005,0.15670618,-0.73046976,-2.2530584,0.3636606,-0.033898905,0.9498287,0.16001835,-0.06474072,-0.13535833,-0.71190935,0.5164653,-0.11643411,-1.2358605,-1.8434762,-0.11914357,0.57179314,-0.7578084,0.19929647,0.69374394,-0.022813234,-0.29951274,-0.21268031,-0.2013212,-0.009402297,-0.3158564,-0.36339867,-0.4879111,0.2831961,0.04024005,-0.5270208,-0.14752552,-0.011943791,0.3792737,0.40871114,-0.11643243,0.088049315,-0.1277782,0.4180324,-0.43636012,-0.38454044,-0.54683834,-0.78648657,-0.120501876,0.3359043,0.09091974,0.15050812,-4.006941,0.16425066,0.10323948,-0.25754064,-0.2151339,0.28914413,0.04182141,0.24908453,0.17105037,0.08708035,-0.66422164,0.06742294,0.21523958,-0.62386143,0.0935224,-0.25304973,0.53362113,0.18905556,0.5708722,0.56157213,0.048643753,0.45824477,-0.2087765,0.9702601,-0.09159906,-0.1590894,0.22805968,0.15716055,-0.34179744,0.063115366,0.594624,0.025454536,-0.4344561,-0.05217436,-0.1868218,0.34382558,-0.16016203,2.82865,0.43440056,-0.05800135,0.44138947,-0.32553622,-0.38936338,-0.6070375,-0.41922307,-0.3135796,0.108748645,-0.42694464,0.30626154,-0.10109474,-0.30872914,-0.15280795,0.1772417,-0.20734647,-0.3601042,0.52435243,0.12257256,0.81574327,-0.14413372,0.32579726,-1.0713991,-0.36330524,0.0457186,0.4830694,-0.71091473,0.08492307,0.13647038,-0.379717,0.93933016,-0.43009916,-0.41034737,-0.2428742,-0.12712874,0.3875908,-0.1668361,-0.63553226,0.22324881,-0.9516078,0.79902184,-1.7406433,0.80949867,0.19679123,0.5604219,0.4102943,-0.4029207,0.15223569,-0.23493396,0.23202801,0.22541264,0.014303759,0.21514738,0.116437525,0.9375549,0.05035751,-0.23672463,0.27270472,-0.24712498,0.29996613,-0.010596193,0.19327301,0.6766656,-0.5047528,0.19519088,-0.4474276,0.56735694,0.09896499,0.23621273,0.26490048,0.14887121,-0.34912395,-0.48643515,-0.23250854,-0.7485843,-0.137696,-0.18337977,-0.13316348,0.44284937,-0.20742796,-0.046476863,0.77154535,-0.5321926,0.014208667,0.012658723,0.26622802,0.42434698,-0.47068143,1.2717874,0.93188083,-0.18027046,1.7090449,-0.60502464,-0.36471626,-0.011204759,0.28025222,0.40935487,0.23459491,0.24156676,-0.3409424,-0.19756469,-0.3637474,0.18950611,-0.15835868,-0.54429823,0.12133555,0.6099043,0.15715697,-0.012424201,-0.29890603,0.30494294,-1.0671118,0.88555133,0.4495837,0.20615022,0.454822,-0.54320985,0.01971152,0.07012211,0.4699293,-0.36536208,0.8973122,-0.387295,-0.45881307,0.072395936,-0.33614922,-0.0725991,0.41578442,-0.06418067,-0.82547206,-0.21681076,0.8719808,0.22767767,1.4693404,0.71987325,0.2770809,-0.06354501,0.5963483,0.47952548,-0.49264014,0.011498023,0.44711232,-0.23695198,-0.15026173,0.22333407,-0.46678695,0.10244906,0.14141294,0.22144197,1.9264159,0.35488817,0.41005185,0.6202181,0.14869116,0.0139815435,-0.03291077,-2.1207616,-0.48612395,0.40433466,0.99482816,0.057316333,0.0039962977,0.75820124,-0.54542613,-0.39531094,-0.17068966,-0.20408405,-0.15370443,-0.110939845,-0.46126443,-0.81662947,0.7300637,0.11019997,-0.09730152,0.27788624,-0.14311525,-0.1176595,-0.13340983,-0.447568,-0.28585696,-0.47312766,0.06296199,0.40357333,0.056495488,-0.32727665,-0.54304916,-0.12912714,-0.18226904,0.50688875,-0.17452028,0.46717507,-0.5643217,-0.32895708,0.68992907,2.2128012,0.43460926,0.46618843,0.3944058,-0.00062801363,-0.21960413,-0.40231666,-0.13423616,-0.41995904,-0.591948,-0.9467548,-0.61205685,-0.019867279,-1.2693332,-0.07228962,-0.37074643,0.7909676,0.21913329,0.24579507,-0.21514991,0.64402825,-0.3345985,-0.38395765,0.31597155,0.16844665,-1.744025,0.4567633,0.48296988,-0.19717345,-0.22542816,0.022329276,0.18946815,0.014143743,0.874953,-0.39511406,1.6363496,0.3868573,-0.08653911,0.37638536,0.16625756,0.76850057,0.4763102,-0.18387854,-0.13253114,-1.3588253,-0.33952194,0.39177516,1.9236274,0.08391233,0.8615971,-0.035699055,-0.31430334,-0.3715813,-1.3998227,0.31499055,-0.46776152,-0.26938713,0.29946306,-0.30137652,-0.1607413,-0.1287726,1.0444766,0.16131504,-0.5219927,0.18575463,1.7399775,0.23048593,-0.14185868,-0.16977552,-0.0639839,-0.1788536,0.073234275,-0.29821315,-0.7691495,-0.4397285,0.5939721,0.4550734,-0.30991054,-0.35431036,0.2671051,0.33360326,0.23753506,0.32892624,0.90872693,0.5848144,0.29101217,0.6047823,0.17691815,-0.9592336,-0.30221337],"result":{"type":"object","properties":{"data":{"description":"The data returned by the Twitter API","type":"string"}},"required":["data"]},"sql_tables":[],"sql_queries":[],"file_inbox":null,"oauth":null,"assets":null},false]} \ No newline at end of file +{"type":"Deno","content":[{"name":"X/Twitter Post","homepage":null,"author":"@@official.shinkai","version":"1.0.0","js_code":"import { getAccessToken } from './shinkai-local-support.ts';\n\ntype CONFIG = {};\ntype INPUTS = {\n text: string;\n};\ntype OUTPUT = {\n};\n\nasync function postTweet(bearerToken: string, text: string) {\n try {\n const url = 'https://api.x.com/2/tweets';\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Authorization': `Bearer ${bearerToken}`,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n text\n })\n });\n\n if (!response.ok) {\n throw new Error(`Server returned ${response.status} : ${response.statusText}`);\n }\n\n const data = await response.json();\n console.log('Tweet posted:', data);\n return data;\n } catch (error) {\n console.error('Error posting tweet:', error);\n return error;\n }\n}\n\nexport async function run(config: CONFIG, inputs: INPUTS): Promise {\n const accessToken = await getAccessToken(\"twitter\");\n return await postTweet(accessToken, inputs.text) \n \n}","tools":[],"config":[],"description":"Function to post a tweet to Twitter.","keywords":["twitter","X","post","social media"],"input_args":{"type":"object","properties":{"text":{"type":"string","description":"Message to post"}},"required":[]},"output_arg":{"json":""},"activated":false,"embedding":[0.29419714,0.044715993,-0.08472824,-0.3596148,-0.36112997,0.15024751,-1.2623692,-0.121126145,0.77052677,-0.37017107,-0.16201174,0.31220248,-0.30055413,0.39176568,0.5124255,-0.26926005,0.15670618,-0.73046976,-2.2530584,0.3636606,-0.033898905,0.9498287,0.16001835,-0.06474072,-0.13535833,-0.71190935,0.5164653,-0.11643411,-1.2358605,-1.8434762,-0.11914357,0.57179314,-0.7578084,0.19929647,0.69374394,-0.022813234,-0.29951274,-0.21268031,-0.2013212,-0.009402297,-0.3158564,-0.36339867,-0.4879111,0.2831961,0.04024005,-0.5270208,-0.14752552,-0.011943791,0.3792737,0.40871114,-0.11643243,0.088049315,-0.1277782,0.4180324,-0.43636012,-0.38454044,-0.54683834,-0.78648657,-0.120501876,0.3359043,0.09091974,0.15050812,-4.006941,0.16425066,0.10323948,-0.25754064,-0.2151339,0.28914413,0.04182141,0.24908453,0.17105037,0.08708035,-0.66422164,0.06742294,0.21523958,-0.62386143,0.0935224,-0.25304973,0.53362113,0.18905556,0.5708722,0.56157213,0.048643753,0.45824477,-0.2087765,0.9702601,-0.09159906,-0.1590894,0.22805968,0.15716055,-0.34179744,0.063115366,0.594624,0.025454536,-0.4344561,-0.05217436,-0.1868218,0.34382558,-0.16016203,2.82865,0.43440056,-0.05800135,0.44138947,-0.32553622,-0.38936338,-0.6070375,-0.41922307,-0.3135796,0.108748645,-0.42694464,0.30626154,-0.10109474,-0.30872914,-0.15280795,0.1772417,-0.20734647,-0.3601042,0.52435243,0.12257256,0.81574327,-0.14413372,0.32579726,-1.0713991,-0.36330524,0.0457186,0.4830694,-0.71091473,0.08492307,0.13647038,-0.379717,0.93933016,-0.43009916,-0.41034737,-0.2428742,-0.12712874,0.3875908,-0.1668361,-0.63553226,0.22324881,-0.9516078,0.79902184,-1.7406433,0.80949867,0.19679123,0.5604219,0.4102943,-0.4029207,0.15223569,-0.23493396,0.23202801,0.22541264,0.014303759,0.21514738,0.116437525,0.9375549,0.05035751,-0.23672463,0.27270472,-0.24712498,0.29996613,-0.010596193,0.19327301,0.6766656,-0.5047528,0.19519088,-0.4474276,0.56735694,0.09896499,0.23621273,0.26490048,0.14887121,-0.34912395,-0.48643515,-0.23250854,-0.7485843,-0.137696,-0.18337977,-0.13316348,0.44284937,-0.20742796,-0.046476863,0.77154535,-0.5321926,0.014208667,0.012658723,0.26622802,0.42434698,-0.47068143,1.2717874,0.93188083,-0.18027046,1.7090449,-0.60502464,-0.36471626,-0.011204759,0.28025222,0.40935487,0.23459491,0.24156676,-0.3409424,-0.19756469,-0.3637474,0.18950611,-0.15835868,-0.54429823,0.12133555,0.6099043,0.15715697,-0.012424201,-0.29890603,0.30494294,-1.0671118,0.88555133,0.4495837,0.20615022,0.454822,-0.54320985,0.01971152,0.07012211,0.4699293,-0.36536208,0.8973122,-0.387295,-0.45881307,0.072395936,-0.33614922,-0.0725991,0.41578442,-0.06418067,-0.82547206,-0.21681076,0.8719808,0.22767767,1.4693404,0.71987325,0.2770809,-0.06354501,0.5963483,0.47952548,-0.49264014,0.011498023,0.44711232,-0.23695198,-0.15026173,0.22333407,-0.46678695,0.10244906,0.14141294,0.22144197,1.9264159,0.35488817,0.41005185,0.6202181,0.14869116,0.0139815435,-0.03291077,-2.1207616,-0.48612395,0.40433466,0.99482816,0.057316333,0.0039962977,0.75820124,-0.54542613,-0.39531094,-0.17068966,-0.20408405,-0.15370443,-0.110939845,-0.46126443,-0.81662947,0.7300637,0.11019997,-0.09730152,0.27788624,-0.14311525,-0.1176595,-0.13340983,-0.447568,-0.28585696,-0.47312766,0.06296199,0.40357333,0.056495488,-0.32727665,-0.54304916,-0.12912714,-0.18226904,0.50688875,-0.17452028,0.46717507,-0.5643217,-0.32895708,0.68992907,2.2128012,0.43460926,0.46618843,0.3944058,-0.00062801363,-0.21960413,-0.40231666,-0.13423616,-0.41995904,-0.591948,-0.9467548,-0.61205685,-0.019867279,-1.2693332,-0.07228962,-0.37074643,0.7909676,0.21913329,0.24579507,-0.21514991,0.64402825,-0.3345985,-0.38395765,0.31597155,0.16844665,-1.744025,0.4567633,0.48296988,-0.19717345,-0.22542816,0.022329276,0.18946815,0.014143743,0.874953,-0.39511406,1.6363496,0.3868573,-0.08653911,0.37638536,0.16625756,0.76850057,0.4763102,-0.18387854,-0.13253114,-1.3588253,-0.33952194,0.39177516,1.9236274,0.08391233,0.8615971,-0.035699055,-0.31430334,-0.3715813,-1.3998227,0.31499055,-0.46776152,-0.26938713,0.29946306,-0.30137652,-0.1607413,-0.1287726,1.0444766,0.16131504,-0.5219927,0.18575463,1.7399775,0.23048593,-0.14185868,-0.16977552,-0.0639839,-0.1788536,0.073234275,-0.29821315,-0.7691495,-0.4397285,0.5939721,0.4550734,-0.30991054,-0.35431036,0.2671051,0.33360326,0.23753506,0.32892624,0.90872693,0.5848144,0.29101217,0.6047823,0.17691815,-0.9592336,-0.30221337],"result":{"type":"object","properties":{"data":{"description":"The data returned by the Twitter API","type":"string"}},"required":["data"]},"sql_tables":[],"sql_queries":[],"file_inbox":null,"oauth":[{"name":"twitter","authorizationUrl":"https://twitter.com/i/oauth2/authorize","tokenUrl":"https://api.x.com/2/oauth2/token","clientId":"","clientSecret":"","redirectUrl":"https://secrets.shinkai.com/redirect","version":"2.0","responseType":"code","scopes":["tweet.read","tweet.write","users.read","offline.access"],"pkceType":"plain","refreshToken":"true"}],"assets":null},false]} diff --git a/tools/youtube-summary/metadata.json b/tools/youtube-summary/metadata.json index 55c54a3b..3d0db687 100644 --- a/tools/youtube-summary/metadata.json +++ b/tools/youtube-summary/metadata.json @@ -49,5 +49,5 @@ "tools": [ "local:::__official_shinkai:::shinkai_llm_prompt_processor" ], - "oauth": [] + "oauth": null }