Agents
Create 1-Click AI Agents for Your Browser with Ask Steve
What is an Agent?
An Agent is just a simple AI that does something for you - summarizing, analyzing, translating, writing, converting, etc. so that you can spend less time doing grunt work. Tactically, it's a set of detailed instructions on what you want done, 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 an Agent!
Here's a simple example Agent 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 Agent on any page or selected text without having to edit it!
Make an Agent once and then you can access it from anywhere in Ask Steve including the Context Menu, the Chat, the Writing Helper, and Agent Buttons.
Technically, an Agent is just a set of instructions written in English. When writing an Agent, you should treat the AI like you would a human intern, and provide very specific and detailed instructions.
Agents 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 extractors that can pull the exact data you want off a page and capture it for you.
Agents can also make calls to any 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 Agents that call APIs, visit Calling APIs and Webhooks.
Steve has 100+ Agents in the Agent Library which you can access from the extension options. You can see all the Agents you have installed by clicking on the purple lightning bolt tab to open the Ask Steve sidepanel and then clicking ⚡Agents
.
Adding Agents
- You can add more Agents from our Agent Library
- You can also install customized Packs of Agents
How do I Create a New Agent?
- From the ⚡Agents tab in the sidepanel, press the
NEW
button. - Type in a
Name
for your Agent - If you want the Agent 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 Agent 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 Agent until it does what you want is part of what makes Ask Steve so powerful! - Hit
SAVE
. Congratulations! Your Agent is now available to use.
Agent Buttons
- You can easily add a button for your Agent to the browser, so you have 1-click access to it on any site. Learn how on the Agent Buttons page.
Agent Description
- If you open the
Description
section, you can also add a description of what your Agent does and assign it a Category. These can be useful to remind yourself what an Agent does, and are also helpful when sharing Agents with others.
Connections and APIs
If you open the Connections and APIs
section you can pick whether this Agent calls an LLM or an API. Depending on what you pick, you'll have the following options.
- LLM Agents
Write results to:
By default your Agent 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 service. 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.
- A "Generate 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, based on the fields or headers in your document or object. You can then 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 Agent outputs will be written to the document.
Save
the Agent and try it out on some data!
Advanced Settings
- Structured documents will show an
Advanced Settings
link that you can click on to configure how new data is added to your document. - Append always add new records to the end of the document
- Update Empty Fields looks for existing records that match the fields that you pick, and if it finds any it does not add a new record, but it will update any empty fields if it has data to do so. Anything that isn't matched is added as normal. This is useful to prevent duplicates. Note that this can take a lot longer since it's doing a lot more work.
Override model with:
By default your Agent will use whatever LLM model is currently selected on the Models page. You can assign a specific model to your Agent here. This is useful when you've identified certain models as better or more cost-effective for certain tasks.
- API Agents
Read more about how to configure API/Webhook Agents here
Editing an Agent
Select the Agent that you want to update, make your desired changes, then press the SAVE
button.
Deleting an Agent
- Select the Agent 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 Agents at once, you can do so from the Manage Agents page.
- You should feel free to delete any Agents that you don't want or need! You can always add them back later from the Agent Library.
- Backup any of your custom Agents by exporting them.
Page Variables
Agents 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 Agent by typing in something surrounded by [[double brackets]]
. When your Agent sees this, it knows that it 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 Agent has one Page Variable, "Text to explain". You can have up to 10 Page Variables in an Agent. Here's a more complicated example where the Agent 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 Agent will take 5 pieces of data from the page and use them to write a summary. Take a look at the various Agents that ship with Steve, and try adding your own!
NOTE: Any Agent with more than 1 Page Variable can only be used by Agent 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 an Agent that requests information from the user, and you can do that with User Variables. User Variables are surrounded by {{double curly braces}}
in your Agent instructions. When you trigger the Agent, Steve will ask you to fill in the variable and then will send that data to the Agent. 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" Agent and attach a Agent 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 Agent 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 the Agent 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, your Agent will show them as radio buttons. If there are more than 5, your Agent 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)
. Your Agent will show the options as checkboxes. The value of the User Variable will be an array of the selected options. - If you just want a single checkbox, then just put one option inside the parens, like this:
{{Add the URL?}}(Yes)
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 Agent 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: is an array that contains one object for each image on the page. The array looks like
[{"alt": "Alt text of the image", "url": "https://something..."}, ...]
- _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 Agent's instructions 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.
- _agentName: has the name of the Agent 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]]
Tips for Making Great Agents
- Look at all the Agents that Ask Steve ships with and use those as a starting point.
- Tell your Agent who they are, what they do, and that they're 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 Agent, 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 your Agent to learn from, that is ideal. Give your Agent examples of the INPUT that you're going to give them, and the kind of OUTPUT that each INPUT should generate.
- Experiment & iterate! Writing good Agents is about trying different things and approaches until your Agent 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 an Agent is), then there are plenty of online resources. Try this one!
How do I Use an Agent?
- By pinning the Agent so that it appears on every page as an Agent 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 an Agent. Or if you want your Agent 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 an Agent 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 Agent) - By bringing up the Writing Helper in an editable text field and either selecting the Agent from the dropdown or starting to type in its name and then selecting it.
- By opening the Ask Steve sidepanel, then selecting your Agent on the
⚡Agents
tab and pressing theRUN
button at the bottom.
Advanced Agent Properties
The following properties are not accessible via the Ask Steve interface, and can only be added or edited in an Agent's JSON file. You can export the JSON file for an Agent, edit it, and then re-import it from the Manage Agents page.
- addGrounding: (true/false) Indicates whether the Agent should use Google Gemini's grounding capability. This is currently only used by the Free Fact Checker Agent
- cookieRequired: (object) Indicates that the specified cookie is required to run this Agent. If the cookie is not present or has expired or has an empty value, the Agent will not run. If you are calling a Webhook/API then a variable with the name and value of the cookie will be sent to the Webhook/API. The format of the object is as follows:
{ "url": "The url for the cookie", "name": "The name of the cookie", "errorMessage": "Your error message, can include HTML to link to your site"}
- selectionRequired: (true/false) Indicates whether the Agent only works with a text selection (instead of a whole page)
Pro-Tips
- You can use emoji in Agent names. Agent 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.