Tools
Create Reusable AI Tools that you can write once and use over and over
What is a Tool?
A Tool is either a reusable prompt or a call to an external API. It's a set of detailed instructions for Steve on how to do something, can include variables like data from the current page or from the user, and can write data to external systems. So any time you have a task that you do repetitively, that requires very detailed instructions that you don't want to type in every time, or that needs to interact with external systems or logic, make a Tool.
Here's a simple example LLM Tool that instructs Steve to suggest visuals for some text that was written.
Name: Suggest accompanying visuals
Instructions: I'm writing some text and I'd like you to suggest some visuals to accompany it that will help reinforce and illustrate my key concepts and messages.
Here is the text that I've written: [[Text to Analyze]]
Can you list some visuals (tables, graphs, infographics, etc.) that would add value and comprehensibility to this article. Describe each one in detail. Thanks!
Note that [[Text to Analyze]] is a variable that grabs the text selected on a page, or the whole page if there is no selected text, so you can use the same Tool on any page or selected text without having to edit it!
Make a Tool once and then you can access it from anywhere in Ask Steve including the Context Menu, the Chat, the Writing Helper, and Tool Buttons.
Technically, an LLM Tool is just a set of instructions written to Steve in English. When writing an LLM Tool, you should treat Steve like you would a human intern, and provide very specific and detailed instructions.
LLM Tools can also optionally write their output to an external system like Google Sheets, Google Docs, Microsoft Word, or Airtable. This enables you to quickly build AI-powered data scrapers that can pull the exact data you want off a page and capture it for you.
API Tools make calls to an API that you have created, either with code or with a visual workflow builder like n8n, Make, Activepieces, Pipedream or Zapier. To learn how to create API Tools, visit Calling APIs and Webhooks.
Steve has 100+ Tools in the Tool Library which you can access from the extension options. You can see all the Tools you have installed by clicking on the purple lightning bolt tab to open the Ask Steve sidepanel and then clicking ⚡Tools
.
Adding Tools
- You can add more Tools from our Tool Library
- You can also install customized Packs of Tools
How do I Create a New Tool?
- From the ⚡Tools tab in the sidepanel, press the
NEW
button. - Type in a
Name
for your Tool - If you want the Tool to appear as a button on every page that you can trigger with 1 click, then check
Add Button
. - Add your
Instructions
. - Press the
RUN
button to try out your Tool on the current page or selection. If it doesn't do what you want, then change it and keep iterating until it works the way you want it to.
This ability to quickly iterate on your Tool until it does what you want is part of what makes Ask Steve so powerful! - Hit
SAVE
. Congratulations! Your Tool is now available to use.
Tool Buttons
- You can easily add a button for your Tool to the browser, so you have 1-click access to it on any site. Learn how on the Tool Buttons page.
Tool Description
- If you open the
Description
section, you can also add a description of what your Tool does and assign it a Category. These can be useful to remind yourself what a Tool does, and are also helpful when sharing Tools with others.
Scrapers and APIs
If you open the Scrapers and APIs
section you can pick whether this Tool calls an LLM or an API. Depending on what you pick, you'll have the following options.
- LLM Tools
Write results to:
By default your Tool will write its results to your screen, either in a floating panel, in the chat, or into a control on the web page that you're on. You can also have the output written to an external file. You can see a list of all the supported services here
- From the
Write results to:
list, select a Connection. If you need to create a new connection, click on the gear icon. - Select the document or object (and if applicable subdocument or subobject) that you want to write the output to.
- An "Update Prompt" button will appear if this is a structured document or object. Press this and Ask Steve will automatically generate a prompt that will format the output for your document or object. You can modify this prompt to give the LLM extra hints or instructions.
- If it's an unstructured document, like a Google Doc, a Google Chat message, a Slack message or a Notion page, whatever data your Tool outputs will be written to the document.
Save
the Tool and try it out on some data!
Override model with:
By default your Tool will use whatever model is currently selected on the Models page. You can assign a specific model to your Tool here. This is useful when you've identified certain models as better or more cost-effective for certain tasks.
- API Tools
Read more about how to configure API/Webhook tools here
Editing a Tool
Select the Tool that you want to update, make your desired changes, then press the SAVE
button.
Deleting a Tool
- Select the Tool you want to delete, press the trashcan icon in the lower left corner and then confirm deletion.
- If you want to delete a bunch of Tools at once, you can do so from the Import/Export page.
- You should feel free to delete any Tools that you don't want or need! You can always add them back later from the Tool Library.
- Backup any of your custom Tools by exporting them.
Page Variables
Tools are most valuable when they're able to take information from the page that you're on and use it. The way we do that is with Page Variables. You can add a Page Variable to your Tool by typing in something surrounded by [[double brackets]]
. When Steve sees this, he knows that he needs to grab some information from the page - either whatever text is selected or the whole page if nothing is selected. See the simple example below:
Pretend that I'm a junior high school student and you are an award winning teacher. Explain the following to me in clear and understandable language: [[Text to explain]]
This Tool has one Page Variable, "Text to explain". You can have up to 10 Page Variables in a Tool. Here's a more complicated example where the Tool will need to grab multiple pieces of data from the page:
Write me a summary of this accident. Here are the details:
The car make is: [[Car Make]], the model is: [[Car Model]] and the year is: [[Car Year]]. The accident happened on [[Accident Date]] in the city of [[Accident City]]
This Tool will take 5 pieces of data from the page and use them to write a summary. Take a look at the various Tools that ship with Steve, and try adding your own!
NOTE: Any Tool with more than 1 Page Variable can only be used by Tool Buttons. This is because only Buttons can grab more than one piece of content from a page.
User Variables
Sometimes you will want to create a Tool that requests information from the user, and you can do that with User Variables. User Variables are surrounded by {{double curly braces}}
in your Tools. When you trigger the Tool, Steve will ask you to fill in the variable and then will use the Tool. User Variables are free text by default, and you can have as many of them as you want.
A good example here would be a recruiter who is recruiting for multiple positions. They can create one "Write a candidate outreach" Tool and attach a Tool Button for it to a page. Then when they press the button, it can ask them for the specific Job Requisition, which they can paste in. That way they don't have to create a different Tool for each job they're trying to fill. Here's an example of what that might look like:
Your name is Riley Hunter and you're a recruiter at Roadrunner Software. You are reaching out to a candidate about a requisition that you're trying to fill.
This is the job requisition: {{Job Requisition}} and this is the candidate's resume page: [[Resume Page]]
Please write me a personalized outreach letter to the candidate that explains why they'd be a good fit for this job.
You can see in this example that the candidate's resume is being pulled from the current page, and then Steve will ask the recruiter for the Job Requisition.
Multiple Choice in User Variables
If you want to give users options to select from instead of a free text field, you can do so as follows:
- If you want the user to pick a single option, put them in a pipe-separated list inside parens after the User Variable, like this:
{{Pick a color}}(Red|Blue|Yellow|Green)
. If there are 5 or less options, Steve will show them as radio buttons. If there are more than 5, Steve will show the options in a dropdown list. The value of the User Variable will be whatever option was picked. - If you want the user to be able to pick multiple options, put them in a double-pipe-separated list, like this:
{{What days are you available?}}(Sunday||Monday||Tuesday||Wednesday||Thursday||Friday||Saturday)
. Steve will show the options as checkboxes. The value of the User Variable will be an array of the selected options.
System Variables
There are times when you want to send system data to your tool, including things like the time and date, the URL of the current page, etc. The following System Variables can be sent to your Tool if you include them in your instructions in single brackets, e.g. [_url], [_html], [_timestamp].
- _date: has the human-readable date as returned by
new Date().toLocaleDateString()
- _html: has a stripped down version of the HTML of the current page. Most non-text nodes are removed. This is helpful if you need to do some analysis of the page structure.
- _imageUrls: has an array that contains the urls for all the images on the page.
- _language: has the language of the browser making the API call, as returned by navigator.language
- _links: is an array that contains one object for every link on the page or in the currently selected text. The array looks like
[{"text": "Text of the link", "url": "https://something...}, ...]
- _os: has the operating system of the computer making the API call, as returned by chrome.runtime.getPlatformInfo
- _preferences: has the user's Preferences.
- _prompt: has the full prompt - so all the text in the Tool with all the variables replaced, as if you were sending a single prompt to an LLM. All page and user-input variables will be replaced, and all System Variables will be removed.
- _toolName: has the name of the Tool being called.
- _time: has the human-readable time as returned by
new Date().toLocaleTimeString()
- _timestamp: has the timestamp of the API call. This is a numeric value (integer) representing the number of milliseconds since the Unix epoch, as returned by the Javascript
Date.now()
function. - _title: has the title of the current page.
- _url: has the URL of the current page.
- _userAgent: has the user agent of the browser making the API call, as returned by navigator.userAgent
Example Instructions: Repeat this exactly: On [_date] at [_time] from [_url] I captured the following text: [[page text]]
Premium Features
- You can write to many external services for free, but some require a Premium plan.
- Calling APIs or Webhooks requires a Premium plan.
Tips for Writing Good LLM Tools
- Look at all the Tools that Steve ships with and use those as a starting point.
- Tell Steve who he is, what he does, and that he's good at it. Even AI interns like positive reinforcement!
You are a superstar recruiter named Riley Hunter and you work at Roadrunner Software.
- Be very precise and descriptive with your instructions
- If you're writing a long or complex Tool, put the text that you want processed or analyzed near the beginning, then give the detailed instructions about what to do with it.
- If you can provide examples for Steve to learn from, that is ideal. Give Steve examples of the INPUT that you want to give him, and the kind of OUTPUT that each INPUT should generate.
- Experiment & iterate! Writing good Tools is about trying different things and approaches until Steve gives you the results that you want!
- If you really want to go deep on how to write good LLM prompts (which is basically what a Tool is), then there are plenty of online resources. Try this one!
How do I Use a Tool?
- By pinning the Tool so that it appears on every page as a Tool Button and then pressing it.
- By selecting some text on a page and then bringing up the Chrome Context-Menu (right-click) and selecting
"Ask Steve to..."
and then a Tool. Or if you want Steve to help with the whole page, just right-click anywhere on the page. - From the Chat you can press the lightning bolt icon and then either select a Tool from the dropdown or start typing its name and then selecting it. (A shortcut is to click into the Chat field and press the
SPACE
key and then start typing the name of the Tool) - By bringing up the Writing Helper in an editable text field and either selecting the Tool from the dropdown or starting to type in its name and then selecting it.
Pro-Tips
- You can use emoji in Tool names. Tool Buttons will try to use an emoji if there is one in the name, otherwise it will use the first number or letter in the name.
- When filling out the User Variables dialog, pressing
COMMAND-ENTER
(Mac) orCONTROL-ENTER
(Windows or ChromeOS) in a free text field will submit it.