AgentMark combines markdown-like syntax with JSX components to create powerful, dynamic prompts. It provides a flexible way to structure prompts while supporting advanced features like conditionals, loops, and dynamic content.
Basic Structure
AgentMark files (.prompt.mdx) can be configured for multiple generation types. Read more about generation types.
Here’s an example of a text generation prompt:
---
name: example
text_config:
model_name: gpt-4
temperature: 0.7
max_tokens: 1000
---
<System>You are a helpful assistant.</System>
<User>Hello!</User>
<Assistant>Hi there! How can I help you today?</Assistant>
Here’s an example of an object generation prompt:
---
name: example
object_config:
model_name: gpt-4
schema:
type: object
properties:
result:
type: string
description: The generated result
required: ["result"]
---
<System>You are a helpful assistant.</System>
<User>Hello!</User>
Dynamic Content
Props and Variables
Access variables using the props object:
<System>
Respond in {props.language} at a {props.difficulty} level.
</System>
Learn more about using props.
Conditional Logic
Use <If>, <ElseIf>, and <Else> for dynamic content:
<If condition={props.userType === "admin"}>
Include technical details.
</If>
Learn more about conditionals.
Loops
Iterate over arrays using <ForEach>:
<ForEach arr={props.items}>
{(item) => <User>{item.message}</User>}
</ForEach>
Learn more about loops.
Extend functionality with custom tools (inline or via MCP):
text_config:
max_calls: 3
tools:
calculate:
description: "Performs calculations"
parameters:
type: object
properties:
expression:
type: string
search: mcp://docs/web-search
Learn more about tools and agents.
Reusable Components
Import and reuse prompt components:
import MathInstructions from './math-instructions.mdx';
<System>
<MathInstructions level={props.difficulty} />
</System>
Learn more about reusable components.
Filter Functions
Transform values using built-in or custom filters:
Your name is {capitalize(props.name)}
Learn more about filter functions.
File Attachments
Include files and images in your prompts:
<User>
<ImageAttachment image={props.imageLink} />
<FileAttachment data={props.fileUrl} mimeType={props.fileMimeType} />
</User>
Learn more about file attachments.
Have Questions?
We’re here to help! Choose the best way to reach us: