Skip to content

Agent Capabilities

CrewAI agents can be extended with five distinct capability types, each serving a different purpose. Understanding when to use each one — and how they work together — is key to building effective agents.


The most important thing to understand: these capabilities fall into two categories.

These give agents the ability to do things — call APIs, read files, search the web, send emails. At execution time, all three resolve into the same internal format (BaseTool instances) and appear in a unified tool list the agent can call.

from crewai import Agent
from crewai_tools import SerperDevTool, FileReadTool
agent = Agent(
role="Researcher",
goal="Find and compile market data",
backstory="Expert market analyst",
tools=[SerperDevTool(), FileReadTool()], # Local tools
mcps=["https://mcp.example.com/sse"], # Remote MCP server tools
apps=["gmail", "google_sheets"], # Platform integrations
)

These modify the agent’s prompt — injecting expertise, instructions, or retrieved data before the agent starts reasoning. They don’t give agents new actions; they shape how agents think and what information they have access to.

from crewai import Agent
agent = Agent(
role="Security Auditor",
goal="Audit cloud infrastructure for vulnerabilities",
backstory="Expert in cloud security with 10 years of experience",
skills=["./skills/security-audit"], # Domain instructions
knowledge_sources=[pdf_source, url_source], # Retrieved facts
)

You need…UseExample
Agent to search the webToolstools=[SerperDevTool()]
Agent to call a remote API via MCPMCPsmcps=["https://api.example.com/sse"]
Agent to send emails via GmailAppsapps=["gmail"]
Agent to follow specific proceduresSkillsskills=["./skills/code-review"]
Agent to reference company docsKnowledgeknowledge_sources=[pdf_source]
Agent to search the web AND follow review guidelinesTools + SkillsUse both together

In practice, agents often use multiple capability types together. Here’s a realistic example:

from crewai import Agent
from crewai_tools import SerperDevTool, FileReadTool, CodeInterpreterTool
# A fully-equipped research agent
researcher = Agent(
role="Senior Research Analyst",
goal="Produce comprehensive market analysis reports",
backstory="Expert analyst with deep industry knowledge",
# ACTION: What the agent can DO
tools=[
SerperDevTool(), # Search the web
FileReadTool(), # Read local files
CodeInterpreterTool(), # Run Python code for analysis
],
mcps=["https://data-api.example.com/sse"], # Access remote data API
apps=["google_sheets"], # Write to Google Sheets
# CONTEXT: What the agent KNOWS
skills=["./skills/research-methodology"], # How to conduct research
knowledge_sources=[company_docs], # Company-specific data
)

FeatureToolsMCPsAppsSkillsKnowledge
Gives agent actions
Modifies prompt
Requires codeYesConfig onlyConfig onlyMarkdown onlyConfig only
Runs locallyYesDependsYes (with env var)N/AYes
Needs API keysPer toolPer serverIntegration tokenNoEmbedder only
Set on Agenttools=[]mcps=[]apps=[]skills=[]knowledge_sources=[]
Set on Crewskills=[]knowledge_sources=[]

Ready to learn more about each capability type?