Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 12 additions & 2 deletions .github/workflows/docs-check.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -45,14 +45,24 @@ jobs:
fi
cat changed_files.txt

- name: Enforce docs update
- name: Check for changes in stable docs
run: |
if grep -qE '^docs/stable/' changed_files.txt; then
echo "❌ Changes to 'stable' documentation are not allowed in this PR."
echo " Please make changes in the 'development' directory instead."
exit 1
else
echo "✅ No changes found in 'stable' docs."
fi

- name: Enforce docs update in development
run: |
if [ "${{ steps.skip.outputs.skip }}" = "true" ]; then
echo "🟡 Skipping docs check (No Docs Needed checked)."
exit 0
fi

if grep -qE '^(docs/|CONTRIBUTING\.md$|README\.md$|CODE_OF_CONDUCT\.md$)' changed_files.txt; then
if grep -qE '^(docs/development/|docs/docs.json$|docs/package.json$|docs/tasks.toml$|CONTRIBUTING\.md$|README\.md$|CODE_OF_CONDUCT\.md$)' changed_files.txt; then
echo "✅ Docs updated."
else
echo "❌ No docs changes found and 'No Docs Needed' not checked."
Expand Down
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
{
"python.terminal.activateEnvironment": false
"python.terminal.activateEnvironment": false,
"debug.javascript.defaultRuntimeExecutable": {
"pwa-node": "/Users/jp/.local/share/mise/shims/node"
}
}
File renamed without changes.
File renamed without changes.
File renamed without changes
File renamed without changes
File renamed without changes
174 changes: 121 additions & 53 deletions docs/docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,64 +9,132 @@
},
"favicon": "/favicon.svg",
"navigation": {
"groups": [
"versions": [
{
"group": "Introduction",
"pages": ["introduction/welcome", "introduction/quickstart"]
},
{
"group": "Deploy Agents",
"pages": [
"deploy-agents/wrap-existing-agents",
"deploy-agents/building-agents",
"deploy-agents/deploy-your-agents"
"version": "stable",
"groups": [
{
"group": "Introduction",
"pages": ["stable/introduction/welcome", "stable/introduction/quickstart"]
},
{
"group": "Deploy Agents",
"pages": [
"stable/deploy-agents/wrap-existing-agents",
"stable/deploy-agents/building-agents",
"stable/deploy-agents/deploy-your-agents"
]
},
{
"group": "Agent Capabilities",
"pages": [
"stable/agent-development/overview",
"stable/agent-development/messages",
"stable/agent-development/multi-turn",
"stable/agent-development/files",
"stable/agent-development/agent-details",
"stable/agent-development/llm-proxy-service",
"stable/agent-development/trajectory",
"stable/agent-development/citations",
"stable/agent-development/forms",
"stable/agent-development/agent-settings",
"stable/agent-development/secrets",
"stable/agent-development/rag",
"stable/agent-development/mcp-oauth",
"stable/agent-development/mcp",
"stable/agent-development/env-variables",
"stable/agent-development/error",
"stable/agent-development/tool-calls"
]
},
{
"group": "Reference",
"pages": ["stable/reference/cli-reference"]
},
{
"group": "Deploy Agent Stack",
"pages": [
"stable/deploy-agent-stack/deployment-guide",
"stable/deploy-agent-stack/authenticate-cli-to-server",
"stable/deploy-agent-stack/observability"
]
},
{
"group": "Custom UI Integration",
"pages": ["stable/custom-ui/client-sdk", "stable/custom-ui/permissions-and-tokens"]
},
{
"group": "Experimental",
"pages": ["stable/experimental/connectors", "stable/experimental/a2a-proxy"]
},
{
"group": "Community",
"pages": ["stable/community/contribute"]
}
]
},
{
"group": "Agent Capabilities",
"pages": [
"agent-development/overview",
"agent-development/messages",
"agent-development/multi-turn",
"agent-development/files",
"agent-development/agent-details",
"agent-development/llm-proxy-service",
"agent-development/trajectory",
"agent-development/citations",
"agent-development/forms",
"agent-development/agent-settings",
"agent-development/secrets",
"agent-development/rag",
"agent-development/mcp-oauth",
"agent-development/mcp",
"agent-development/env-variables",
"agent-development/error",
"agent-development/tool-calls"
]
},
{
"group": "Reference",
"pages": ["reference/cli-reference"]
},
{
"group": "Deploy Agent Stack",
"pages": [
"deploy-agent-stack/deployment-guide",
"deploy-agent-stack/authenticate-cli-to-server",
"deploy-agent-stack/observability"
"version": "development",
"groups": [
{
"group": "Introduction",
"pages": ["development/introduction/welcome", "development/introduction/quickstart"]
},
{
"group": "Deploy Agents",
"pages": [
"development/deploy-agents/wrap-existing-agents",
"development/deploy-agents/building-agents",
"development/deploy-agents/deploy-your-agents"
]
},
{
"group": "Agent Capabilities",
"pages": [
"development/agent-development/overview",
"development/agent-development/messages",
"development/agent-development/multi-turn",
"development/agent-development/files",
"development/agent-development/agent-details",
"development/agent-development/llm-proxy-service",
"development/agent-development/trajectory",
"development/agent-development/citations",
"development/agent-development/forms",
"development/agent-development/agent-settings",
"development/agent-development/secrets",
"development/agent-development/rag",
"development/agent-development/mcp-oauth",
"development/agent-development/mcp",
"development/agent-development/env-variables",
"development/agent-development/error",
"development/agent-development/tool-calls"
]
},
{
"group": "Reference",
"pages": ["development/reference/cli-reference"]
},
{
"group": "Deploy Agent Stack",
"pages": [
"development/deploy-agent-stack/deployment-guide",
"development/deploy-agent-stack/authenticate-cli-to-server",
"development/deploy-agent-stack/observability"
]
},
{
"group": "Custom UI Integration",
"pages": ["development/custom-ui/client-sdk", "development/custom-ui/permissions-and-tokens"]
},
{
"group": "Experimental",
"pages": ["development/experimental/connectors", "development/experimental/a2a-proxy"]
},
{
"group": "Community",
"pages": ["development/community/contribute"]
}
]
},
{
"group": "Custom UI Integration",
"pages": ["custom-ui/client-sdk", "custom-ui/permissions-and-tokens"]
},
{
"group": "Experimental",
"pages": ["experimental/connectors", "experimental/a2a-proxy"]
},
{
"group": "Community",
"pages": ["community/contribute"]
}
]
},
Expand Down
32 changes: 32 additions & 0 deletions docs/stable/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Mintlify Starter Kit

Click on `Use this template` to copy the Mintlify starter kit. The starter kit contains examples including

- Guide pages
- Navigation
- Customizations
- API Reference pages
- Use of popular components

### Development

Install the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command

```
npm i -g mintlify
```

Run the following command at the root of your documentation (where docs.json is)

```
mintlify dev
```

### Publishing Changes

Install our Github App to auto propagate changes from your repo to your deployment. Changes will be deployed to production automatically after pushing to the default branch. Find the link to install on your dashboard.

#### Troubleshooting

- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.
- Page loads as a 404 - Make sure you are running in a folder with `docs.json`
126 changes: 126 additions & 0 deletions docs/stable/agent-development/agent-details.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
title: "Customize Agent Details"
description: "Configure how your agent appears and behaves in the GUI"
---

When building your agent, you can configure certain attributes that affect how it appears and behaves in the user interface. The `@server.agent` decorator accepts a `detail` parameter with an `AgentDetail` object that controls the visual representation and behavior in the UI.

You can customize various aspects of your agent's presentation, such as:
- The type of user interface the agent uses (chat, form, etc.)
- Custom user greetings
- Metadata about tools the agent provides
- Author and contributor information
- License, framework, and source code details

## Basic Configuration

Configuring agent details is straightforward. Import `AgentDetail` and related types, then pass them to the `detail` parameter in the `@server.agent` decorator:
```python
import os
from textwrap import dedent

from a2a.types import AgentSkill, Message
from agentstack_sdk.server import Server
from agentstack_sdk.server.context import RunContext
from agentstack_sdk.a2a.extensions import AgentDetail, AgentDetailContributor, AgentDetailTool

server = Server()

@server.agent(
name="Example Research Assistant",
detail=AgentDetail(
interaction_mode="multi-turn", # or single-turn
user_greeting="Hi there! I can help you research topics or summarize uploaded documents.",
tools=[
AgentDetailTool(
name="Web Search",
description="Looks up recent and relevant information from the web."
),
AgentDetailTool(
name="Document Reader",
description="Reads and extracts key insights from uploaded PDFs or text files."
),
],
framework="BeeAI Framework",
author=AgentDetailContributor(
name="Agent Stack Team",
email="[email protected]",
),
source_code_url="https://github.com/example/example-research-assistant",
),
skills=[
AgentSkill(
id="research",
name="Research",
description=dedent(
"""\
Finds up-to-date information on a given topic, synthesizes key points,
and summarizes findings in clear, useful responses.
"""
),
tags=["Search", "Knowledge"],
examples=[
"Find recent news about AI ethics in 2025.",
"What are the main challenges in renewable energy adoption?",
"Give me an overview of current space exploration missions.",
],
),
AgentSkill(
id="summarization",
name="Summarization",
description=dedent(
"""\
Reads and summarizes uploaded text or documents, highlighting the
most important ideas, statistics, and conclusions.
"""
),
tags=["Documents", "Summaries"],
examples=[
"Summarize this PDF report about electric vehicle trends.",
"What are the main points from this research article?",
"Condense this document into a short summary I can share.",
],
),
],
)
async def example_agent(input: Message, context: RunContext):
"""An example agent with detailed configuration"""
yield "Hello World!"

def run():
server.run(host=os.getenv("HOST", "127.0.0.1"), port=int(os.getenv("PORT", 8000)))


if __name__ == "__main__":
run()
```

## Key Fields

### UI Configuration
- **`interaction_mode`**: Set to `"multi-turn"` for conversational agents or `"single-turn"` for one-shot agents
- **`user_greeting`**: Welcome message displayed when users first interact with your agent

### Metadata
- **`framework`**: The framework used to build your agent (e.g., "BeeAI", "LangGraph", "CrewAI")
- **`programming_language`**: Primary language (e.g., "Python", "JavaScript")
- **`license`**: Software license (e.g., "Apache 2.0", "MIT")

### Tools
- **`tools`**: List of `AgentDetailTool` objects describing your agent's capabilities
- Each tool has a `name` and `description` to help users understand each tool's purpose

### Skills
- **`skills`**: List of `AgentSkill` objects that represent distinct, user-facing abilities your agent can perform
- Each skill includes an id, name, description, tags, and examples
- Examples are displayed in the user interface as starter questions — they help users understand what kinds of requests your agent can handle and encourage exploration
- Skills define what your agent can do — for example, “Research” for finding and summarizing information, or “Summarization” for condensing long documents

### Links and Attribution
- **`source_code_url`**: Link to the source code repository
- **`author`**: Primary author information (name, email, url)
- **`contributors`**: List of additional contributors

<Tip>
The Agent Details extension helps users understand your agent's capabilities before they start using it. Provide clear descriptions and accurate tool information to improve the user experience.
</Tip>
Loading
Loading