Vendor Tools (PraisonAI-Tools)

Install third-party API tools (Stripe, Slack, Jira, financial data, etc.) as pip plugins from PraisonAI-Tools

Vendor tools are third-party API integrations you add to an agent with one pip install and a name in tools=[].

Diagram

Agent

tools=[‘vendor_tool’]

PraisonAI-Tools pip plugin

Vendor API

Quick Start

  1. Install the plugin
    bash
    pip install praisonai-tools-stripe
  2. Use it in your agent
    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="Finance Analyst",
        instructions="Analyze market data",
        tools=["stripe_balance"],
    )
    
    agent.start("What is our current Stripe balance?")

    The tool is auto-discovered by name after install — no imports needed.


How It Works

The agent resolves a tool name to a vendor plugin installed through pip, calls the vendor API, and replies with the result.

Diagram
Vendor APIPraisonAI-Tools PluginAgentUserVendor APIPraisonAI-Tools PluginAgentUserAsk a questionCall tool by nameRequest dataResponseResultAnswer

Installed plugins register under the praisonai.tools entry-point group and become available by name — the same mechanism documented in Custom Tools.


Three-Tier Tool Ecosystem

PraisonAI tools live in three places. Pick the tier that matches where your tool belongs.

Diagram

Tier 3 – Custom / Single-File

@tool decorator, .praison/plugins/*.py

Tier 2 – PraisonAI-Tools Pip Plugins

Stripe, Slack, Jira, SaaS and dataset wrappers

Tier 1 – Core Legacy Bundled

Tavily, Exa, You.com, DuckDuckGo, Python, Shell, File

TierWhere it livesUse for
Core legacy bundledpraisonaiagents.tools (e.g. tavily_tools.py, exa_tools.py, github_tools.py, duckduckgo_tools.py, searxng_tools.py, spider_tools.py, crawl4ai_tools.py, youdotcom_tools.py, jira_tools.py, email_tools.py)Backward-compat only — not a template for new modules
PraisonAI-Tools pip pluginsPraisonAI-ToolsAll new vendor / third-party API integrations
Custom / single-fileYour projectYour own project-local logic

Keep in Core or Route Out?

A tool only stays in praisonaiagents.tools if both left-column conditions hold. Any right-column condition routes it to PraisonAI-Tools.

Keep in core praisonaiagents.toolsRoute to PraisonAI-Tools
Local-state only — filesystem, shell, Python, AST, todo, schedule — or framework plumbing (delegation, subagent, session, artifact, memory, clarify)Calls a third-party / remote API or SaaS
Uses only stdlib or already-required core depsNeeds service-specific auth or SDK; is a vendor connector (search, data, CRM, DB, messaging)
Diagram

No – local state / framework plumbing only

Yes

Doesn’t matter

Does the tool call a remote service
or need service-specific credentials?

Keep in praisonaiagents.tools

Only uses stdlib HTTP?

Route to PraisonAI-Tools

Your own project logic? Use a custom tool or single-file plugin instead.


Install Flow

Install one or more vendor plugins, then reference each by name.

  1. Install plugins
    bash
    pip install praisonai-tools-stripe
  2. Add tool names to your agent
    python
    from praisonaiagents import Agent
    
    agent = Agent(
        name="Finance Analyst",
        instructions="Analyze market data",
        tools=["yfinance", "stripe_balance"],
    )
    
    agent.start("Summarise AAPL year-to-date and our Stripe balance")

How Auto-Discovery Works

Plugins declare a praisonai.tools entry point in their pyproject.toml; PraisonAI scans these on first use and registers each tool by name.

toml
[project.entry-points."praisonai.tools"]
stripe_balance = "praisonai_tools_stripe:StripeBalanceTool"

See the Creating a Pip-Installable Tool Package section for the full publish flow.


Routing is Not Fencing

Installing a vendor plugin decides where the code lives. It does not decide how the LLM treats its results.

A vendor result is only fenced (wrapped in <external_tool_result> safety markers) when one of these is true:

  • the tool name is in the module-level EXTERNAL_TOOL_NAMES set, or
  • it was registered with ToolTrustLevel.EXTERNAL.

Register your vendor tool for fencing at startup:

python
from praisonaiagents import Agent
from praisonaiagents.tools.trust import add_external_tool

add_external_tool("stripe_balance")

agent = Agent(
    name="Finance Analyst",
    instructions="Analyze market data",
    tools=["stripe_balance"],
)
agent.start("What is our current Stripe balance?")
Diagram

📦 Install plugin

🛡️ add_external_tool

✅ Fenced result

See Prompt Injection Protection for the full trust layer.


Contributing a New Vendor Tool

Publish your plugin to PraisonAI-Tools and users install it with a single pip install.


Best Practices

Prefer pip plugins for vendor APIs

Any public third-party API or SaaS integration goes in PraisonAI-Tools as an installable plugin, not in core.

Reference tools by name

After pip install, add the tool name to tools=[] — no import line is required.

Keep secrets in the environment

Read API keys from environment variables inside the plugin; never hard-code credentials.

Use custom tools for internal logic

Project-specific logic belongs in a custom tool or single-file plugin, not a published vendor package.


Related