Compare commits

...

43 Commits

Author SHA1 Message Date
Lorenze Jay
0648e88f22 feat: bump versions to 1.0.0a4 (#3686) 2025-10-09 11:05:05 -07:00
Greyson LaLonde
abe1f40bc2 Merge branch 'main' into release/v1.0.0 2025-10-09 13:52:58 -04:00
Greyson LaLonde
06f7d224c0 fix: remove duplicate line and add explicit env var 2025-10-09 12:44:29 -04:00
lorenzejay
faddcd0de7 Merge branch 'main' of github.com:crewAIInc/crewAI into release/v1.0.0 2025-10-09 09:30:27 -07:00
Greyson LaLonde
2f4fdf9a90 Merge branch 'release/v1.0.0' of https://github.com/crewAIInc/crewAI into release/v1.0.0 2025-10-09 10:34:19 -04:00
Lucas Gomide
28a8a7e6fa feat: update docs with new approach to consume Platform Actions (#3675) 2025-10-09 08:17:09 -04:00
Greyson LaLonde
51e8fb1f90 fix: resolve linting errors across codebase 2025-10-08 20:18:01 -04:00
Greyson LaLonde
f094df6015 chore: add noqa for intentional print in printer utility 2025-10-08 17:33:13 -04:00
Greyson LaLonde
458f56fb33 fix: replace print statements with logger in agent and memory handling 2025-10-08 17:28:50 -04:00
Greyson LaLonde
11f6b34aa3 chore: exclude tests from GitHub Actions linter 2025-10-08 17:13:12 -04:00
Greyson LaLonde
47b6baee01 Merge branch 'main' into release/v1.0.0 2025-10-08 17:08:16 -04:00
Greyson LaLonde
f9992d8d7a chore: exclude tests from ruff linting 2025-10-08 17:04:13 -04:00
Greyson LaLonde
79d4e42e62 chore: merge main into release/v1.0.0
Resolved merge conflicts:
- agent.py: kept main's docker validation, restored get_platform_tools method, fixed KnowledgeRetrievalStartedEvent position
- agent_utils.py: merged both LLM and LiteAgent imports
- test_cache_hitting.yaml: accepted main's test recordings
- Removed 4 deprecated test cassettes from old tests/ directory

Key changes from main:
- Enhanced knowledge event handling with from_agent/from_task parameters
- Updated LLMMessage typing in kickoff methods
- Added guardrail parameter to async kickoff
- Restored runtime validation in guardrail.py
2025-10-08 16:53:36 -04:00
Lucas Gomide
8b9186311f feat: introduce trigger listing and execution commands for local development (#3643) 2025-10-06 10:20:49 -04:00
Greyson LaLonde
29a0ac483f fix: allow failed pypi publish 2025-10-03 19:25:14 -04:00
Greyson LaLonde
38bc5a9dc4 fix: match tag and release title, ignore devtools build for pypi 2025-10-03 19:18:19 -04:00
Lorenze Jay
0b305dabc9 feat: bump versions to 1.0.0a3
Co-authored-by: Greyson LaLonde <greyson.r.lalonde@gmail.com>
2025-10-03 18:51:27 -04:00
Greyson LaLonde
ebeed0b752 feat: allow release after tag 2025-10-03 18:49:58 -04:00
Greyson LaLonde
2a0018a99b fix: allow pre-release 2025-10-03 18:40:18 -04:00
Greyson LaLonde
5865d39137 fix: ensure dep refs are updated for devtools 2025-10-03 18:32:31 -04:00
Greyson LaLonde
e529ebff2b feat: add base devtooling 2025-10-03 18:23:54 -04:00
Lorenze Jay
126b91eab3 Lorenze/native inference sdks (#3619)
* ruff linted

* using native sdks with litellm fallback

* drop exa

* drop print on completion

* Refactor LLM and utility functions for type consistency

- Updated `max_tokens` parameter in `LLM` class to accept `float` in addition to `int`.
- Modified `create_llm` function to ensure consistent type hints and return types, now returning `LLM | BaseLLM | None`.
- Adjusted type hints for various parameters in `create_llm` and `_llm_via_environment_or_fallback` functions for improved clarity and type safety.
- Enhanced test cases to reflect changes in type handling and ensure proper instantiation of LLM instances.

* fix agent_tests

* fix litellm tests and usagemetrics fix

* drop print

* Refactor LLM event handling and improve test coverage

- Removed commented-out event emission for LLM call failures in `llm.py`.
- Added `from_agent` parameter to `CrewAgentExecutor` for better context in LLM responses.
- Enhanced test for LLM call failure to simulate OpenAI API failure and updated assertions for clarity.
- Updated agent and task ID assertions in tests to ensure they are consistently treated as strings.

* fix test_converter

* fixed tests/agents/test_agent.py

* Refactor LLM context length exception handling and improve provider integration

- Renamed `LLMContextLengthExceededException` to `LLMContextLengthExceededExceptionError` for clarity and consistency.
- Updated LLM class to pass the provider parameter correctly during initialization.
- Enhanced error handling in various LLM provider implementations to raise the new exception type.
- Adjusted tests to reflect the updated exception name and ensure proper error handling in context length scenarios.

* Enhance LLM context window handling across providers

- Introduced CONTEXT_WINDOW_USAGE_RATIO to adjust context window sizes dynamically for Anthropic, Azure, Gemini, and OpenAI LLMs.
- Added validation for context window sizes in Azure and Gemini providers to ensure they fall within acceptable limits.
- Updated context window size calculations to use the new ratio, improving consistency and adaptability across different models.
- Removed hardcoded context window sizes in favor of ratio-based calculations for better flexibility.

* fix test agent again

* fix test agent

* feat: add native LLM providers for Anthropic, Azure, and Gemini

- Introduced new completion implementations for Anthropic, Azure, and Gemini, integrating their respective SDKs.
- Added utility functions for tool validation and extraction to support function calling across LLM providers.
- Enhanced context window management and token usage extraction for each provider.
- Created a common utility module for shared functionality among LLM providers.

* chore: update dependencies and improve context management

- Removed direct dependency on `litellm` from the main dependencies and added it under extras for better modularity.
- Updated the `litellm` dependency specification to allow for greater flexibility in versioning.
- Refactored context length exception handling across various LLM providers to use a consistent error class.
- Enhanced platform-specific dependency markers for NVIDIA packages to ensure compatibility across different systems.

* refactor(tests): update LLM instantiation to include is_litellm flag in test cases

- Modified multiple test cases in test_llm.py to set the is_litellm parameter to True when instantiating the LLM class.
- This change ensures that the tests are aligned with the latest LLM configuration requirements and improves consistency across test scenarios.
- Adjusted relevant assertions and comments to reflect the updated LLM behavior.

* linter

* linted

* revert constants

* fix(tests): correct type hint in expected model description

- Updated the expected description in the test_generate_model_description_dict_field function to use 'Dict' instead of 'dict' for consistency with type hinting conventions.
- This change ensures that the test accurately reflects the expected output format for model descriptions.

* refactor(llm): enhance LLM instantiation and error handling

- Updated the LLM class to include validation for the model parameter, ensuring it is a non-empty string.
- Improved error handling by logging warnings when the native SDK fails, allowing for a fallback to LiteLLM.
- Adjusted the instantiation of LLM in test cases to consistently include the is_litellm flag, aligning with recent changes in LLM configuration.
- Modified relevant tests to reflect these updates, ensuring better coverage and accuracy in testing scenarios.

* fixed test

* refactor(llm): enhance token usage tracking and add copy methods

- Updated the LLM class to track token usage and log callbacks in streaming mode, improving monitoring capabilities.
- Introduced shallow and deep copy methods for the LLM instance, allowing for better management of LLM configurations and parameters.
- Adjusted test cases to instantiate LLM with the is_litellm flag, ensuring alignment with recent changes in LLM configuration.

* refactor(tests): reorganize imports and enhance error messages in test cases

- Cleaned up import statements in test_crew.py for better organization and readability.
- Enhanced error messages in test cases to use `re.escape` for improved regex matching, ensuring more robust error handling.
- Adjusted comments for clarity and consistency across test scenarios.
- Ensured that all necessary modules are imported correctly to avoid potential runtime issues.
2025-10-03 14:32:35 -07:00
Greyson LaLonde
428810bd6f feat: bump version to 1.0.0a2 2025-10-02 16:38:17 -04:00
Greyson LaLonde
610bc4b3f5 chore: merge main into release/v1.0.0 2025-10-02 15:32:54 -04:00
Lucas Gomide
e73c5887d9 fix: handle properly anyOf oneOf allOf schema's props
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
2025-10-02 14:32:17 -04:00
Mike Plachta
c5ac5fa78a feat: add required env var validation for brightdata
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
2025-10-02 12:35:29 -04:00
Greyson LaLonde
5456c80556 chore: apply linting fixes to crewai-tools 2025-10-02 11:06:38 -04:00
Tony Kipkemboi
df754dbcc8 docs: add contextual action to request feature on GitHub (#3635) 2025-10-02 10:44:13 -04:00
tonykipkemboi
e8356b777c docs: expand contextual options in docs.json 2025-10-01 15:41:05 -04:00
tonykipkemboi
ade425a543 docs: fix lingering unused code 2025-10-01 14:49:15 -04:00
tonykipkemboi
d7f6f07a5d docs: full name of acronym AMP 2025-10-01 14:22:16 -04:00
tonykipkemboi
9e1dae0746 docs: parity for all translations 2025-10-01 14:11:23 -04:00
Tony Kipkemboi
b5161c320d Merge branch 'main' into release/v1.0.0 2025-10-01 10:53:44 -04:00
Tony Kipkemboi
c793c829ea WIP: v1 docs (#3626)
(cherry picked from commit d46e20fa09bcd2f5916282f5553ddeb7183bd92c)
2025-10-01 10:25:28 -04:00
Lorenze Jay
0fe9352149 chore: bump version to 1.0.0a1 across all packages
- Updated version to 1.0.0a1 in pyproject.toml for crewai and crewai-tools
- Adjusted version in __init__.py files for consistency
2025-09-28 11:53:35 -04:00
Greyson LaLonde
548170e989 fix: add permission to action 2025-09-28 01:08:19 -04:00
Greyson LaLonde
417a4e3d91 chore: ci publish and pin versions 2025-09-28 00:59:25 -04:00
Greyson LaLonde
68dce92003 chore: update CI workflows and docs for monorepo structure
* chore: update CI workflows and docs for monorepo structure

* fix: actions syntax
2025-09-28 00:28:49 -04:00
Greyson LaLonde
289b90f00a feat: add crewai-tools workspace and fix tests/dependencies
* feat: add crewai-tools workspace structure

* Squashed 'temp-crewai-tools/' content from commit 9bae5633

git-subtree-dir: temp-crewai-tools
git-subtree-split: 9bae56339096cb70f03873e600192bd2cd207ac9

* feat: configure crewai-tools workspace package with dependencies

* fix: apply ruff auto-formatting to crewai-tools code

* chore: update lockfile

* fix: don't allow tool tests yet

* fix: comment out extra pytest flags for now

* fix: remove conflicting conftest.py from crewai-tools tests

* fix: resolve dependency conflicts and test issues

- Pin vcrpy to 7.0.0 to fix pytest-recording compatibility
- Comment out types-requests to resolve urllib3 conflict
- Update requests requirement in crewai-tools to >=2.32.0
2025-09-28 00:05:42 -04:00
Greyson LaLonde
c591c1ac87 chore: update python version to 3.13 and package metadata 2025-09-27 23:09:52 -04:00
Greyson LaLonde
86f0dfc2d7 feat: monorepo restructure and test/ci updates
- Add crewai workspace member
- Fix vcr cassette paths and restore test dirs
- Resolve ci failures and update linter/pytest rules
2025-09-27 22:53:02 -04:00
Greyson LaLonde
74b5c88834 Merge branch 'main' into release/v1.0.0-alpha.1 2025-09-26 13:32:05 -04:00
Lucas Gomide
13e5ec711d feat: add apps & actions attributes to Agent (#3504)
* feat: add app attributes to Agent

* feat: add actions attribute to Agent

* chore: resolve linter issues

* refactor: merge the apps and actions parameters into a single one

* fix: remove unnecessary print

* feat: logging error when CrewaiPlatformTools fails

* chore: export CrewaiPlatformTools directly from crewai_tools

* style: resolver linter issues

* test: fix broken tests

* style: solve linter issues

* fix: fix broken test
2025-09-25 16:46:51 -04:00
1251 changed files with 88896 additions and 13333 deletions

View File

@@ -15,11 +15,11 @@ on:
push:
branches: [ "main" ]
paths-ignore:
- "src/crewai/cli/templates/**"
- "lib/crewai/src/crewai/cli/templates/**"
pull_request:
branches: [ "main" ]
paths-ignore:
- "src/crewai/cli/templates/**"
- "lib/crewai/src/crewai/cli/templates/**"
jobs:
analyze:

View File

@@ -52,10 +52,11 @@ jobs:
- name: Run Ruff on Changed Files
if: ${{ steps.changed-files.outputs.files != '' }}
run: |
echo "${{ steps.changed-files.outputs.files }}" \
| tr ' ' '\n' \
| grep -v 'src/crewai/cli/templates/' \
| xargs -I{} uv run ruff check "{}"
echo "${{ steps.changed-files.outputs.files }}" \
| tr ' ' '\n' \
| grep -v 'src/crewai/cli/templates/' \
| grep -v '/tests/' \
| xargs -I{} uv run ruff check "{}"
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'

83
.github/workflows/publish.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Publish to PyPI
on:
release:
types: [ published ]
workflow_dispatch:
jobs:
build:
if: github.event.release.prerelease == true
name: Build packages
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v4
- name: Build packages
run: |
uv build --prerelease="allow" --all-packages
rm dist/.gitignore
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dist
path: dist/
publish:
if: github.event.release.prerelease == true
name: Publish to PyPI
needs: build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/crewai
permissions:
id-token: write
contents: read
steps:
- uses: actions/checkout@v4
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.8.4"
python-version: "3.12"
enable-cache: false
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: dist
path: dist
- name: Publish to PyPI
env:
UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
run: |
failed=0
for package in dist/*; do
if [[ "$package" == *"crewai_devtools"* ]]; then
echo "Skipping private package: $package"
continue
fi
echo "Publishing $package"
if ! uv publish "$package"; then
echo "Failed to publish $package"
failed=1
fi
done
if [ $failed -eq 1 ]; then
echo "Some packages failed to publish"
exit 1
fi

View File

@@ -8,6 +8,14 @@ permissions:
env:
OPENAI_API_KEY: fake-api-key
PYTHONUNBUFFERED: 1
BRAVE_API_KEY: fake-brave-key
SNOWFLAKE_USER: fake-snowflake-user
SNOWFLAKE_PASSWORD: fake-snowflake-password
SNOWFLAKE_ACCOUNT: fake-snowflake-account
SNOWFLAKE_WAREHOUSE: fake-snowflake-warehouse
SNOWFLAKE_DATABASE: fake-snowflake-database
SNOWFLAKE_SCHEMA: fake-snowflake-schema
EMBEDCHAIN_DB_URI: sqlite:///test.db
jobs:
tests:
@@ -56,13 +64,13 @@ jobs:
- name: Run tests (group ${{ matrix.group }} of 8)
run: |
PYTHON_VERSION_SAFE=$(echo "${{ matrix.python-version }}" | tr '.' '_')
DURATION_FILE=".test_durations_py${PYTHON_VERSION_SAFE}"
DURATION_FILE="../../.test_durations_py${PYTHON_VERSION_SAFE}"
# Temporarily always skip cached durations to fix test splitting
# When durations don't match, pytest-split runs duplicate tests instead of splitting
echo "Using even test splitting (duration cache disabled until fix merged)"
DURATIONS_ARG=""
# Original logic (disabled temporarily):
# if [ ! -f "$DURATION_FILE" ]; then
# echo "No cached durations found, tests will be split evenly"
@@ -74,8 +82,8 @@ jobs:
# echo "No test changes detected, using cached test durations for optimal splitting"
# DURATIONS_ARG="--durations-path=${DURATION_FILE}"
# fi
uv run pytest \
cd lib/crewai && uv run pytest \
--block-network \
--timeout=30 \
-vv \
@@ -86,6 +94,19 @@ jobs:
-n auto \
--maxfail=3
- name: Run tool tests (group ${{ matrix.group }} of 8)
run: |
cd lib/crewai-tools && uv run pytest \
--block-network \
--timeout=30 \
-vv \
--splits 8 \
--group ${{ matrix.group }} \
--durations=10 \
-n auto \
--maxfail=3
- name: Save uv caches
if: steps.cache-restore.outputs.cache-hit != 'true'
uses: actions/cache/save@v4

1
.gitignore vendored
View File

@@ -2,7 +2,6 @@
.pytest_cache
__pycache__
dist/
lib/
.env
assets/*
.idea

View File

@@ -6,14 +6,16 @@ repos:
entry: uv run ruff check
language: system
types: [python]
exclude: ^lib/crewai/
- id: ruff-format
name: ruff-format
entry: uv run ruff format
language: system
types: [python]
exclude: ^lib/crewai/
- id: mypy
name: mypy
entry: uv run mypy
language: system
types: [python]
exclude: ^tests/
exclude: ^lib/crewai/

View File

@@ -361,10 +361,20 @@
"en/enterprise/integrations/github",
"en/enterprise/integrations/gmail",
"en/enterprise/integrations/google_calendar",
"en/enterprise/integrations/google_contacts",
"en/enterprise/integrations/google_docs",
"en/enterprise/integrations/google_drive",
"en/enterprise/integrations/google_sheets",
"en/enterprise/integrations/google_slides",
"en/enterprise/integrations/hubspot",
"en/enterprise/integrations/jira",
"en/enterprise/integrations/linear",
"en/enterprise/integrations/microsoft_excel",
"en/enterprise/integrations/microsoft_onedrive",
"en/enterprise/integrations/microsoft_outlook",
"en/enterprise/integrations/microsoft_sharepoint",
"en/enterprise/integrations/microsoft_teams",
"en/enterprise/integrations/microsoft_word",
"en/enterprise/integrations/notion",
"en/enterprise/integrations/salesforce",
"en/enterprise/integrations/shopify",
@@ -773,10 +783,20 @@
"pt-BR/enterprise/integrations/github",
"pt-BR/enterprise/integrations/gmail",
"pt-BR/enterprise/integrations/google_calendar",
"pt-BR/enterprise/integrations/google_contacts",
"pt-BR/enterprise/integrations/google_docs",
"pt-BR/enterprise/integrations/google_drive",
"pt-BR/enterprise/integrations/google_sheets",
"pt-BR/enterprise/integrations/google_slides",
"pt-BR/enterprise/integrations/hubspot",
"pt-BR/enterprise/integrations/jira",
"pt-BR/enterprise/integrations/linear",
"pt-BR/enterprise/integrations/microsoft_excel",
"pt-BR/enterprise/integrations/microsoft_onedrive",
"pt-BR/enterprise/integrations/microsoft_outlook",
"pt-BR/enterprise/integrations/microsoft_sharepoint",
"pt-BR/enterprise/integrations/microsoft_teams",
"pt-BR/enterprise/integrations/microsoft_word",
"pt-BR/enterprise/integrations/notion",
"pt-BR/enterprise/integrations/salesforce",
"pt-BR/enterprise/integrations/shopify",
@@ -1188,10 +1208,20 @@
"ko/enterprise/integrations/github",
"ko/enterprise/integrations/gmail",
"ko/enterprise/integrations/google_calendar",
"ko/enterprise/integrations/google_contacts",
"ko/enterprise/integrations/google_docs",
"ko/enterprise/integrations/google_drive",
"ko/enterprise/integrations/google_sheets",
"ko/enterprise/integrations/google_slides",
"ko/enterprise/integrations/hubspot",
"ko/enterprise/integrations/jira",
"ko/enterprise/integrations/linear",
"ko/enterprise/integrations/microsoft_excel",
"ko/enterprise/integrations/microsoft_onedrive",
"ko/enterprise/integrations/microsoft_outlook",
"ko/enterprise/integrations/microsoft_sharepoint",
"ko/enterprise/integrations/microsoft_teams",
"ko/enterprise/integrations/microsoft_word",
"ko/enterprise/integrations/notion",
"ko/enterprise/integrations/salesforce",
"ko/enterprise/integrations/shopify",

View File

@@ -43,7 +43,7 @@ Tools & Integrations is the central hub for connecting thirdparty apps and ma
1. Go to <Link href="https://app.crewai.com/crewai_plus/connectors">Integrations</Link>
2. Click <b>Connect</b> on the desired service
3. Complete the OAuth flow and grant scopes
4. Copy your Enterprise Token from the <b>Integration</b> tab
4. Copy your Enterprise Token from <Link href="https://app.crewai.com/crewai_plus/settings/integrations">Integration Settings</Link>
<Frame>
![Enterprise Token](/images/enterprise/enterprise_action_auth_token.png)
@@ -60,26 +60,18 @@ Tools & Integrations is the central hub for connecting thirdparty apps and ma
### Usage Example
<Tip>
All services you have authenticated will be available as tools. Add `CrewaiEnterpriseTools` to your agent and youre set.
Use the new streamlined approach to integrate enterprise apps. Simply specify the app and its actions directly in the Agent configuration.
</Tip>
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tool will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# print the tools
print(enterprise_tools)
# Create an agent with Gmail capabilities
email_agent = Agent(
role="Email Manager",
goal="Manage and organize email communications",
backstory="An AI assistant specialized in email management and communication.",
tools=enterprise_tools
apps=['gmail', 'gmail/send_email'] # Using canonical name 'gmail'
)
# Task to send an email
@@ -102,21 +94,14 @@ Tools & Integrations is the central hub for connecting thirdparty apps and ma
### Filtering Tools
```python
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
actions_list=["gmail_find_email"] # only gmail_find_email tool will be available
)
gmail_tool = enterprise_tools["gmail_find_email"]
from crewai import Agent, Task, Crew
# Create agent with specific Gmail actions only
gmail_agent = Agent(
role="Gmail Manager",
goal="Manage gmail communications and notifications",
backstory="An AI assistant that helps coordinate gmail communications.",
tools=[gmail_tool]
apps=['gmail/fetch_emails'] # Using canonical name with specific action
)
notification_task = Task(

View File

@@ -151,3 +151,5 @@ You can check the security check status of a tool at:
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with API integration or troubleshooting.
</Card>

View File

@@ -25,7 +25,7 @@ Before using the Asana integration, ensure you have:
2. Find **Asana** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for task and project management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="ASANA_CREATE_COMMENT">
<Accordion title="asana/create_comment">
**Description:** Create a comment in Asana.
**Parameters:**
@@ -44,7 +44,7 @@ uv add crewai-tools
- `text` (string, required): Text (example: "This is a comment.").
</Accordion>
<Accordion title="ASANA_CREATE_PROJECT">
<Accordion title="asana/create_project">
**Description:** Create a project in Asana.
**Parameters:**
@@ -54,7 +54,7 @@ uv add crewai-tools
- `notes` (string, optional): Notes (example: "These are things we need to purchase.").
</Accordion>
<Accordion title="ASANA_GET_PROJECTS">
<Accordion title="asana/get_projects">
**Description:** Get a list of projects in Asana.
**Parameters:**
@@ -62,14 +62,14 @@ uv add crewai-tools
- Options: `default`, `true`, `false`
</Accordion>
<Accordion title="ASANA_GET_PROJECT_BY_ID">
<Accordion title="asana/get_project_by_id">
**Description:** Get a project by ID in Asana.
**Parameters:**
- `projectFilterId` (string, required): Project ID.
</Accordion>
<Accordion title="ASANA_CREATE_TASK">
<Accordion title="asana/create_task">
**Description:** Create a task in Asana.
**Parameters:**
@@ -83,7 +83,7 @@ uv add crewai-tools
- `gid` (string, optional): External ID - An ID from your application to associate this task with. You can use this ID to sync updates to this task later.
</Accordion>
<Accordion title="ASANA_UPDATE_TASK">
<Accordion title="asana/update_task">
**Description:** Update a task in Asana.
**Parameters:**
@@ -98,7 +98,7 @@ uv add crewai-tools
- `gid` (string, optional): External ID - An ID from your application to associate this task with. You can use this ID to sync updates to this task later.
</Accordion>
<Accordion title="ASANA_GET_TASKS">
<Accordion title="asana/get_tasks">
**Description:** Get a list of tasks in Asana.
**Parameters:**
@@ -108,21 +108,21 @@ uv add crewai-tools
- `completedSince` (string, optional): Completed since - Only return tasks that are either incomplete or that have been completed since this time (ISO or Unix timestamp). (example: "2014-04-25T16:15:47-04:00").
</Accordion>
<Accordion title="ASANA_GET_TASKS_BY_ID">
<Accordion title="asana/get_tasks_by_id">
**Description:** Get a list of tasks by ID in Asana.
**Parameters:**
- `taskId` (string, required): Task ID.
</Accordion>
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
<Accordion title="asana/get_task_by_external_id">
**Description:** Get a task by external ID in Asana.
**Parameters:**
- `gid` (string, required): External ID - The ID that this task is associated or synced with, from your application.
</Accordion>
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
<Accordion title="asana/add_task_to_section">
**Description:** Add a task to a section in Asana.
**Parameters:**
@@ -132,14 +132,14 @@ uv add crewai-tools
- `afterTaskId` (string, optional): After Task ID - The ID of a task in this section that this task will be inserted after. Cannot be used with Before Task ID. (example: "1204619611402340").
</Accordion>
<Accordion title="ASANA_GET_TEAMS">
<Accordion title="asana/get_teams">
**Description:** Get a list of teams in Asana.
**Parameters:**
- `workspace` (string, required): Workspace - Returns the teams in this workspace visible to the authorized user.
</Accordion>
<Accordion title="ASANA_GET_WORKSPACES">
<Accordion title="asana/get_workspaces">
**Description:** Get a list of workspaces in Asana.
**Parameters:** None required.
@@ -152,19 +152,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Asana tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Asana capabilities
asana_agent = Agent(
role="Project Manager",
goal="Manage tasks and projects in Asana efficiently",
backstory="An AI assistant specialized in project management and task coordination.",
tools=[enterprise_tools]
apps=['asana'] # All Asana actions will be available
)
# Task to create a new project
@@ -186,19 +180,18 @@ crew.kickoff()
### Filtering Specific Asana Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Asana tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["asana_create_task", "asana_update_task", "asana_get_tasks"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Asana actions only
task_manager_agent = Agent(
role="Task Manager",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and management.",
tools=enterprise_tools
apps=[
'asana/create_task',
'asana/update_task',
'asana/get_tasks'
] # Specific Asana actions
)
# Task to create and assign a task
@@ -220,17 +213,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate project activities and track progress",
backstory="An experienced project coordinator who ensures projects run smoothly.",
tools=[enterprise_tools]
apps=['asana']
)
# Complex task involving multiple Asana operations

View File

@@ -25,7 +25,7 @@ Before using the Box integration, ensure you have:
2. Find **Box** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for file and folder management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="BOX_SAVE_FILE">
<Accordion title="box/save_file">
**Description:** Save a file from URL in Box.
**Parameters:**
@@ -52,7 +52,7 @@ uv add crewai-tools
- `file` (string, required): File URL - Files must be smaller than 50MB in size. (example: "https://picsum.photos/200/300").
</Accordion>
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
<Accordion title="box/save_file_from_object">
**Description:** Save a file in Box.
**Parameters:**
@@ -61,14 +61,14 @@ uv add crewai-tools
- `folder` (string, optional): Folder - Use Connect Portal Workflow Settings to allow users to select the File's Folder destination. Defaults to the user's root folder if left blank.
</Accordion>
<Accordion title="BOX_GET_FILE_BY_ID">
<Accordion title="box/get_file_by_id">
**Description:** Get a file by ID in Box.
**Parameters:**
- `fileId` (string, required): File ID - The unique identifier that represents a file. (example: "12345").
</Accordion>
<Accordion title="BOX_LIST_FILES">
<Accordion title="box/list_files">
**Description:** List files in Box.
**Parameters:**
@@ -93,7 +93,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_CREATE_FOLDER">
<Accordion title="box/create_folder">
**Description:** Create a folder in Box.
**Parameters:**
@@ -106,7 +106,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_MOVE_FOLDER">
<Accordion title="box/move_folder">
**Description:** Move a folder in Box.
**Parameters:**
@@ -120,14 +120,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_GET_FOLDER_BY_ID">
<Accordion title="box/get_folder_by_id">
**Description:** Get a folder by ID in Box.
**Parameters:**
- `folderId` (string, required): Folder ID - The unique identifier that represents a folder. (example: "0").
</Accordion>
<Accordion title="BOX_SEARCH_FOLDERS">
<Accordion title="box/search_folders">
**Description:** Search folders in Box.
**Parameters:**
@@ -152,7 +152,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_DELETE_FOLDER">
<Accordion title="box/delete_folder">
**Description:** Delete a folder in Box.
**Parameters:**
@@ -167,19 +167,14 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Box tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Box capabilities
box_agent = Agent(
role="Document Manager",
goal="Manage files and folders in Box efficiently",
backstory="An AI assistant specialized in document management and file organization.",
tools=[enterprise_tools]
apps=['box'] # All Box actions will be available
)
# Task to create a folder structure
@@ -201,19 +196,14 @@ crew.kickoff()
### Filtering Specific Box Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Box tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["box_create_folder", "box_save_file", "box_list_files"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Box actions only
file_organizer_agent = Agent(
role="File Organizer",
goal="Organize and manage file storage efficiently",
backstory="An AI assistant that focuses on file organization and storage management.",
tools=enterprise_tools
apps=['box/create_folder', 'box/save_file', 'box/list_files'] # Specific Box actions
)
# Task to organize files
@@ -235,17 +225,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
file_manager = Agent(
role="File Manager",
goal="Maintain organized file structure and manage document lifecycle",
backstory="An experienced file manager who ensures documents are properly organized and accessible.",
tools=[enterprise_tools]
apps=['box']
)
# Complex task involving multiple Box operations

View File

@@ -25,7 +25,7 @@ Before using the ClickUp integration, ensure you have:
2. Find **ClickUp** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for task and project management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="CLICKUP_SEARCH_TASKS">
<Accordion title="clickup/search_tasks">
**Description:** Search for tasks in ClickUp using advanced filters.
**Parameters:**
@@ -61,7 +61,7 @@ uv add crewai-tools
Available fields: `space_ids%5B%5D`, `project_ids%5B%5D`, `list_ids%5B%5D`, `statuses%5B%5D`, `include_closed`, `assignees%5B%5D`, `tags%5B%5D`, `due_date_gt`, `due_date_lt`, `date_created_gt`, `date_created_lt`, `date_updated_gt`, `date_updated_lt`
</Accordion>
<Accordion title="CLICKUP_GET_TASK_IN_LIST">
<Accordion title="clickup/get_task_in_list">
**Description:** Get tasks in a specific list in ClickUp.
**Parameters:**
@@ -69,7 +69,7 @@ uv add crewai-tools
- `taskFilterFormula` (string, optional): Search for tasks that match specified filters. For example: name=task1.
</Accordion>
<Accordion title="CLICKUP_CREATE_TASK">
<Accordion title="clickup/create_task">
**Description:** Create a task in ClickUp.
**Parameters:**
@@ -82,7 +82,7 @@ uv add crewai-tools
- `additionalFields` (string, optional): Additional Fields - Specify additional fields to include on this task as JSON.
</Accordion>
<Accordion title="CLICKUP_UPDATE_TASK">
<Accordion title="clickup/update_task">
**Description:** Update a task in ClickUp.
**Parameters:**
@@ -96,49 +96,49 @@ uv add crewai-tools
- `additionalFields` (string, optional): Additional Fields - Specify additional fields to include on this task as JSON.
</Accordion>
<Accordion title="CLICKUP_DELETE_TASK">
<Accordion title="clickup/delete_task">
**Description:** Delete a task in ClickUp.
**Parameters:**
- `taskId` (string, required): Task ID - The ID of the task to delete.
</Accordion>
<Accordion title="CLICKUP_GET_LIST">
<Accordion title="clickup/get_list">
**Description:** Get List information in ClickUp.
**Parameters:**
- `spaceId` (string, required): Space ID - The ID of the space containing the lists.
</Accordion>
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
<Accordion title="clickup/get_custom_fields_in_list">
**Description:** Get Custom Fields in a List in ClickUp.
**Parameters:**
- `listId` (string, required): List ID - The ID of the list to get custom fields from.
</Accordion>
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
<Accordion title="clickup/get_all_fields_in_list">
**Description:** Get All Fields in a List in ClickUp.
**Parameters:**
- `listId` (string, required): List ID - The ID of the list to get all fields from.
</Accordion>
<Accordion title="CLICKUP_GET_SPACE">
<Accordion title="clickup/get_space">
**Description:** Get Space information in ClickUp.
**Parameters:**
- `spaceId` (string, optional): Space ID - The ID of the space to retrieve.
</Accordion>
<Accordion title="CLICKUP_GET_FOLDERS">
<Accordion title="clickup/get_folders">
**Description:** Get Folders in ClickUp.
**Parameters:**
- `spaceId` (string, required): Space ID - The ID of the space containing the folders.
</Accordion>
<Accordion title="CLICKUP_GET_MEMBER">
<Accordion title="clickup/get_member">
**Description:** Get Member information in ClickUp.
**Parameters:** None required.
@@ -151,19 +151,14 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
from crewai import Agent, Task, Crew
# Get enterprise tools (ClickUp tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with ClickUp capabilities
# Create an agent with Clickup capabilities
clickup_agent = Agent(
role="Task Manager",
goal="Manage tasks and projects in ClickUp efficiently",
backstory="An AI assistant specialized in task management and productivity coordination.",
tools=[enterprise_tools]
apps=['clickup'] # All Clickup actions will be available
)
# Task to create a new task
@@ -185,19 +180,12 @@ crew.kickoff()
### Filtering Specific ClickUp Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific ClickUp tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["clickup_create_task", "clickup_update_task", "clickup_search_tasks"]
)
task_coordinator = Agent(
role="Task Coordinator",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and status management.",
tools=enterprise_tools
apps=['clickup/create_task']
)
# Task to manage task workflow
@@ -219,17 +207,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_manager = Agent(
role="Project Manager",
goal="Coordinate project activities and track team productivity",
backstory="An experienced project manager who ensures projects are delivered on time.",
tools=[enterprise_tools]
apps=['clickup']
)
# Complex task involving multiple ClickUp operations
@@ -256,17 +239,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_analyst = Agent(
role="Task Analyst",
goal="Analyze task patterns and optimize team productivity",
backstory="An AI assistant that analyzes task data to improve team efficiency.",
tools=[enterprise_tools]
apps=['clickup']
)
# Task to analyze and optimize task distribution

View File

@@ -25,7 +25,7 @@ Before using the GitHub integration, ensure you have:
2. Find **GitHub** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for repository and issue management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="GITHUB_CREATE_ISSUE">
<Accordion title="github/create_issue">
**Description:** Create an issue in GitHub.
**Parameters:**
@@ -47,7 +47,7 @@ uv add crewai-tools
- `assignees` (string, optional): Assignees - Specify the assignee(s)' GitHub login as an array of strings for this issue. (example: `["octocat"]`).
</Accordion>
<Accordion title="GITHUB_UPDATE_ISSUE">
<Accordion title="github/update_issue">
**Description:** Update an issue in GitHub.
**Parameters:**
@@ -61,7 +61,7 @@ uv add crewai-tools
- Options: `open`, `closed`
</Accordion>
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
<Accordion title="github/get_issue_by_number">
**Description:** Get an issue by number in GitHub.
**Parameters:**
@@ -70,7 +70,7 @@ uv add crewai-tools
- `issue_number` (string, required): Issue Number - Specify the number of the issue to fetch.
</Accordion>
<Accordion title="GITHUB_LOCK_ISSUE">
<Accordion title="github/lock_issue">
**Description:** Lock an issue in GitHub.
**Parameters:**
@@ -81,7 +81,7 @@ uv add crewai-tools
- Options: `off-topic`, `too heated`, `resolved`, `spam`
</Accordion>
<Accordion title="GITHUB_SEARCH_ISSUE">
<Accordion title="github/search_issue">
**Description:** Search for issues in GitHub.
**Parameters:**
@@ -108,7 +108,7 @@ uv add crewai-tools
Available fields: `assignee`, `creator`, `mentioned`, `labels`
</Accordion>
<Accordion title="GITHUB_CREATE_RELEASE">
<Accordion title="github/create_release">
**Description:** Create a release in GitHub.
**Parameters:**
@@ -126,7 +126,7 @@ uv add crewai-tools
- Options: `true`, `false`
</Accordion>
<Accordion title="GITHUB_UPDATE_RELEASE">
<Accordion title="github/update_release">
**Description:** Update a release in GitHub.
**Parameters:**
@@ -145,7 +145,7 @@ uv add crewai-tools
- Options: `true`, `false`
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
<Accordion title="github/get_release_by_id">
**Description:** Get a release by ID in GitHub.
**Parameters:**
@@ -154,7 +154,7 @@ uv add crewai-tools
- `id` (string, required): Release ID - Specify the release ID of the release to fetch.
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
<Accordion title="github/get_release_by_tag_name">
**Description:** Get a release by tag name in GitHub.
**Parameters:**
@@ -163,7 +163,7 @@ uv add crewai-tools
- `tag_name` (string, required): Name - Specify the tag of the release to fetch. (example: "v1.0.0").
</Accordion>
<Accordion title="GITHUB_DELETE_RELEASE">
<Accordion title="github/delete_release">
**Description:** Delete a release in GitHub.
**Parameters:**
@@ -179,19 +179,14 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
from crewai import Agent, Task, Crew
# Get enterprise tools (GitHub tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with GitHub capabilities
# Create an agent with Github capabilities
github_agent = Agent(
role="Repository Manager",
goal="Manage GitHub repositories, issues, and releases efficiently",
backstory="An AI assistant specialized in repository management and issue tracking.",
tools=[enterprise_tools]
apps=['github'] # All Github actions will be available
)
# Task to create a new issue
@@ -213,19 +208,12 @@ crew.kickoff()
### Filtering Specific GitHub Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific GitHub tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["github_create_issue", "github_update_issue", "github_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage GitHub issues efficiently",
backstory="An AI assistant that focuses on issue tracking and management.",
tools=enterprise_tools
apps=['github/create_issue']
)
# Task to manage issue workflow
@@ -247,17 +235,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
release_manager = Agent(
role="Release Manager",
goal="Manage software releases and versioning",
backstory="An experienced release manager who handles version control and release processes.",
tools=[enterprise_tools]
apps=['github']
)
# Task to create a new release
@@ -284,17 +267,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Track and coordinate project issues and development progress",
backstory="An AI assistant that helps coordinate development work and track project progress.",
tools=[enterprise_tools]
apps=['github']
)
# Complex task involving multiple GitHub operations

View File

@@ -25,7 +25,7 @@ Before using the Gmail integration, ensure you have:
2. Find **Gmail** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for email and contact management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,138 +36,103 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="GMAIL_SEND_EMAIL">
**Description:** Send an email in Gmail.
<Accordion title="gmail/fetch_emails">
**Description:** Retrieve a list of messages.
**Parameters:**
- `toRecipients` (array, required): To - Specify the recipients as either a single string or a JSON array.
```json
[
"recipient1@domain.com",
"recipient2@domain.com"
]
```
- `from` (string, required): From - Specify the email of the sender.
- `subject` (string, required): Subject - Specify the subject of the message.
- `messageContent` (string, required): Message Content - Specify the content of the email message as plain text or HTML.
- `attachments` (string, optional): Attachments - Accepts either a single file object or a JSON array of file objects.
- `additionalHeaders` (object, optional): Additional Headers - Specify any additional header fields here.
```json
{
"reply-to": "Sender Name <sender@domain.com>"
}
```
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `q` (string, optional): Search query to filter messages (e.g., 'from:someone@example.com is:unread').
- `maxResults` (integer, optional): Maximum number of messages to return (1-500). (default: 100)
- `pageToken` (string, optional): Page token to retrieve a specific page of results.
- `labelIds` (array, optional): Only return messages with labels that match all of the specified label IDs.
- `includeSpamTrash` (boolean, optional): Include messages from SPAM and TRASH in the results. (default: false)
</Accordion>
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
**Description:** Get an email by ID in Gmail.
<Accordion title="gmail/send_email">
**Description:** Send an email.
**Parameters:**
- `userId` (string, required): User ID - Specify the user's email address. (example: "user@domain.com").
- `messageId` (string, required): Message ID - Specify the ID of the message to retrieve.
- `to` (string, required): Recipient email address.
- `subject` (string, required): Email subject line.
- `body` (string, required): Email message content.
- `userId` (string, optional): The user's email address or 'me' for the authenticated user. (default: "me")
- `cc` (string, optional): CC email addresses (comma-separated).
- `bcc` (string, optional): BCC email addresses (comma-separated).
- `from` (string, optional): Sender email address (if different from authenticated user).
- `replyTo` (string, optional): Reply-to email address.
- `threadId` (string, optional): Thread ID if replying to an existing conversation.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
**Description:** Search for emails in Gmail using advanced filters.
<Accordion title="gmail/delete_email">
**Description:** Delete an email by ID.
**Parameters:**
- `emailFilterFormula` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "from",
"operator": "$stringContains",
"value": "example@domain.com"
}
]
}
]
}
```
Available fields: `from`, `to`, `date`, `label`, `subject`, `cc`, `bcc`, `category`, `deliveredto:`, `size`, `filename`, `older_than`, `newer_than`, `list`, `is:important`, `is:unread`, `is:snoozed`, `is:starred`, `is:read`, `has:drive`, `has:document`, `has:spreadsheet`, `has:presentation`, `has:attachment`, `has:youtube`, `has:userlabels`
- `paginationParameters` (object, optional): Pagination Parameters.
```json
{
"pageCursor": "page_cursor_string"
}
```
- `userId` (string, required): The user's email address or 'me' for the authenticated user.
- `id` (string, required): The ID of the message to delete.
</Accordion>
<Accordion title="GMAIL_DELETE_EMAIL">
**Description:** Delete an email in Gmail.
<Accordion title="gmail/create_draft">
**Description:** Create a new draft email.
**Parameters:**
- `userId` (string, required): User ID - Specify the user's email address. (example: "user@domain.com").
- `messageId` (string, required): Message ID - Specify the ID of the message to trash.
- `userId` (string, required): The user's email address or 'me' for the authenticated user.
- `message` (object, required): Message object containing the draft content.
- `raw` (string, required): Base64url encoded email message.
</Accordion>
<Accordion title="GMAIL_CREATE_A_CONTACT">
**Description:** Create a contact in Gmail.
<Accordion title="gmail/get_message">
**Description:** Retrieve a specific message by ID.
**Parameters:**
- `givenName` (string, required): Given Name - Specify the Given Name of the Contact to create. (example: "John").
- `familyName` (string, required): Family Name - Specify the Family Name of the Contact to create. (example: "Doe").
- `email` (string, required): Email - Specify the Email Address of the Contact to create.
- `additionalFields` (object, optional): Additional Fields - Additional contact information.
```json
{
"addresses": [
{
"streetAddress": "1000 North St.",
"city": "Los Angeles"
}
]
}
```
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `id` (string, required): The ID of the message to retrieve.
- `format` (string, optional): The format to return the message in. Options: "full", "metadata", "minimal", "raw". (default: "full")
- `metadataHeaders` (array, optional): When given and format is METADATA, only include headers specified.
</Accordion>
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
**Description:** Get a contact by resource name in Gmail.
<Accordion title="gmail/get_attachment">
**Description:** Retrieve a message attachment.
**Parameters:**
- `resourceName` (string, required): Resource Name - Specify the resource name of the contact to fetch.
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `messageId` (string, required): The ID of the message containing the attachment.
- `id` (string, required): The ID of the attachment to retrieve.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
**Description:** Search for a contact in Gmail.
<Accordion title="gmail/fetch_thread">
**Description:** Retrieve a specific email thread by ID.
**Parameters:**
- `searchTerm` (string, required): Term - Specify a search term to search for near or exact matches on the names, nickNames, emailAddresses, phoneNumbers, or organizations Contact properties.
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `id` (string, required): The ID of the thread to retrieve.
- `format` (string, optional): The format to return the messages in. Options: "full", "metadata", "minimal". (default: "full")
- `metadataHeaders` (array, optional): When given and format is METADATA, only include headers specified.
</Accordion>
<Accordion title="GMAIL_DELETE_CONTACT">
**Description:** Delete a contact in Gmail.
<Accordion title="gmail/modify_thread">
**Description:** Modify the labels applied to a thread.
**Parameters:**
- `resourceName` (string, required): Resource Name - Specify the resource name of the contact to delete.
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `id` (string, required): The ID of the thread to modify.
- `addLabelIds` (array, optional): A list of IDs of labels to add to this thread.
- `removeLabelIds` (array, optional): A list of IDs of labels to remove from this thread.
</Accordion>
<Accordion title="GMAIL_CREATE_DRAFT">
**Description:** Create a draft in Gmail.
<Accordion title="gmail/trash_thread">
**Description:** Move a thread to the trash.
**Parameters:**
- `toRecipients` (array, optional): To - Specify the recipients as either a single string or a JSON array.
```json
[
"recipient1@domain.com",
"recipient2@domain.com"
]
```
- `from` (string, optional): From - Specify the email of the sender.
- `subject` (string, optional): Subject - Specify the subject of the message.
- `messageContent` (string, optional): Message Content - Specify the content of the email message as plain text or HTML.
- `attachments` (string, optional): Attachments - Accepts either a single file object or a JSON array of file objects.
- `additionalHeaders` (object, optional): Additional Headers - Specify any additional header fields here.
```json
{
"reply-to": "Sender Name <sender@domain.com>"
}
```
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `id` (string, required): The ID of the thread to trash.
</Accordion>
<Accordion title="gmail/untrash_thread">
**Description:** Remove a thread from the trash.
**Parameters:**
- `userId` (string, required): The user's email address or 'me' for the authenticated user. (default: "me")
- `id` (string, required): The ID of the thread to untrash.
</Accordion>
</AccordionGroup>
@@ -177,19 +142,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Gmail capabilities
gmail_agent = Agent(
role="Email Manager",
goal="Manage email communications and contacts efficiently",
goal="Manage email communications and messages efficiently",
backstory="An AI assistant specialized in email management and communication.",
tools=[enterprise_tools]
apps=['gmail'] # All Gmail actions will be available
)
# Task to send a follow-up email
@@ -211,19 +170,18 @@ crew.kickoff()
### Filtering Specific Gmail Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Gmail tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["gmail_send_email", "gmail_search_for_email", "gmail_create_draft"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Gmail actions only
email_coordinator = Agent(
role="Email Coordinator",
goal="Coordinate email communications and manage drafts",
backstory="An AI assistant that focuses on email coordination and draft management.",
tools=enterprise_tools
apps=[
'gmail/send_email',
'gmail/fetch_emails',
'gmail/create_draft'
]
)
# Task to prepare and send emails
@@ -241,57 +199,17 @@ crew = Crew(
crew.kickoff()
```
### Contact Management
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
contact_manager = Agent(
role="Contact Manager",
goal="Manage and organize email contacts efficiently",
backstory="An experienced contact manager who maintains organized contact databases.",
tools=[enterprise_tools]
)
# Task to manage contacts
contact_task = Task(
description="""
1. Search for contacts from the 'example.com' domain
2. Create new contacts for recent email senders not in the contact list
3. Update contact information with recent interaction data
""",
agent=contact_manager,
expected_output="Contact database updated with new contacts and recent interactions"
)
crew = Crew(
agents=[contact_manager],
tasks=[contact_task]
)
crew.kickoff()
```
### Email Search and Analysis
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create agent with Gmail search and analysis capabilities
email_analyst = Agent(
role="Email Analyst",
goal="Analyze email patterns and provide insights",
backstory="An AI assistant that analyzes email data to provide actionable insights.",
tools=[enterprise_tools]
apps=['gmail/fetch_emails', 'gmail/get_message'] # Specific actions for email analysis
)
# Task to analyze email patterns
@@ -313,38 +231,37 @@ crew = Crew(
crew.kickoff()
```
### Automated Email Workflows
### Thread Management
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
# Create agent with Gmail thread management capabilities
thread_manager = Agent(
role="Thread Manager",
goal="Organize and manage email threads efficiently",
backstory="An AI assistant that specializes in email thread organization and management.",
apps=[
'gmail/fetch_thread',
'gmail/modify_thread',
'gmail/trash_thread'
]
)
workflow_manager = Agent(
role="Email Workflow Manager",
goal="Automate email workflows and responses",
backstory="An AI assistant that manages automated email workflows and responses.",
tools=[enterprise_tools]
)
# Complex task involving multiple Gmail operations
workflow_task = Task(
# Task to organize email threads
thread_task = Task(
description="""
1. Search for emails with 'urgent' in the subject from the last 24 hours
2. Create draft responses for each urgent email
3. Send automated acknowledgment emails to senders
4. Create a summary report of urgent items requiring attention
1. Fetch all threads from the last month
2. Apply appropriate labels to organize threads by project
3. Archive or trash threads that are no longer relevant
""",
agent=workflow_manager,
expected_output="Urgent emails processed with automated responses and summary report"
agent=thread_manager,
expected_output="Email threads organized with appropriate labels and cleanup completed"
)
crew = Crew(
agents=[workflow_manager],
tasks=[workflow_task]
agents=[thread_manager],
tasks=[thread_task]
)
crew.kickoff()

View File

@@ -24,8 +24,8 @@ Before using the Google Calendar integration, ensure you have:
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Google Calendar** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for calendar and contact access
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
4. Grant the necessary permissions for calendar access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,141 +36,121 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
**Description:** Create an event in Google Calendar.
<Accordion title="google_calendar/get_availability">
**Description:** Get calendar availability (free/busy information).
**Parameters:**
- `eventName` (string, required): Event name.
- `startTime` (string, required): Start time - Accepts Unix timestamp or ISO8601 date formats.
- `endTime` (string, optional): End time - Defaults to one hour after the start time if left blank.
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
- `attendees` (string, optional): Attendees - Accepts an array of email addresses or email addresses separated by commas.
- `eventLocation` (string, optional): Event location.
- `eventDescription` (string, optional): Event description.
- `eventId` (string, optional): Event ID - An ID from your application to associate this event with. You can use this ID to sync updates to this event later.
- `includeMeetLink` (boolean, optional): Include Google Meet link? - Automatically creates Google Meet conference link for this event.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
**Description:** Update an existing event in Google Calendar.
**Parameters:**
- `eventId` (string, required): Event ID - The ID of the event to update.
- `eventName` (string, optional): Event name.
- `startTime` (string, optional): Start time - Accepts Unix timestamp or ISO8601 date formats.
- `endTime` (string, optional): End time - Defaults to one hour after the start time if left blank.
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
- `attendees` (string, optional): Attendees - Accepts an array of email addresses or email addresses separated by commas.
- `eventLocation` (string, optional): Event location.
- `eventDescription` (string, optional): Event description.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
**Description:** List events from Google Calendar.
**Parameters:**
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
- `after` (string, optional): After - Filters events that start after the provided date (Unix in milliseconds or ISO timestamp). (example: "2025-04-12T10:00:00Z or 1712908800000").
- `before` (string, optional): Before - Filters events that end before the provided date (Unix in milliseconds or ISO timestamp). (example: "2025-04-12T10:00:00Z or 1712908800000").
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
**Description:** Get a specific event by ID from Google Calendar.
**Parameters:**
- `eventId` (string, required): Event ID.
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
**Description:** Delete an event from Google Calendar.
**Parameters:**
- `eventId` (string, required): Event ID - The ID of the calendar event to be deleted.
- `calendar` (string, optional): Calendar - Use Connect Portal Workflow Settings to allow users to select which calendar the event will be added to. Defaults to the user's primary calendar if left blank.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
**Description:** Get contacts from Google Calendar.
**Parameters:**
- `paginationParameters` (object, optional): Pagination Parameters.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
**Description:** Search for contacts in Google Calendar.
**Parameters:**
- `query` (string, optional): Search query to search contacts.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
**Description:** List directory people.
**Parameters:**
- `paginationParameters` (object, optional): Pagination Parameters.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
**Description:** Search directory people.
**Parameters:**
- `query` (string, required): Search query to search contacts.
- `paginationParameters` (object, optional): Pagination Parameters.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
**Description:** List other contacts.
**Parameters:**
- `paginationParameters` (object, optional): Pagination Parameters.
```json
{
"pageCursor": "page_cursor_string"
}
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
**Description:** Search other contacts.
**Parameters:**
- `query` (string, optional): Search query to search contacts.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
**Description:** Get availability information for calendars.
**Parameters:**
- `timeMin` (string, required): The start of the interval. In ISO format.
- `timeMax` (string, required): The end of the interval. In ISO format.
- `timeZone` (string, optional): Time zone used in the response. Optional. The default is UTC.
- `items` (array, optional): List of calendars and/or groups to query. Defaults to the user default calendar.
- `timeMin` (string, required): Start time (RFC3339 format)
- `timeMax` (string, required): End time (RFC3339 format)
- `items` (array, required): Calendar IDs to check
```json
[
{
"id": "calendar_id_1"
},
{
"id": "calendar_id_2"
"id": "calendar_id"
}
]
```
- `timeZone` (string, optional): Time zone used in the response. The default is UTC.
- `groupExpansionMax` (integer, optional): Maximal number of calendar identifiers to be provided for a single group. Maximum: 100
- `calendarExpansionMax` (integer, optional): Maximal number of calendars for which FreeBusy information is to be provided. Maximum: 50
</Accordion>
<Accordion title="google_calendar/create_event">
**Description:** Create a new event in the specified calendar.
**Parameters:**
- `calendarId` (string, required): Calendar ID (use 'primary' for main calendar)
- `summary` (string, required): Event title/summary
- `start_dateTime` (string, required): Start time in RFC3339 format (e.g., 2024-01-20T10:00:00-07:00)
- `end_dateTime` (string, required): End time in RFC3339 format
- `description` (string, optional): Event description
- `timeZone` (string, optional): Time zone (e.g., America/Los_Angeles)
- `location` (string, optional): Geographic location of the event as free-form text.
- `attendees` (array, optional): List of attendees for the event.
```json
[
{
"email": "attendee@example.com",
"displayName": "Attendee Name",
"optional": false
}
]
```
- `reminders` (object, optional): Information about the event's reminders.
```json
{
"useDefault": true,
"overrides": [
{
"method": "email",
"minutes": 15
}
]
}
```
- `conferenceData` (object, optional): The conference-related information, such as details of a Google Meet conference.
```json
{
"createRequest": {
"requestId": "unique-request-id",
"conferenceSolutionKey": {
"type": "hangoutsMeet"
}
}
}
```
- `visibility` (string, optional): Visibility of the event. Options: default, public, private, confidential. Default: default
- `transparency` (string, optional): Whether the event blocks time on the calendar. Options: opaque, transparent. Default: opaque
</Accordion>
<Accordion title="google_calendar/view_events">
**Description:** Retrieve events for the specified calendar.
**Parameters:**
- `calendarId` (string, required): Calendar ID (use 'primary' for main calendar)
- `timeMin` (string, optional): Lower bound for events (RFC3339)
- `timeMax` (string, optional): Upper bound for events (RFC3339)
- `maxResults` (integer, optional): Maximum number of events (default 10). Minimum: 1, Maximum: 2500
- `orderBy` (string, optional): The order of the events returned in the result. Options: startTime, updated. Default: startTime
- `singleEvents` (boolean, optional): Whether to expand recurring events into instances and only return single one-off events and instances of recurring events. Default: true
- `showDeleted` (boolean, optional): Whether to include deleted events (with status equals cancelled) in the result. Default: false
- `showHiddenInvitations` (boolean, optional): Whether to include hidden invitations in the result. Default: false
- `q` (string, optional): Free text search terms to find events that match these terms in any field.
- `pageToken` (string, optional): Token specifying which result page to return.
- `timeZone` (string, optional): Time zone used in the response.
- `updatedMin` (string, optional): Lower bound for an event's last modification time (RFC3339) to filter by.
- `iCalUID` (string, optional): Specifies an event ID in the iCalendar format to be provided in the response.
</Accordion>
<Accordion title="google_calendar/update_event">
**Description:** Update an existing event.
**Parameters:**
- `calendarId` (string, required): Calendar ID
- `eventId` (string, required): Event ID to update
- `summary` (string, optional): Updated event title
- `description` (string, optional): Updated event description
- `start_dateTime` (string, optional): Updated start time
- `end_dateTime` (string, optional): Updated end time
</Accordion>
<Accordion title="google_calendar/delete_event">
**Description:** Delete a specified event.
**Parameters:**
- `calendarId` (string, required): Calendar ID
- `eventId` (string, required): Event ID to delete
</Accordion>
<Accordion title="google_calendar/view_calendar_list">
**Description:** Retrieve user's calendar list.
**Parameters:**
- `maxResults` (integer, optional): Maximum number of entries returned on one result page. Minimum: 1
- `pageToken` (string, optional): Token specifying which result page to return.
- `showDeleted` (boolean, optional): Whether to include deleted calendar list entries in the result. Default: false
- `showHidden` (boolean, optional): Whether to show hidden entries. Default: false
- `minAccessRole` (string, optional): The minimum access role for the user in the returned entries. Options: freeBusyReader, owner, reader, writer
</Accordion>
</AccordionGroup>
@@ -180,19 +160,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Calendar tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Calendar capabilities
calendar_agent = Agent(
role="Schedule Manager",
goal="Manage calendar events and scheduling efficiently",
backstory="An AI assistant specialized in calendar management and scheduling coordination.",
tools=[enterprise_tools]
apps=['google_calendar'] # All Google Calendar actions will be available
)
# Task to create a meeting
@@ -214,19 +188,11 @@ crew.kickoff()
### Filtering Specific Calendar Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Calendar tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
)
meeting_coordinator = Agent(
role="Meeting Coordinator",
goal="Coordinate meetings and check availability",
backstory="An AI assistant that focuses on meeting scheduling and availability management.",
tools=enterprise_tools
apps=['google_calendar/create_event', 'google_calendar/get_availability']
)
# Task to schedule a meeting with availability check
@@ -248,17 +214,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
event_manager = Agent(
role="Event Manager",
goal="Manage and update calendar events efficiently",
backstory="An experienced event manager who handles event logistics and updates.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Task to manage event updates
@@ -266,10 +227,10 @@ event_management = Task(
description="""
1. List all events for this week
2. Update any events that need location changes to include video conference links
3. Send calendar invitations to new team members for recurring meetings
3. Check availability for upcoming meetings
""",
agent=event_manager,
expected_output="Weekly events updated with proper locations and new attendees added"
expected_output="Weekly events updated with proper locations and availability checked"
)
crew = Crew(
@@ -280,33 +241,28 @@ crew = Crew(
crew.kickoff()
```
### Contact and Availability Management
### Availability and Calendar Management
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
availability_coordinator = Agent(
role="Availability Coordinator",
goal="Coordinate availability and manage contacts for scheduling",
backstory="An AI assistant that specializes in availability management and contact coordination.",
tools=[enterprise_tools]
goal="Coordinate availability and manage calendars for scheduling",
backstory="An AI assistant that specializes in availability management and calendar coordination.",
apps=['google_calendar']
)
# Task to coordinate availability
availability_task = Task(
description="""
1. Search for contacts in the engineering department
2. Check availability for all engineers next Friday afternoon
1. Get the list of available calendars
2. Check availability for all calendars next Friday afternoon
3. Create a team meeting for the first available 2-hour slot
4. Include Google Meet link and send invitations
""",
agent=availability_coordinator,
expected_output="Team meeting scheduled based on availability with all engineers invited"
expected_output="Team meeting scheduled based on availability with all team members invited"
)
crew = Crew(
@@ -321,17 +277,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
scheduling_automator = Agent(
role="Scheduling Automator",
goal="Automate scheduling workflows and calendar management",
backstory="An AI assistant that automates complex scheduling scenarios and calendar workflows.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Complex scheduling automation task
@@ -365,21 +316,16 @@ crew.kickoff()
- Check if calendar sharing settings allow the required access level
**Event Creation Issues**
- Verify that time formats are correct (ISO8601 or Unix timestamps)
- Verify that time formats are correct (RFC3339 format)
- Ensure attendee email addresses are properly formatted
- Check that the target calendar exists and is accessible
- Verify time zones are correctly specified
**Availability and Time Conflicts**
- Use proper ISO format for time ranges when checking availability
- Use proper RFC3339 format for time ranges when checking availability
- Ensure time zones are consistent across all operations
- Verify that calendar IDs are correct when checking multiple calendars
**Contact and People Search**
- Ensure search queries are properly formatted
- Check that directory access permissions are granted
- Verify that contact information is up to date and accessible
**Event Updates and Deletions**
- Verify that event IDs are correct and events exist
- Ensure you have edit permissions for the events

View File

@@ -0,0 +1,402 @@
---
title: Google Contacts Integration
description: "Contact and directory management with Google Contacts integration for CrewAI."
icon: "address-book"
mode: "wide"
---
## Overview
Enable your agents to manage contacts and directory information through Google Contacts. Access personal contacts, search directory people, create and update contact information, and manage contact groups with AI-powered automation.
## Prerequisites
Before using the Google Contacts integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Google account with Google Contacts access
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Google Contacts Integration
### 1. Connect Your Google Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Google Contacts** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for contacts and directory access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="google_contacts/get_contacts">
**Description:** Retrieve user's contacts from Google Contacts.
**Parameters:**
- `pageSize` (integer, optional): Number of contacts to return (max 1000). Minimum: 1, Maximum: 1000
- `pageToken` (string, optional): The token of the page to retrieve.
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
- `sortOrder` (string, optional): The order in which the connections should be sorted. Options: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
</Accordion>
<Accordion title="google_contacts/search_contacts">
**Description:** Search for contacts using a query string.
**Parameters:**
- `query` (string, required): Search query string
- `readMask` (string, required): Fields to read (e.g., 'names,emailAddresses,phoneNumbers')
- `pageSize` (integer, optional): Number of results to return. Minimum: 1, Maximum: 30
- `pageToken` (string, optional): Token specifying which result page to return.
- `sources` (array, optional): The sources to search in. Options: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. Default: READ_SOURCE_TYPE_CONTACT
</Accordion>
<Accordion title="google_contacts/list_directory_people">
**Description:** List people in the authenticated user's directory.
**Parameters:**
- `sources` (array, required): Directory sources to search within. Options: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. Default: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
- `pageSize` (integer, optional): Number of people to return. Minimum: 1, Maximum: 1000
- `pageToken` (string, optional): Token specifying which result page to return.
- `readMask` (string, optional): Fields to read (e.g., 'names,emailAddresses')
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
- `mergeSources` (array, optional): Additional data to merge into the directory people responses. Options: CONTACT
</Accordion>
<Accordion title="google_contacts/search_directory_people">
**Description:** Search for people in the directory.
**Parameters:**
- `query` (string, required): Search query
- `sources` (string, required): Directory sources (use 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE')
- `pageSize` (integer, optional): Number of results to return
- `readMask` (string, optional): Fields to read
</Accordion>
<Accordion title="google_contacts/list_other_contacts">
**Description:** List other contacts (not in user's personal contacts).
**Parameters:**
- `pageSize` (integer, optional): Number of contacts to return. Minimum: 1, Maximum: 1000
- `pageToken` (string, optional): Token specifying which result page to return.
- `readMask` (string, optional): Fields to read
- `requestSyncToken` (boolean, optional): Whether the response should include a sync token. Default: false
</Accordion>
<Accordion title="google_contacts/search_other_contacts">
**Description:** Search other contacts.
**Parameters:**
- `query` (string, required): Search query
- `readMask` (string, required): Fields to read (e.g., 'names,emailAddresses')
- `pageSize` (integer, optional): Number of results
</Accordion>
<Accordion title="google_contacts/get_person">
**Description:** Get a single person's contact information by resource name.
**Parameters:**
- `resourceName` (string, required): The resource name of the person to get (e.g., 'people/c123456789')
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/create_contact">
**Description:** Create a new contact in the user's address book.
**Parameters:**
- `names` (array, optional): Person's names
```json
[
{
"givenName": "John",
"familyName": "Doe",
"displayName": "John Doe"
}
]
```
- `emailAddresses` (array, optional): Email addresses
```json
[
{
"value": "john.doe@example.com",
"type": "work"
}
]
```
- `phoneNumbers` (array, optional): Phone numbers
```json
[
{
"value": "+1234567890",
"type": "mobile"
}
]
```
- `addresses` (array, optional): Postal addresses
```json
[
{
"formattedValue": "123 Main St, City, State 12345",
"type": "home"
}
]
```
- `organizations` (array, optional): Organizations/companies
```json
[
{
"name": "Company Name",
"title": "Job Title",
"type": "work"
}
]
```
</Accordion>
<Accordion title="google_contacts/update_contact">
**Description:** Update an existing contact's information.
**Parameters:**
- `resourceName` (string, required): The resource name of the person to update (e.g., 'people/c123456789')
- `updatePersonFields` (string, required): Fields to update (e.g., 'names,emailAddresses,phoneNumbers')
- `names` (array, optional): Person's names
- `emailAddresses` (array, optional): Email addresses
- `phoneNumbers` (array, optional): Phone numbers
</Accordion>
<Accordion title="google_contacts/delete_contact">
**Description:** Delete a contact from the user's address book.
**Parameters:**
- `resourceName` (string, required): The resource name of the person to delete (e.g., 'people/c123456789')
</Accordion>
<Accordion title="google_contacts/batch_get_people">
**Description:** Get information about multiple people in a single request.
**Parameters:**
- `resourceNames` (array, required): Resource names of people to get. Maximum: 200 items
- `personFields` (string, optional): Fields to include (e.g., 'names,emailAddresses,phoneNumbers'). Default: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/list_contact_groups">
**Description:** List the user's contact groups (labels).
**Parameters:**
- `pageSize` (integer, optional): Number of contact groups to return. Minimum: 1, Maximum: 1000
- `pageToken` (string, optional): Token specifying which result page to return.
- `groupFields` (string, optional): Fields to include (e.g., 'name,memberCount,clientData'). Default: name,memberCount
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Google Contacts Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Google Contacts capabilities
contacts_agent = Agent(
role="Contact Manager",
goal="Manage contacts and directory information efficiently",
backstory="An AI assistant specialized in contact management and directory operations.",
apps=['google_contacts'] # All Google Contacts actions will be available
)
# Task to retrieve and organize contacts
contact_management_task = Task(
description="Retrieve all contacts and organize them by company affiliation",
agent=contacts_agent,
expected_output="Contacts retrieved and organized by company with summary report"
)
# Run the task
crew = Crew(
agents=[contacts_agent],
tasks=[contact_management_task]
)
crew.kickoff()
```
### Directory Search and Management
```python
from crewai import Agent, Task, Crew
directory_manager = Agent(
role="Directory Manager",
goal="Search and manage directory people and contacts",
backstory="An AI assistant that specializes in directory management and people search.",
apps=[
'google_contacts/search_directory_people',
'google_contacts/list_directory_people',
'google_contacts/search_contacts'
]
)
# Task to search and manage directory
directory_task = Task(
description="Search for team members in the company directory and create a team contact list",
agent=directory_manager,
expected_output="Team directory compiled with contact information"
)
crew = Crew(
agents=[directory_manager],
tasks=[directory_task]
)
crew.kickoff()
```
### Contact Creation and Updates
```python
from crewai import Agent, Task, Crew
contact_curator = Agent(
role="Contact Curator",
goal="Create and update contact information systematically",
backstory="An AI assistant that maintains accurate and up-to-date contact information.",
apps=['google_contacts']
)
# Task to create and update contacts
curation_task = Task(
description="""
1. Search for existing contacts related to new business partners
2. Create new contacts for partners not in the system
3. Update existing contact information with latest details
4. Organize contacts into appropriate groups
""",
agent=contact_curator,
expected_output="Contact database updated with new partners and organized groups"
)
crew = Crew(
agents=[contact_curator],
tasks=[curation_task]
)
crew.kickoff()
```
### Contact Group Management
```python
from crewai import Agent, Task, Crew
group_organizer = Agent(
role="Contact Group Organizer",
goal="Organize contacts into meaningful groups and categories",
backstory="An AI assistant that specializes in contact organization and group management.",
apps=['google_contacts']
)
# Task to organize contact groups
organization_task = Task(
description="""
1. List all existing contact groups
2. Analyze contact distribution across groups
3. Create new groups for better organization
4. Move contacts to appropriate groups based on their information
""",
agent=group_organizer,
expected_output="Contacts organized into logical groups with improved structure"
)
crew = Crew(
agents=[group_organizer],
tasks=[organization_task]
)
crew.kickoff()
```
### Comprehensive Contact Management
```python
from crewai import Agent, Task, Crew
contact_specialist = Agent(
role="Contact Management Specialist",
goal="Provide comprehensive contact management across all sources",
backstory="An AI assistant that handles all aspects of contact management including personal, directory, and other contacts.",
apps=['google_contacts']
)
# Complex contact management task
comprehensive_task = Task(
description="""
1. Retrieve contacts from all sources (personal, directory, other)
2. Search for duplicate contacts and merge information
3. Update outdated contact information
4. Create missing contacts for important stakeholders
5. Organize contacts into meaningful groups
6. Generate a comprehensive contact report
""",
agent=contact_specialist,
expected_output="Complete contact management performed with unified contact database and detailed report"
)
crew = Crew(
agents=[contact_specialist],
tasks=[comprehensive_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Permission Errors**
- Ensure your Google account has appropriate permissions for contacts access
- Verify that the OAuth connection includes required scopes for Google Contacts API
- Check that directory access permissions are granted for organization contacts
**Resource Name Format Issues**
- Ensure resource names follow the correct format (e.g., 'people/c123456789' for contacts)
- Verify that contact group resource names use the format 'contactGroups/groupId'
- Check that resource names exist and are accessible
**Search and Query Issues**
- Ensure search queries are properly formatted and not empty
- Use appropriate readMask fields for the data you need
- Verify that search sources are correctly specified (contacts vs profiles)
**Contact Creation and Updates**
- Ensure required fields are provided when creating contacts
- Verify that email addresses and phone numbers are properly formatted
- Check that updatePersonFields parameter includes all fields being updated
**Directory Access Issues**
- Ensure you have appropriate permissions to access organization directory
- Verify that directory sources are correctly specified
- Check that your organization allows API access to directory information
**Pagination and Limits**
- Be mindful of page size limits (varies by endpoint)
- Use pageToken for pagination through large result sets
- Respect API rate limits and implement appropriate delays
**Contact Groups and Organization**
- Ensure contact group names are unique when creating new groups
- Verify that contacts exist before adding them to groups
- Check that you have permissions to modify contact groups
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Google Contacts integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,228 @@
---
title: Google Docs Integration
description: "Document creation and editing with Google Docs integration for CrewAI."
icon: "file-lines"
mode: "wide"
---
## Overview
Enable your agents to create, edit, and manage Google Docs documents with text manipulation and formatting. Automate document creation, insert and replace text, manage content ranges, and streamline your document workflows with AI-powered automation.
## Prerequisites
Before using the Google Docs integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Google account with Google Docs access
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Google Docs Integration
### 1. Connect Your Google Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Google Docs** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for document access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="google_docs/create_document">
**Description:** Create a new Google Document.
**Parameters:**
- `title` (string, optional): The title for the new document.
</Accordion>
<Accordion title="google_docs/get_document">
**Description:** Get the contents and metadata of a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to retrieve.
- `includeTabsContent` (boolean, optional): Whether to include tab content. Default is `false`.
- `suggestionsViewMode` (string, optional): The suggestions view mode to apply to the document. Enum: `DEFAULT_FOR_CURRENT_ACCESS`, `PREVIEW_SUGGESTIONS_ACCEPTED`, `PREVIEW_WITHOUT_SUGGESTIONS`. Default is `DEFAULT_FOR_CURRENT_ACCESS`.
</Accordion>
<Accordion title="google_docs/batch_update">
**Description:** Apply one or more updates to a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `requests` (array, required): A list of updates to apply to the document. Each item is an object representing a request.
- `writeControl` (object, optional): Provides control over how write requests are executed. Contains `requiredRevisionId` (string) and `targetRevisionId` (string).
</Accordion>
<Accordion title="google_docs/insert_text">
**Description:** Insert text into a Google Document at a specific location.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `text` (string, required): The text to insert.
- `index` (integer, optional): The zero-based index where to insert the text. Default is `1`.
</Accordion>
<Accordion title="google_docs/replace_text">
**Description:** Replace all instances of text in a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `containsText` (string, required): The text to find and replace.
- `replaceText` (string, required): The text to replace it with.
- `matchCase` (boolean, optional): Whether the search should respect case. Default is `false`.
</Accordion>
<Accordion title="google_docs/delete_content_range">
**Description:** Delete content from a specific range in a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `startIndex` (integer, required): The start index of the range to delete.
- `endIndex` (integer, required): The end index of the range to delete.
</Accordion>
<Accordion title="google_docs/insert_page_break">
**Description:** Insert a page break at a specific location in a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `index` (integer, optional): The zero-based index where to insert the page break. Default is `1`.
</Accordion>
<Accordion title="google_docs/create_named_range">
**Description:** Create a named range in a Google Document.
**Parameters:**
- `documentId` (string, required): The ID of the document to update.
- `name` (string, required): The name for the named range.
- `startIndex` (integer, required): The start index of the range.
- `endIndex` (integer, required): The end index of the range.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Google Docs Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Google Docs capabilities
docs_agent = Agent(
role="Document Creator",
goal="Create and manage Google Docs documents efficiently",
backstory="An AI assistant specialized in Google Docs document creation and editing.",
apps=['google_docs'] # All Google Docs actions will be available
)
# Task to create a new document
create_doc_task = Task(
description="Create a new Google Document titled 'Project Status Report'",
agent=docs_agent,
expected_output="New Google Document 'Project Status Report' created successfully"
)
# Run the task
crew = Crew(
agents=[docs_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
### Text Editing and Content Management
```python
from crewai import Agent, Task, Crew
# Create an agent focused on text editing
text_editor = Agent(
role="Document Editor",
goal="Edit and update content in Google Docs documents",
backstory="An AI assistant skilled in precise text editing and content management.",
apps=['google_docs/insert_text', 'google_docs/replace_text', 'google_docs/delete_content_range']
)
# Task to edit document content
edit_content_task = Task(
description="In document 'your_document_id', insert the text 'Executive Summary: ' at the beginning, then replace all instances of 'TODO' with 'COMPLETED'.",
agent=text_editor,
expected_output="Document updated with new text inserted and TODO items replaced."
)
crew = Crew(
agents=[text_editor],
tasks=[edit_content_task]
)
crew.kickoff()
```
### Advanced Document Operations
```python
from crewai import Agent, Task, Crew
# Create an agent for advanced document operations
document_formatter = Agent(
role="Document Formatter",
goal="Apply advanced formatting and structure to Google Docs",
backstory="An AI assistant that handles complex document formatting and organization.",
apps=['google_docs/batch_update', 'google_docs/insert_page_break', 'google_docs/create_named_range']
)
# Task to format document
format_doc_task = Task(
description="In document 'your_document_id', insert a page break at position 100, create a named range called 'Introduction' for characters 1-50, and apply batch formatting updates.",
agent=document_formatter,
expected_output="Document formatted with page break, named range, and styling applied."
)
crew = Crew(
agents=[document_formatter],
tasks=[format_doc_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Authentication Errors**
- Ensure your Google account has the necessary permissions for Google Docs access.
- Verify that the OAuth connection includes all required scopes (`https://www.googleapis.com/auth/documents`).
**Document ID Issues**
- Double-check document IDs for correctness.
- Ensure the document exists and is accessible to your account.
- Document IDs can be found in the Google Docs URL.
**Text Insertion and Range Operations**
- When using `insert_text` or `delete_content_range`, ensure index positions are valid.
- Remember that Google Docs uses zero-based indexing.
- The document must have content at the specified index positions.
**Batch Update Request Formatting**
- When using `batch_update`, ensure the `requests` array is correctly formatted according to the Google Docs API documentation.
- Complex updates require specific JSON structures for each request type.
**Replace Text Operations**
- For `replace_text`, ensure the `containsText` parameter exactly matches the text you want to replace.
- Use `matchCase` parameter to control case sensitivity.
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Google Docs integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,213 @@
---
title: Google Drive Integration
description: "File storage and management with Google Drive integration for CrewAI."
icon: "google"
mode: "wide"
---
## Overview
Enable your agents to manage files and folders through Google Drive. Upload, download, organize, and share files, create folders, and streamline your document management workflows with AI-powered automation.
## Prerequisites
Before using the Google Drive integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Google account with Google Drive access
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Google Drive Integration
### 1. Connect Your Google Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Google Drive** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for file and folder management
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="google_drive/get_file">
**Description:** Get a file by ID from Google Drive.
**Parameters:**
- `file_id` (string, required): The ID of the file to retrieve.
</Accordion>
<Accordion title="google_drive/list_files">
**Description:** List files in Google Drive.
**Parameters:**
- `q` (string, optional): Query string to filter files (example: "name contains 'report'").
- `page_size` (integer, optional): Maximum number of files to return (default: 100, max: 1000).
- `page_token` (string, optional): Token for retrieving the next page of results.
- `order_by` (string, optional): Sort order (example: "name", "createdTime desc", "modifiedTime").
- `spaces` (string, optional): Comma-separated list of spaces to query (drive, appDataFolder, photos).
</Accordion>
<Accordion title="google_drive/upload_file">
**Description:** Upload a file to Google Drive.
**Parameters:**
- `name` (string, required): Name of the file to create.
- `content` (string, required): Content of the file to upload.
- `mime_type` (string, optional): MIME type of the file (example: "text/plain", "application/pdf").
- `parent_folder_id` (string, optional): ID of the parent folder where the file should be created.
- `description` (string, optional): Description of the file.
</Accordion>
<Accordion title="google_drive/download_file">
**Description:** Download a file from Google Drive.
**Parameters:**
- `file_id` (string, required): The ID of the file to download.
- `mime_type` (string, optional): MIME type for export (required for Google Workspace documents).
</Accordion>
<Accordion title="google_drive/create_folder">
**Description:** Create a new folder in Google Drive.
**Parameters:**
- `name` (string, required): Name of the folder to create.
- `parent_folder_id` (string, optional): ID of the parent folder where the new folder should be created.
- `description` (string, optional): Description of the folder.
</Accordion>
<Accordion title="google_drive/delete_file">
**Description:** Delete a file from Google Drive.
**Parameters:**
- `file_id` (string, required): The ID of the file to delete.
</Accordion>
<Accordion title="google_drive/share_file">
**Description:** Share a file in Google Drive with specific users or make it public.
**Parameters:**
- `file_id` (string, required): The ID of the file to share.
- `role` (string, required): The role granted by this permission (reader, writer, commenter, owner).
- `type` (string, required): The type of the grantee (user, group, domain, anyone).
- `email_address` (string, optional): The email address of the user or group to share with (required for user/group types).
- `domain` (string, optional): The domain to share with (required for domain type).
- `send_notification_email` (boolean, optional): Whether to send a notification email (default: true).
- `email_message` (string, optional): A plain text custom message to include in the notification email.
</Accordion>
<Accordion title="google_drive/update_file">
**Description:** Update an existing file in Google Drive.
**Parameters:**
- `file_id` (string, required): The ID of the file to update.
- `name` (string, optional): New name for the file.
- `content` (string, optional): New content for the file.
- `mime_type` (string, optional): New MIME type for the file.
- `description` (string, optional): New description for the file.
- `add_parents` (string, optional): Comma-separated list of parent folder IDs to add.
- `remove_parents` (string, optional): Comma-separated list of parent folder IDs to remove.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Google Drive Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Google Drive capabilities
drive_agent = Agent(
role="File Manager",
goal="Manage files and folders in Google Drive efficiently",
backstory="An AI assistant specialized in document and file management.",
apps=['google_drive'] # All Google Drive actions will be available
)
# Task to organize files
organize_files_task = Task(
description="List all files in the root directory and organize them into appropriate folders",
agent=drive_agent,
expected_output="Summary of files organized with folder structure"
)
# Run the task
crew = Crew(
agents=[drive_agent],
tasks=[organize_files_task]
)
crew.kickoff()
```
### Filtering Specific Google Drive Tools
```python
from crewai import Agent, Task, Crew
# Create agent with specific Google Drive actions only
file_manager_agent = Agent(
role="Document Manager",
goal="Upload and manage documents efficiently",
backstory="An AI assistant that focuses on document upload and organization.",
apps=[
'google_drive/upload_file',
'google_drive/create_folder',
'google_drive/share_file'
] # Specific Google Drive actions
)
# Task to upload and share documents
document_task = Task(
description="Upload the quarterly report and share it with the finance team",
agent=file_manager_agent,
expected_output="Document uploaded and sharing permissions configured"
)
crew = Crew(
agents=[file_manager_agent],
tasks=[document_task]
)
crew.kickoff()
```
### Advanced File Management
```python
from crewai import Agent, Task, Crew
file_organizer = Agent(
role="File Organizer",
goal="Maintain organized file structure and manage permissions",
backstory="An experienced file manager who ensures proper organization and access control.",
apps=['google_drive']
)
# Complex task involving multiple Google Drive operations
organization_task = Task(
description="""
1. List all files in the shared folder
2. Create folders for different document types (Reports, Presentations, Spreadsheets)
3. Move files to appropriate folders based on their type
4. Set appropriate sharing permissions for each folder
5. Create a summary document of the organization changes
""",
agent=file_organizer,
expected_output="Files organized into categorized folders with proper permissions and summary report"
)
crew = Crew(
agents=[file_organizer],
tasks=[organization_task]
)
crew.kickoff()
```

View File

@@ -26,7 +26,7 @@ Before using the Google Sheets integration, ensure you have:
2. Find **Google Sheets** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for spreadsheet access
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -37,64 +37,74 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="GOOGLE_SHEETS_GET_ROW">
**Description:** Get rows from a Google Sheets spreadsheet.
<Accordion title="google_sheets/get_spreadsheet">
**Description:** Retrieve properties and data of a spreadsheet.
**Parameters:**
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet.
- `limit` (string, optional): Limit rows - Limit the maximum number of rows to return.
- `spreadsheetId` (string, required): The ID of the spreadsheet to retrieve.
- `ranges` (array, optional): The ranges to retrieve from the spreadsheet.
- `includeGridData` (boolean, optional): True if grid data should be returned. Default: false
- `fields` (string, optional): The fields to include in the response. Use this to improve performance by only returning needed data.
</Accordion>
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
**Description:** Create a new row in a Google Sheets spreadsheet.
<Accordion title="google_sheets/get_values">
**Description:** Returns a range of values from a spreadsheet.
**Parameters:**
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet..
- `worksheet` (string, required): Worksheet - Your worksheet must have column headers.
- `additionalFields` (object, required): Fields - Include fields to create this row with, as an object with keys of Column Names. Use Connect Portal Workflow Settings to allow users to select a Column Mapping.
- `spreadsheetId` (string, required): The ID of the spreadsheet to retrieve data from.
- `range` (string, required): The A1 notation or R1C1 notation of the range to retrieve values from.
- `valueRenderOption` (string, optional): How values should be represented in the output. Options: FORMATTED_VALUE, UNFORMATTED_VALUE, FORMULA. Default: FORMATTED_VALUE
- `dateTimeRenderOption` (string, optional): How dates, times, and durations should be represented in the output. Options: SERIAL_NUMBER, FORMATTED_STRING. Default: SERIAL_NUMBER
- `majorDimension` (string, optional): The major dimension that results should use. Options: ROWS, COLUMNS. Default: ROWS
</Accordion>
<Accordion title="google_sheets/update_values">
**Description:** Sets values in a range of a spreadsheet.
**Parameters:**
- `spreadsheetId` (string, required): The ID of the spreadsheet to update.
- `range` (string, required): The A1 notation of the range to update.
- `values` (array, required): The data to be written. Each array represents a row.
```json
{
"columnName1": "columnValue1",
"columnName2": "columnValue2",
"columnName3": "columnValue3",
"columnName4": "columnValue4"
}
[
["Value1", "Value2", "Value3"],
["Value4", "Value5", "Value6"]
]
```
- `valueInputOption` (string, optional): How the input data should be interpreted. Options: RAW, USER_ENTERED. Default: USER_ENTERED
</Accordion>
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
**Description:** Update existing rows in a Google Sheets spreadsheet.
<Accordion title="google_sheets/append_values">
**Description:** Appends values to a spreadsheet.
**Parameters:**
- `spreadsheetId` (string, required): Spreadsheet - Use Connect Portal Workflow Settings to allow users to select a spreadsheet. Defaults to using the first worksheet in the selected spreadsheet.
- `worksheet` (string, required): Worksheet - Your worksheet must have column headers.
- `filterFormula` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions to identify which rows to update.
- `spreadsheetId` (string, required): The ID of the spreadsheet to update.
- `range` (string, required): The A1 notation of a range to search for a logical table of data.
- `values` (array, required): The data to append. Each array represents a row.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "status",
"operator": "$stringExactlyMatches",
"value": "pending"
}
]
[
["Value1", "Value2", "Value3"],
["Value4", "Value5", "Value6"]
]
```
- `valueInputOption` (string, optional): How the input data should be interpreted. Options: RAW, USER_ENTERED. Default: USER_ENTERED
- `insertDataOption` (string, optional): How the input data should be inserted. Options: OVERWRITE, INSERT_ROWS. Default: INSERT_ROWS
</Accordion>
<Accordion title="google_sheets/create_spreadsheet">
**Description:** Creates a new spreadsheet.
**Parameters:**
- `title` (string, required): The title of the new spreadsheet.
- `sheets` (array, optional): The sheets that are part of the spreadsheet.
```json
[
{
"properties": {
"title": "Sheet1"
}
]
}
```
Available operators: `$stringContains`, `$stringDoesNotContain`, `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$numberGreaterThan`, `$numberLessThan`, `$numberEquals`, `$numberDoesNotEqual`, `$dateTimeAfter`, `$dateTimeBefore`, `$dateTimeEquals`, `$booleanTrue`, `$booleanFalse`, `$exists`, `$doesNotExist`
- `additionalFields` (object, required): Fields - Include fields to update, as an object with keys of Column Names. Use Connect Portal Workflow Settings to allow users to select a Column Mapping.
```json
{
"columnName1": "newValue1",
"columnName2": "newValue2",
"columnName3": "newValue3",
"columnName4": "newValue4"
}
}
]
```
</Accordion>
</AccordionGroup>
@@ -105,19 +115,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Sheets tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Sheets capabilities
sheets_agent = Agent(
role="Data Manager",
goal="Manage spreadsheet data and track information efficiently",
backstory="An AI assistant specialized in data management and spreadsheet operations.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to add new data to a spreadsheet
@@ -139,19 +143,17 @@ crew.kickoff()
### Filtering Specific Google Sheets Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Sheets tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Google Sheets actions only
data_collector = Agent(
role="Data Collector",
goal="Collect and organize data in spreadsheets",
backstory="An AI assistant that focuses on data collection and organization.",
tools=enterprise_tools
apps=[
'google_sheets/get_values',
'google_sheets/update_values'
]
)
# Task to collect and organize data
@@ -173,17 +175,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Data Analyst",
goal="Analyze spreadsheet data and generate insights",
backstory="An experienced data analyst who extracts insights from spreadsheet data.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to analyze data and create reports
@@ -205,33 +202,59 @@ crew = Crew(
crew.kickoff()
```
### Spreadsheet Creation and Management
```python
from crewai import Agent, Task, Crew
spreadsheet_manager = Agent(
role="Spreadsheet Manager",
goal="Create and manage spreadsheets efficiently",
backstory="An AI assistant that specializes in creating and organizing spreadsheets.",
apps=['google_sheets']
)
# Task to create and set up new spreadsheets
setup_task = Task(
description="""
1. Create a new spreadsheet for quarterly reports
2. Set up proper headers and structure
3. Add initial data and formatting
""",
agent=spreadsheet_manager,
expected_output="New quarterly report spreadsheet created and properly structured"
)
crew = Crew(
agents=[spreadsheet_manager],
tasks=[setup_task]
)
crew.kickoff()
```
### Automated Data Updates
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_updater = Agent(
role="Data Updater",
goal="Automatically update and maintain spreadsheet data",
backstory="An AI assistant that maintains data accuracy and updates records automatically.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to update data based on conditions
update_task = Task(
description="""
1. Find all pending orders in the orders spreadsheet
2. Update their status to 'processing'
3. Add a timestamp for when the status was updated
4. Log the changes in a separate tracking sheet
1. Get spreadsheet properties and structure
2. Read current data from specific ranges
3. Update values in target ranges with new data
4. Append new records to the bottom of the sheet
""",
agent=data_updater,
expected_output="All pending orders updated to processing status with timestamps logged"
expected_output="Spreadsheet data updated successfully with new values and records"
)
crew = Crew(
@@ -246,30 +269,25 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Data Workflow Manager",
goal="Manage complex data workflows across multiple spreadsheets",
backstory="An AI assistant that orchestrates complex data operations across multiple spreadsheets.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Complex workflow task
workflow_task = Task(
description="""
1. Get all customer data from the main customer spreadsheet
2. Create monthly summary entries for active customers
3. Update customer status based on activity in the last 30 days
4. Generate a monthly report with customer metrics
5. Archive inactive customer records to a separate sheet
2. Create a new monthly summary spreadsheet
3. Append summary data to the new spreadsheet
4. Update customer status based on activity metrics
5. Generate reports with proper formatting
""",
agent=workflow_manager,
expected_output="Monthly customer workflow completed with updated statuses and generated reports"
expected_output="Monthly customer workflow completed with new spreadsheet and updated data"
)
crew = Crew(
@@ -291,29 +309,28 @@ crew.kickoff()
**Spreadsheet Structure Issues**
- Ensure worksheets have proper column headers before creating or updating rows
- Verify that column names in `additionalFields` match the actual column headers
- Check that the specified worksheet exists in the spreadsheet
- Verify that range notation (A1 format) is correct for the target cells
- Check that the specified spreadsheet ID exists and is accessible
**Data Type and Format Issues**
- Ensure data values match the expected format for each column
- Use proper date formats for date columns (ISO format recommended)
- Verify that numeric values are properly formatted for number columns
**Filter Formula Issues**
- Ensure filter formulas follow the correct JSON structure for disjunctive normal form
- Use valid field names that match actual column headers
- Test simple filters before building complex multi-condition queries
- Verify that operator types match the data types in the columns
**Range and Cell Reference Issues**
- Use proper A1 notation for ranges (e.g., "A1:C10", "Sheet1!A1:B5")
- Ensure range references don't exceed the actual spreadsheet dimensions
- Verify that sheet names in range references match actual sheet names
**Row Limits and Performance**
- Be mindful of row limits when using `GOOGLE_SHEETS_GET_ROW`
- Consider pagination for large datasets
- Use specific filters to reduce the amount of data processed
**Value Input and Rendering Options**
- Choose appropriate `valueInputOption` (RAW vs USER_ENTERED) for your data
- Select proper `valueRenderOption` based on how you want data formatted
- Consider `dateTimeRenderOption` for consistent date/time handling
**Update Operations**
- Ensure filter conditions properly identify the intended rows for updates
- Test filter conditions with small datasets before large updates
- Verify that all required fields are included in update operations
**Spreadsheet Creation Issues**
- Ensure spreadsheet titles are unique and follow naming conventions
- Verify that sheet properties are properly structured when creating sheets
- Check that you have permissions to create new spreadsheets in your account
### Getting Help

View File

@@ -0,0 +1,371 @@
---
title: Google Slides Integration
description: "Presentation creation and management with Google Slides integration for CrewAI."
icon: "chart-bar"
mode: "wide"
---
## Overview
Enable your agents to create, edit, and manage Google Slides presentations. Create presentations, update content, import data from Google Sheets, manage pages and thumbnails, and streamline your presentation workflows with AI-powered automation.
## Prerequisites
Before using the Google Slides integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Google account with Google Slides access
- Connected your Google account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Google Slides Integration
### 1. Connect Your Google Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Google Slides** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for presentations, spreadsheets, and drive access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="google_slides/create_blank_presentation">
**Description:** Creates a blank presentation with no content.
**Parameters:**
- `title` (string, required): The title of the presentation.
</Accordion>
<Accordion title="google_slides/get_presentation">
**Description:** Retrieves a presentation by ID.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation to retrieve.
- `fields` (string, optional): The fields to include in the response. Use this to improve performance by only returning needed data.
</Accordion>
<Accordion title="google_slides/batch_update_presentation">
**Description:** Applies updates, add content, or remove content from a presentation.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation to update.
- `requests` (array, required): A list of updates to apply to the presentation.
```json
[
{
"insertText": {
"objectId": "slide_id",
"text": "Your text content here"
}
}
]
```
- `writeControl` (object, optional): Provides control over how write requests are executed.
```json
{
"requiredRevisionId": "revision_id_string"
}
```
</Accordion>
<Accordion title="google_slides/get_page">
**Description:** Retrieves a specific page by its ID.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation.
- `pageObjectId` (string, required): The ID of the page to retrieve.
</Accordion>
<Accordion title="google_slides/get_thumbnail">
**Description:** Generates a page thumbnail.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation.
- `pageObjectId` (string, required): The ID of the page for thumbnail generation.
</Accordion>
<Accordion title="google_slides/import_data_from_sheet">
**Description:** Imports data from a Google Sheet into a presentation.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation.
- `sheetId` (string, required): The ID of the Google Sheet to import from.
- `dataRange` (string, required): The range of data to import from the sheet.
</Accordion>
<Accordion title="google_slides/upload_file_to_drive">
**Description:** Uploads a file to Google Drive associated with the presentation.
**Parameters:**
- `file` (string, required): The file data to upload.
- `presentationId` (string, required): The ID of the presentation to link the uploaded file.
</Accordion>
<Accordion title="google_slides/link_file_to_presentation">
**Description:** Links a file in Google Drive to a presentation.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation.
- `fileId` (string, required): The ID of the file to link.
</Accordion>
<Accordion title="google_slides/get_all_presentations">
**Description:** Lists all presentations accessible to the user.
**Parameters:**
- `pageSize` (integer, optional): The number of presentations to return per page.
- `pageToken` (string, optional): A token for pagination.
</Accordion>
<Accordion title="google_slides/delete_presentation">
**Description:** Deletes a presentation by ID.
**Parameters:**
- `presentationId` (string, required): The ID of the presentation to delete.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Google Slides Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Google Slides capabilities
slides_agent = Agent(
role="Presentation Manager",
goal="Create and manage presentations efficiently",
backstory="An AI assistant specialized in presentation creation and content management.",
apps=['google_slides'] # All Google Slides actions will be available
)
# Task to create a presentation
create_presentation_task = Task(
description="Create a new presentation for the quarterly business review with key slides",
agent=slides_agent,
expected_output="Quarterly business review presentation created with structured content"
)
# Run the task
crew = Crew(
agents=[slides_agent],
tasks=[create_presentation_task]
)
crew.kickoff()
```
### Presentation Content Management
```python
from crewai import Agent, Task, Crew
content_manager = Agent(
role="Content Manager",
goal="Manage presentation content and updates",
backstory="An AI assistant that focuses on content creation and presentation updates.",
apps=[
'google_slides/create_blank_presentation',
'google_slides/batch_update_presentation',
'google_slides/get_presentation'
]
)
# Task to create and update presentations
content_task = Task(
description="Create a new presentation and add content slides with charts and text",
agent=content_manager,
expected_output="Presentation created with updated content and visual elements"
)
crew = Crew(
agents=[content_manager],
tasks=[content_task]
)
crew.kickoff()
```
### Data Integration and Visualization
```python
from crewai import Agent, Task, Crew
data_visualizer = Agent(
role="Data Visualizer",
goal="Create presentations with data imported from spreadsheets",
backstory="An AI assistant that specializes in data visualization and presentation integration.",
apps=['google_slides']
)
# Task to create data-driven presentations
visualization_task = Task(
description="""
1. Create a new presentation for monthly sales report
2. Import data from the sales spreadsheet
3. Create charts and visualizations from the imported data
4. Generate thumbnails for slide previews
""",
agent=data_visualizer,
expected_output="Data-driven presentation created with imported spreadsheet data and visualizations"
)
crew = Crew(
agents=[data_visualizer],
tasks=[visualization_task]
)
crew.kickoff()
```
### Presentation Library Management
```python
from crewai import Agent, Task, Crew
library_manager = Agent(
role="Presentation Library Manager",
goal="Manage and organize presentation libraries",
backstory="An AI assistant that manages presentation collections and file organization.",
apps=['google_slides']
)
# Task to manage presentation library
library_task = Task(
description="""
1. List all existing presentations
2. Generate thumbnails for presentation previews
3. Upload supporting files to Drive and link to presentations
4. Organize presentations by topic and date
""",
agent=library_manager,
expected_output="Presentation library organized with thumbnails and linked supporting files"
)
crew = Crew(
agents=[library_manager],
tasks=[library_task]
)
crew.kickoff()
```
### Automated Presentation Workflows
```python
from crewai import Agent, Task, Crew
presentation_automator = Agent(
role="Presentation Automator",
goal="Automate presentation creation and management workflows",
backstory="An AI assistant that automates complex presentation workflows and content generation.",
apps=['google_slides']
)
# Complex presentation automation task
automation_task = Task(
description="""
1. Create multiple presentations for different departments
2. Import relevant data from various spreadsheets
3. Update existing presentations with new content
4. Generate thumbnails for all presentations
5. Link supporting documents from Drive
6. Create a master index presentation with links to all others
""",
agent=presentation_automator,
expected_output="Automated presentation workflow completed with multiple presentations and organized structure"
)
crew = Crew(
agents=[presentation_automator],
tasks=[automation_task]
)
crew.kickoff()
```
### Template and Content Creation
```python
from crewai import Agent, Task, Crew
template_creator = Agent(
role="Template Creator",
goal="Create presentation templates and standardized content",
backstory="An AI assistant that creates consistent presentation templates and content standards.",
apps=['google_slides']
)
# Task to create templates
template_task = Task(
description="""
1. Create blank presentation templates for different use cases
2. Add standard layouts and content placeholders
3. Create sample presentations with best practices
4. Generate thumbnails for template previews
5. Upload template assets to Drive and link appropriately
""",
agent=template_creator,
expected_output="Presentation templates created with standardized layouts and linked assets"
)
crew = Crew(
agents=[template_creator],
tasks=[template_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Permission Errors**
- Ensure your Google account has appropriate permissions for Google Slides
- Verify that the OAuth connection includes required scopes for presentations, spreadsheets, and drive access
- Check that presentations are shared with the authenticated account
**Presentation ID Issues**
- Verify that presentation IDs are correct and presentations exist
- Ensure you have access permissions to the presentations you're trying to modify
- Check that presentation IDs are properly formatted
**Content Update Issues**
- Ensure batch update requests are properly formatted according to Google Slides API specifications
- Verify that object IDs for slides and elements exist in the presentation
- Check that write control revision IDs are current if using optimistic concurrency
**Data Import Issues**
- Verify that Google Sheet IDs are correct and accessible
- Ensure data ranges are properly specified using A1 notation
- Check that you have read permissions for the source spreadsheets
**File Upload and Linking Issues**
- Ensure file data is properly encoded for upload
- Verify that Drive file IDs are correct when linking files
- Check that you have appropriate Drive permissions for file operations
**Page and Thumbnail Operations**
- Verify that page object IDs exist in the specified presentation
- Ensure presentations have content before attempting to generate thumbnails
- Check that page structure is valid for thumbnail generation
**Pagination and Listing Issues**
- Use appropriate page sizes for listing presentations
- Implement proper pagination using page tokens for large result sets
- Handle empty result sets gracefully
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Google Slides integration setup or troubleshooting.
</Card>

View File

@@ -25,7 +25,7 @@ Before using the HubSpot integration, ensure you have:
2. Find **HubSpot** in the Authentication Integrations section.
3. Click **Connect** and complete the OAuth flow.
4. Grant the necessary permissions for company and contact management.
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account).
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
<Accordion title="hubspot/create_company">
**Description:** Create a new company record in HubSpot.
**Parameters:**
@@ -101,7 +101,7 @@ uv add crewai-tools
- `founded_year` (string, optional): Year Founded.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
<Accordion title="hubspot/create_contact">
**Description:** Create a new contact record in HubSpot.
**Parameters:**
@@ -200,7 +200,7 @@ uv add crewai-tools
- `hs_googleplusid` (string, optional): googleplus ID.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
<Accordion title="hubspot/create_deal">
**Description:** Create a new deal record in HubSpot.
**Parameters:**
@@ -215,7 +215,7 @@ uv add crewai-tools
- `hs_priority` (string, optional): The priority of the deal. Available values: `low`, `medium`, `high`.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/create_record_engagements">
**Description:** Create a new engagement (e.g., note, email, call, meeting, task) in HubSpot.
**Parameters:**
@@ -232,7 +232,7 @@ uv add crewai-tools
- `hs_meeting_end_time` (string, optional): The end time of the meeting. (Used for `MEETING`)
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
<Accordion title="hubspot/update_company">
**Description:** Update an existing company record in HubSpot.
**Parameters:**
@@ -249,7 +249,7 @@ uv add crewai-tools
- `description` (string, optional): Description.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
<Accordion title="hubspot/create_record_any">
**Description:** Create a record for a specified object type in HubSpot.
**Parameters:**
@@ -257,7 +257,7 @@ uv add crewai-tools
- Additional parameters depend on the custom object's schema.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
<Accordion title="hubspot/update_contact">
**Description:** Update an existing contact record in HubSpot.
**Parameters:**
@@ -271,7 +271,7 @@ uv add crewai-tools
- `lifecyclestage` (string, optional): Lifecycle Stage.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
<Accordion title="hubspot/update_deal">
**Description:** Update an existing deal record in HubSpot.
**Parameters:**
@@ -284,7 +284,7 @@ uv add crewai-tools
- `dealtype` (string, optional): The type of deal.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/update_record_engagements">
**Description:** Update an existing engagement in HubSpot.
**Parameters:**
@@ -295,7 +295,7 @@ uv add crewai-tools
- `hs_task_status` (string, optional): The status of the task.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
<Accordion title="hubspot/update_record_any">
**Description:** Update a record for a specified object type in HubSpot.
**Parameters:**
@@ -304,28 +304,28 @@ uv add crewai-tools
- Additional parameters depend on the custom object's schema.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
<Accordion title="hubspot/list_companies">
**Description:** Get a list of company records from HubSpot.
**Parameters:**
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
<Accordion title="hubspot/list_contacts">
**Description:** Get a list of contact records from HubSpot.
**Parameters:**
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
<Accordion title="hubspot/list_deals">
**Description:** Get a list of deal records from HubSpot.
**Parameters:**
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/get_records_engagements">
**Description:** Get a list of engagement records from HubSpot.
**Parameters:**
@@ -333,7 +333,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
<Accordion title="hubspot/get_records_any">
**Description:** Get a list of records for any specified object type in HubSpot.
**Parameters:**
@@ -341,35 +341,35 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
<Accordion title="hubspot/get_company">
**Description:** Get a single company record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the company to retrieve.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
<Accordion title="hubspot/get_contact">
**Description:** Get a single contact record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the contact to retrieve.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
<Accordion title="hubspot/get_deal">
**Description:** Get a single deal record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the deal to retrieve.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
<Accordion title="hubspot/get_record_by_id_engagements">
**Description:** Get a single engagement record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the engagement to retrieve.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
<Accordion title="hubspot/get_record_by_id_any">
**Description:** Get a single record of any specified object type by its ID.
**Parameters:**
@@ -377,7 +377,7 @@ uv add crewai-tools
- `recordId` (string, required): The ID of the record to retrieve.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
<Accordion title="hubspot/search_companies">
**Description:** Search for company records in HubSpot using a filter formula.
**Parameters:**
@@ -385,7 +385,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
<Accordion title="hubspot/search_contacts">
**Description:** Search for contact records in HubSpot using a filter formula.
**Parameters:**
@@ -393,7 +393,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
<Accordion title="hubspot/search_deals">
**Description:** Search for deal records in HubSpot using a filter formula.
**Parameters:**
@@ -401,7 +401,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/search_records_engagements">
**Description:** Search for engagement records in HubSpot using a filter formula.
**Parameters:**
@@ -409,7 +409,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
<Accordion title="hubspot/search_records_any">
**Description:** Search for records of any specified object type in HubSpot.
**Parameters:**
@@ -418,35 +418,35 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` to fetch subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
<Accordion title="hubspot/delete_record_companies">
**Description:** Delete a company record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the company to delete.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
<Accordion title="hubspot/delete_record_contacts">
**Description:** Delete a contact record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the contact to delete.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
<Accordion title="hubspot/delete_record_deals">
**Description:** Delete a deal record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the deal to delete.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/delete_record_engagements">
**Description:** Delete an engagement record by its ID.
**Parameters:**
- `recordId` (string, required): The ID of the engagement to delete.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
<Accordion title="hubspot/delete_record_any">
**Description:** Delete a record of any specified object type by its ID.
**Parameters:**
@@ -454,7 +454,7 @@ uv add crewai-tools
- `recordId` (string, required): The ID of the record to delete.
</Accordion>
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
<Accordion title="hubspot/get_contacts_by_list_id">
**Description:** Get contacts from a specific list by its ID.
**Parameters:**
@@ -462,7 +462,7 @@ uv add crewai-tools
- `paginationParameters` (object, optional): Use `pageCursor` for subsequent pages.
</Accordion>
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
<Accordion title="hubspot/describe_action_schema">
**Description:** Get the expected schema for a given object type and operation.
**Parameters:**
@@ -477,19 +477,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (HubSpot tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with HubSpot capabilities
hubspot_agent = Agent(
role="CRM Manager",
goal="Manage company and contact records in HubSpot",
backstory="An AI assistant specialized in CRM management.",
tools=[enterprise_tools]
apps=['hubspot'] # All HubSpot actions will be available
)
# Task to create a new company
@@ -511,19 +505,14 @@ crew.kickoff()
### Filtering Specific HubSpot Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only the tool to create contacts
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["hubspot_create_record_contacts"]
)
from crewai import Agent, Task, Crew
# Create agent with specific HubSpot actions only
contact_creator = Agent(
role="Contact Creator",
goal="Create new contacts in HubSpot",
backstory="An AI assistant that focuses on creating new contact entries in the CRM.",
tools=[enterprise_tools]
apps=['hubspot/create_contact'] # Only contact creation action
)
# Task to create a contact
@@ -545,17 +534,13 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create agent with HubSpot contact management capabilities
crm_manager = Agent(
role="CRM Manager",
goal="Manage and organize HubSpot contacts efficiently.",
backstory="An experienced CRM manager who maintains an organized contact database.",
tools=[enterprise_tools]
apps=['hubspot'] # All HubSpot actions including contact management
)
# Task to manage contacts

View File

@@ -25,7 +25,7 @@ Before using the Jira integration, ensure you have:
2. Find **Jira** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for issue and project management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="JIRA_CREATE_ISSUE">
<Accordion title="jira/create_issue">
**Description:** Create an issue in Jira.
**Parameters:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE">
<Accordion title="jira/update_issue">
**Description:** Update an issue in Jira.
**Parameters:**
@@ -71,14 +71,14 @@ uv add crewai-tools
- `additionalFields` (string, optional): Additional Fields - Specify any other fields that should be included in JSON format.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
<Accordion title="jira/get_issue_by_key">
**Description:** Get an issue by key in Jira.
**Parameters:**
- `issueKey` (string, required): Issue Key (example: "TEST-1234").
</Accordion>
<Accordion title="JIRA_FILTER_ISSUES">
<Accordion title="jira/filter_issues">
**Description:** Search issues in Jira using filters.
**Parameters:**
@@ -104,7 +104,7 @@ uv add crewai-tools
- `limit` (string, optional): Limit results - Limit the maximum number of issues to return. Defaults to 10 if left blank.
</Accordion>
<Accordion title="JIRA_SEARCH_BY_JQL">
<Accordion title="jira/search_by_jql">
**Description:** Search issues by JQL in Jira.
**Parameters:**
@@ -117,13 +117,13 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
<Accordion title="jira/update_issue_any">
**Description:** Update any issue in Jira. Use DESCRIBE_ACTION_SCHEMA to get properties schema for this function.
**Parameters:** No specific parameters - use JIRA_DESCRIBE_ACTION_SCHEMA first to get the expected schema.
</Accordion>
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
<Accordion title="jira/describe_action_schema">
**Description:** Get the expected schema for an issue type. Use this function first if no other function matches the issue type you want to operate on.
**Parameters:**
@@ -132,7 +132,7 @@ uv add crewai-tools
- `operation` (string, required): Operation Type value, for example CREATE_ISSUE or UPDATE_ISSUE.
</Accordion>
<Accordion title="JIRA_GET_PROJECTS">
<Accordion title="jira/get_projects">
**Description:** Get Projects in Jira.
**Parameters:**
@@ -144,27 +144,27 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
<Accordion title="jira/get_issue_types_by_project">
**Description:** Get Issue Types by project in Jira.
**Parameters:**
- `project` (string, required): Project key.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES">
<Accordion title="jira/get_issue_types">
**Description:** Get all Issue Types in Jira.
**Parameters:** None required.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
<Accordion title="jira/get_issue_status_by_project">
**Description:** Get issue statuses for a given project.
**Parameters:**
- `project` (string, required): Project key.
</Accordion>
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
<Accordion title="jira/get_all_assignees_by_project">
**Description:** Get assignees for a given project.
**Parameters:**
@@ -178,19 +178,14 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Jira tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Jira capabilities
jira_agent = Agent(
role="Issue Manager",
goal="Manage Jira issues and track project progress efficiently",
backstory="An AI assistant specialized in issue tracking and project management.",
tools=[enterprise_tools]
apps=['jira'] # All Jira actions will be available
)
# Task to create a bug report
@@ -212,19 +207,12 @@ crew.kickoff()
### Filtering Specific Jira Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Jira tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
)
issue_coordinator = Agent(
role="Issue Coordinator",
goal="Create and manage Jira issues efficiently",
backstory="An AI assistant that focuses on issue creation and management.",
tools=enterprise_tools
apps=['jira']
)
# Task to manage issue workflow
@@ -246,17 +234,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_analyst = Agent(
role="Project Analyst",
goal="Analyze project data and generate insights from Jira",
backstory="An experienced project analyst who extracts insights from project management data.",
tools=[enterprise_tools]
apps=['jira']
)
# Task to analyze project status
@@ -283,17 +266,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
automation_manager = Agent(
role="Automation Manager",
goal="Automate issue management and workflow processes",
backstory="An AI assistant that automates repetitive issue management tasks.",
tools=[enterprise_tools]
apps=['jira']
)
# Task to automate issue management
@@ -321,17 +299,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
schema_specialist = Agent(
role="Schema Specialist",
goal="Handle complex Jira operations using dynamic schemas",
backstory="An AI assistant that can work with dynamic Jira schemas and custom issue types.",
tools=[enterprise_tools]
apps=['jira']
)
# Task using schema-based operations

View File

@@ -25,7 +25,7 @@ Before using the Linear integration, ensure you have:
2. Find **Linear** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for issue and project management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,7 +36,7 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="LINEAR_CREATE_ISSUE">
<Accordion title="linear/create_issue">
**Description:** Create a new issue in Linear.
**Parameters:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_ISSUE">
<Accordion title="linear/update_issue">
**Description:** Update an issue in Linear.
**Parameters:**
@@ -76,21 +76,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
<Accordion title="linear/get_issue_by_id">
**Description:** Get an issue by ID in Linear.
**Parameters:**
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to fetch. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
<Accordion title="linear/get_issue_by_issue_identifier">
**Description:** Get an issue by issue identifier in Linear.
**Parameters:**
- `externalId` (string, required): External ID - Specify the human-readable Issue identifier of the issue to fetch. (example: "ABC-1").
</Accordion>
<Accordion title="LINEAR_SEARCH_ISSUE">
<Accordion title="linear/search_issue">
**Description:** Search issues in Linear.
**Parameters:**
@@ -117,21 +117,21 @@ uv add crewai-tools
Available operators: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
</Accordion>
<Accordion title="LINEAR_DELETE_ISSUE">
<Accordion title="linear/delete_issue">
**Description:** Delete an issue in Linear.
**Parameters:**
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to delete. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_ARCHIVE_ISSUE">
<Accordion title="linear/archive_issue">
**Description:** Archive an issue in Linear.
**Parameters:**
- `issueId` (string, required): Issue ID - Specify the record ID of the issue to archive. (example: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
<Accordion title="linear/create_sub_issue">
**Description:** Create a sub-issue in Linear.
**Parameters:**
@@ -147,7 +147,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_CREATE_PROJECT">
<Accordion title="linear/create_project">
**Description:** Create a new project in Linear.
**Parameters:**
@@ -169,7 +169,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_PROJECT">
<Accordion title="linear/update_project">
**Description:** Update a project in Linear.
**Parameters:**
@@ -185,21 +185,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
<Accordion title="linear/get_project_by_id">
**Description:** Get a project by ID in Linear.
**Parameters:**
- `projectId` (string, required): Project ID - Specify the Project ID of the project to fetch. (example: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_DELETE_PROJECT">
<Accordion title="linear/delete_project">
**Description:** Delete a project in Linear.
**Parameters:**
- `projectId` (string, required): Project ID - Specify the Project ID of the project to delete. (example: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_SEARCH_TEAMS">
<Accordion title="linear/search_teams">
**Description:** Search teams in Linear.
**Parameters:**
@@ -231,19 +231,14 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Linear tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Linear capabilities
linear_agent = Agent(
role="Development Manager",
goal="Manage Linear issues and track development progress efficiently",
backstory="An AI assistant specialized in software development project management.",
tools=[enterprise_tools]
apps=['linear'] # All Linear actions will be available
)
# Task to create a bug report
@@ -265,19 +260,12 @@ crew.kickoff()
### Filtering Specific Linear Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Linear tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage Linear issues efficiently",
backstory="An AI assistant that focuses on issue creation and lifecycle management.",
tools=enterprise_tools
apps=['linear/create_issue']
)
# Task to manage issue workflow
@@ -299,17 +287,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate projects and teams in Linear efficiently",
backstory="An experienced project coordinator who manages development cycles and team workflows.",
tools=[enterprise_tools]
apps=['linear']
)
# Task to coordinate project setup
@@ -336,17 +319,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_organizer = Agent(
role="Task Organizer",
goal="Organize complex issues into manageable sub-tasks",
backstory="An AI assistant that breaks down complex development work into organized sub-tasks.",
tools=[enterprise_tools]
apps=['linear']
)
# Task to create issue hierarchy
@@ -373,17 +351,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_automator = Agent(
role="Workflow Automator",
goal="Automate development workflow processes in Linear",
backstory="An AI assistant that automates repetitive development workflow tasks.",
tools=[enterprise_tools]
apps=['linear']
)
# Complex workflow automation task

View File

@@ -0,0 +1,446 @@
---
title: Microsoft Excel Integration
description: "Workbook and data management with Microsoft Excel integration for CrewAI."
icon: "table"
mode: "wide"
---
## Overview
Enable your agents to create and manage Excel workbooks, worksheets, tables, and charts in OneDrive or SharePoint. Manipulate data ranges, create visualizations, manage tables, and streamline your spreadsheet workflows with AI-powered automation.
## Prerequisites
Before using the Microsoft Excel integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft 365 account with Excel and OneDrive/SharePoint access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft Excel Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft Excel** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for files and Excel workbook access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_excel/create_workbook">
**Description:** Create a new Excel workbook in OneDrive or SharePoint.
**Parameters:**
- `file_path` (string, required): Path where to create the workbook (e.g., 'MyWorkbook.xlsx')
- `worksheets` (array, optional): Initial worksheets to create
```json
[
{
"name": "Sheet1"
},
{
"name": "Data"
}
]
```
</Accordion>
<Accordion title="microsoft_excel/get_workbooks">
**Description:** Get all Excel workbooks from OneDrive or SharePoint.
**Parameters:**
- `select` (string, optional): Select specific properties to return
- `filter` (string, optional): Filter results using OData syntax
- `expand` (string, optional): Expand related resources inline
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
- `orderby` (string, optional): Order results by specified properties
</Accordion>
<Accordion title="microsoft_excel/get_worksheets">
**Description:** Get all worksheets in an Excel workbook.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `select` (string, optional): Select specific properties to return (e.g., 'id,name,position')
- `filter` (string, optional): Filter results using OData syntax
- `expand` (string, optional): Expand related resources inline
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
- `orderby` (string, optional): Order results by specified properties
</Accordion>
<Accordion title="microsoft_excel/create_worksheet">
**Description:** Create a new worksheet in an Excel workbook.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `name` (string, required): Name of the new worksheet
</Accordion>
<Accordion title="microsoft_excel/get_range_data">
**Description:** Get data from a specific range in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `range` (string, required): Range address (e.g., 'A1:C10')
</Accordion>
<Accordion title="microsoft_excel/update_range_data">
**Description:** Update data in a specific range in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `range` (string, required): Range address (e.g., 'A1:C10')
- `values` (array, required): 2D array of values to set in the range
```json
[
["Name", "Age", "City"],
["John", 30, "New York"],
["Jane", 25, "Los Angeles"]
]
```
</Accordion>
<Accordion title="microsoft_excel/add_table">
**Description:** Create a table in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `range` (string, required): Range for the table (e.g., 'A1:D10')
- `has_headers` (boolean, optional): Whether the first row contains headers. Default: true
</Accordion>
<Accordion title="microsoft_excel/get_tables">
**Description:** Get all tables in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
</Accordion>
<Accordion title="microsoft_excel/add_table_row">
**Description:** Add a new row to an Excel table.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `table_name` (string, required): Name of the table
- `values` (array, required): Array of values for the new row
```json
["John Doe", 35, "Manager", "Sales"]
```
</Accordion>
<Accordion title="microsoft_excel/create_chart">
**Description:** Create a chart in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `chart_type` (string, required): Type of chart (e.g., 'ColumnClustered', 'Line', 'Pie')
- `source_data` (string, required): Range of data for the chart (e.g., 'A1:B10')
- `series_by` (string, optional): How to interpret the data ('Auto', 'Columns', or 'Rows'). Default: Auto
</Accordion>
<Accordion title="microsoft_excel/get_cell">
**Description:** Get the value of a single cell in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `row` (integer, required): Row number (0-based)
- `column` (integer, required): Column number (0-based)
</Accordion>
<Accordion title="microsoft_excel/get_used_range">
**Description:** Get the used range of an Excel worksheet (contains all data).
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
</Accordion>
<Accordion title="microsoft_excel/list_charts">
**Description:** Get all charts in an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
</Accordion>
<Accordion title="microsoft_excel/delete_worksheet">
**Description:** Delete a worksheet from an Excel workbook.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet to delete
</Accordion>
<Accordion title="microsoft_excel/delete_table">
**Description:** Delete a table from an Excel worksheet.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
- `worksheet_name` (string, required): Name of the worksheet
- `table_name` (string, required): Name of the table to delete
</Accordion>
<Accordion title="microsoft_excel/list_names">
**Description:** Get all named ranges in an Excel workbook.
**Parameters:**
- `file_id` (string, required): The ID of the Excel file
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Excel Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Excel capabilities
excel_agent = Agent(
role="Excel Data Manager",
goal="Manage Excel workbooks and data efficiently",
backstory="An AI assistant specialized in Excel data management and analysis.",
apps=['microsoft_excel'] # All Excel actions will be available
)
# Task to create and populate a workbook
data_management_task = Task(
description="Create a new sales report workbook with data analysis and charts",
agent=excel_agent,
expected_output="Excel workbook created with sales data, analysis, and visualizations"
)
# Run the task
crew = Crew(
agents=[excel_agent],
tasks=[data_management_task]
)
crew.kickoff()
```
### Data Analysis and Reporting
```python
from crewai import Agent, Task, Crew
data_analyst = Agent(
role="Data Analyst",
goal="Analyze data in Excel and create comprehensive reports",
backstory="An AI assistant that specializes in data analysis and Excel reporting.",
apps=[
'microsoft_excel/get_workbooks',
'microsoft_excel/get_range_data',
'microsoft_excel/create_chart',
'microsoft_excel/add_table'
]
)
# Task to analyze existing data
analysis_task = Task(
description="Analyze sales data in existing workbooks and create summary charts and tables",
agent=data_analyst,
expected_output="Data analyzed with summary charts and tables created"
)
crew = Crew(
agents=[data_analyst],
tasks=[analysis_task]
)
crew.kickoff()
```
### Workbook Creation and Structure
```python
from crewai import Agent, Task, Crew
workbook_creator = Agent(
role="Workbook Creator",
goal="Create structured Excel workbooks with multiple worksheets and data organization",
backstory="An AI assistant that creates well-organized Excel workbooks for various business needs.",
apps=['microsoft_excel']
)
# Task to create structured workbooks
creation_task = Task(
description="""
1. Create a new quarterly report workbook
2. Add multiple worksheets for different departments
3. Create tables with headers for data organization
4. Set up charts for key metrics visualization
""",
agent=workbook_creator,
expected_output="Structured workbook created with multiple worksheets, tables, and charts"
)
crew = Crew(
agents=[workbook_creator],
tasks=[creation_task]
)
crew.kickoff()
```
### Data Manipulation and Updates
```python
from crewai import Agent, Task, Crew
data_manipulator = Agent(
role="Data Manipulator",
goal="Update and manipulate data in Excel worksheets efficiently",
backstory="An AI assistant that handles data updates, table management, and range operations.",
apps=['microsoft_excel']
)
# Task to manipulate data
manipulation_task = Task(
description="""
1. Get data from existing worksheets
2. Update specific ranges with new information
3. Add new rows to existing tables
4. Create additional charts based on updated data
5. Organize data across multiple worksheets
""",
agent=data_manipulator,
expected_output="Data updated across worksheets with new charts and organized structure"
)
crew = Crew(
agents=[data_manipulator],
tasks=[manipulation_task]
)
crew.kickoff()
```
### Advanced Excel Automation
```python
from crewai import Agent, Task, Crew
excel_automator = Agent(
role="Excel Automator",
goal="Automate complex Excel workflows and data processing",
backstory="An AI assistant that automates sophisticated Excel operations and data workflows.",
apps=['microsoft_excel']
)
# Complex automation task
automation_task = Task(
description="""
1. Scan all Excel workbooks for specific data patterns
2. Create consolidated reports from multiple workbooks
3. Generate charts and tables for trend analysis
4. Set up named ranges for easy data reference
5. Create dashboard worksheets with key metrics
6. Clean up unused worksheets and tables
""",
agent=excel_automator,
expected_output="Automated Excel workflow completed with consolidated reports and dashboards"
)
crew = Crew(
agents=[excel_automator],
tasks=[automation_task]
)
crew.kickoff()
```
### Financial Modeling and Analysis
```python
from crewai import Agent, Task, Crew
financial_modeler = Agent(
role="Financial Modeler",
goal="Create financial models and analysis in Excel",
backstory="An AI assistant specialized in financial modeling and analysis using Excel.",
apps=['microsoft_excel']
)
# Task for financial modeling
modeling_task = Task(
description="""
1. Create financial model workbooks with multiple scenarios
2. Set up input tables for assumptions and variables
3. Create calculation worksheets with formulas and logic
4. Generate charts for financial projections and trends
5. Add summary tables for key financial metrics
6. Create sensitivity analysis tables
""",
agent=financial_modeler,
expected_output="Financial model created with scenarios, calculations, and analysis charts"
)
crew = Crew(
agents=[financial_modeler],
tasks=[modeling_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Permission Errors**
- Ensure your Microsoft account has appropriate permissions for Excel and OneDrive/SharePoint
- Verify that the OAuth connection includes required scopes (Files.Read.All, Files.ReadWrite.All)
- Check that you have access to the specific workbooks you're trying to modify
**File ID and Path Issues**
- Verify that file IDs are correct and files exist in your OneDrive or SharePoint
- Ensure file paths are properly formatted when creating new workbooks
- Check that workbook files have the correct .xlsx extension
**Worksheet and Range Issues**
- Verify that worksheet names exist in the specified workbook
- Ensure range addresses are properly formatted (e.g., 'A1:C10')
- Check that ranges don't exceed worksheet boundaries
**Data Format Issues**
- Ensure data values are properly formatted for Excel (strings, numbers, integers)
- Verify that 2D arrays for ranges have consistent row and column counts
- Check that table data includes proper headers when has_headers is true
**Chart Creation Issues**
- Verify that chart types are supported (ColumnClustered, Line, Pie, etc.)
- Ensure source data ranges contain appropriate data for the chart type
- Check that the source data range exists and contains data
**Table Management Issues**
- Ensure table names are unique within worksheets
- Verify that table ranges don't overlap with existing tables
- Check that new row data matches the table's column structure
**Cell and Range Operations**
- Verify that row and column indices are 0-based for cell operations
- Ensure ranges contain data when using get_used_range
- Check that named ranges exist before referencing them
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft Excel integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,250 @@
---
title: Microsoft OneDrive Integration
description: "File and folder management with Microsoft OneDrive integration for CrewAI."
icon: "cloud"
mode: "wide"
---
## Overview
Enable your agents to upload, download, and manage files and folders in Microsoft OneDrive. Automate file operations, organize content, create sharing links, and streamline your cloud storage workflows with AI-powered automation.
## Prerequisites
Before using the Microsoft OneDrive integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft account with OneDrive access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft OneDrive Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft OneDrive** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for file access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_onedrive/list_files">
**Description:** List files and folders in OneDrive.
**Parameters:**
- `top` (integer, optional): Number of items to retrieve (max 1000). Default is `50`.
- `orderby` (string, optional): Order by field (e.g., "name asc", "lastModifiedDateTime desc"). Default is "name asc".
- `filter` (string, optional): OData filter expression.
</Accordion>
<Accordion title="microsoft_onedrive/get_file_info">
**Description:** Get information about a specific file or folder.
**Parameters:**
- `item_id` (string, required): The ID of the file or folder.
</Accordion>
<Accordion title="microsoft_onedrive/download_file">
**Description:** Download a file from OneDrive.
**Parameters:**
- `item_id` (string, required): The ID of the file to download.
</Accordion>
<Accordion title="microsoft_onedrive/upload_file">
**Description:** Upload a file to OneDrive.
**Parameters:**
- `file_name` (string, required): Name of the file to upload.
- `content` (string, required): Base64 encoded file content.
</Accordion>
<Accordion title="microsoft_onedrive/create_folder">
**Description:** Create a new folder in OneDrive.
**Parameters:**
- `folder_name` (string, required): Name of the folder to create.
</Accordion>
<Accordion title="microsoft_onedrive/delete_item">
**Description:** Delete a file or folder from OneDrive.
**Parameters:**
- `item_id` (string, required): The ID of the file or folder to delete.
</Accordion>
<Accordion title="microsoft_onedrive/copy_item">
**Description:** Copy a file or folder in OneDrive.
**Parameters:**
- `item_id` (string, required): The ID of the file or folder to copy.
- `parent_id` (string, optional): The ID of the destination folder (optional, defaults to root).
- `new_name` (string, optional): New name for the copied item (optional).
</Accordion>
<Accordion title="microsoft_onedrive/move_item">
**Description:** Move a file or folder in OneDrive.
**Parameters:**
- `item_id` (string, required): The ID of the file or folder to move.
- `parent_id` (string, required): The ID of the destination folder.
- `new_name` (string, optional): New name for the item (optional).
</Accordion>
<Accordion title="microsoft_onedrive/search_files">
**Description:** Search for files and folders in OneDrive.
**Parameters:**
- `query` (string, required): Search query string.
- `top` (integer, optional): Number of results to return (max 1000). Default is `50`.
</Accordion>
<Accordion title="microsoft_onedrive/share_item">
**Description:** Create a sharing link for a file or folder.
**Parameters:**
- `item_id` (string, required): The ID of the file or folder to share.
- `type` (string, optional): Type of sharing link. Enum: `view`, `edit`, `embed`. Default is `view`.
- `scope` (string, optional): Scope of the sharing link. Enum: `anonymous`, `organization`. Default is `anonymous`.
</Accordion>
<Accordion title="microsoft_onedrive/get_thumbnails">
**Description:** Get thumbnails for a file.
**Parameters:**
- `item_id` (string, required): The ID of the file.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Microsoft OneDrive Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Microsoft OneDrive capabilities
onedrive_agent = Agent(
role="File Manager",
goal="Manage files and folders in OneDrive efficiently",
backstory="An AI assistant specialized in Microsoft OneDrive file operations and organization.",
apps=['microsoft_onedrive'] # All OneDrive actions will be available
)
# Task to list files and create a folder
organize_files_task = Task(
description="List all files in my OneDrive root directory and create a new folder called 'Project Documents'.",
agent=onedrive_agent,
expected_output="List of files displayed and new folder 'Project Documents' created."
)
# Run the task
crew = Crew(
agents=[onedrive_agent],
tasks=[organize_files_task]
)
crew.kickoff()
```
### File Upload and Management
```python
from crewai import Agent, Task, Crew
# Create an agent focused on file operations
file_operator = Agent(
role="File Operator",
goal="Upload, download, and manage files with precision",
backstory="An AI assistant skilled in file handling and content management.",
apps=['microsoft_onedrive/upload_file', 'microsoft_onedrive/download_file', 'microsoft_onedrive/get_file_info']
)
# Task to upload and manage a file
file_management_task = Task(
description="Upload a text file named 'report.txt' with content 'This is a sample report for the project.' Then get information about the uploaded file.",
agent=file_operator,
expected_output="File uploaded successfully and file information retrieved."
)
crew = Crew(
agents=[file_operator],
tasks=[file_management_task]
)
crew.kickoff()
```
### File Organization and Sharing
```python
from crewai import Agent, Task, Crew
# Create an agent for file organization and sharing
file_organizer = Agent(
role="File Organizer",
goal="Organize files and create sharing links for collaboration",
backstory="An AI assistant that excels at organizing files and managing sharing permissions.",
apps=['microsoft_onedrive/search_files', 'microsoft_onedrive/move_item', 'microsoft_onedrive/share_item', 'microsoft_onedrive/create_folder']
)
# Task to organize and share files
organize_share_task = Task(
description="Search for files containing 'presentation' in the name, create a folder called 'Presentations', move the found files to this folder, and create a view-only sharing link for the folder.",
agent=file_organizer,
expected_output="Files organized into 'Presentations' folder and sharing link created."
)
crew = Crew(
agents=[file_organizer],
tasks=[organize_share_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Authentication Errors**
- Ensure your Microsoft account has the necessary permissions for file access (e.g., `Files.Read`, `Files.ReadWrite`).
- Verify that the OAuth connection includes all required scopes.
**File Upload Issues**
- Ensure `file_name` and `content` are provided for file uploads.
- Content must be Base64 encoded for binary files.
- Check that you have write permissions to OneDrive.
**File/Folder ID Issues**
- Double-check item IDs for correctness when accessing specific files or folders.
- Item IDs are returned by other operations like `list_files` or `search_files`.
- Ensure the referenced items exist and are accessible.
**Search and Filter Operations**
- Use appropriate search terms for `search_files` operations.
- For `filter` parameters, use proper OData syntax.
**File Operations (Copy/Move)**
- For `move_item`, ensure both `item_id` and `parent_id` are provided.
- For `copy_item`, only `item_id` is required; `parent_id` defaults to root if not specified.
- Verify that destination folders exist and are accessible.
**Sharing Link Creation**
- Ensure the item exists before creating sharing links.
- Choose appropriate `type` and `scope` based on your sharing requirements.
- `anonymous` scope allows access without sign-in; `organization` requires organizational account.
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft OneDrive integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,232 @@
---
title: Microsoft Outlook Integration
description: "Email, calendar, and contact management with Microsoft Outlook integration for CrewAI."
icon: "envelope"
mode: "wide"
---
## Overview
Enable your agents to access and manage Outlook emails, calendar events, and contacts. Send emails, retrieve messages, manage calendar events, and organize contacts with AI-powered automation.
## Prerequisites
Before using the Microsoft Outlook integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft account with Outlook access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft Outlook Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft Outlook** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for mail, calendar, and contact access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_outlook/get_messages">
**Description:** Get email messages from the user's mailbox.
**Parameters:**
- `top` (integer, optional): Number of messages to retrieve (max 1000). Default is `10`.
- `filter` (string, optional): OData filter expression (e.g., "isRead eq false").
- `search` (string, optional): Search query string.
- `orderby` (string, optional): Order by field (e.g., "receivedDateTime desc"). Default is "receivedDateTime desc".
- `select` (string, optional): Select specific properties to return.
- `expand` (string, optional): Expand related resources inline.
</Accordion>
<Accordion title="microsoft_outlook/send_email">
**Description:** Send an email message.
**Parameters:**
- `to_recipients` (array, required): Array of recipient email addresses.
- `cc_recipients` (array, optional): Array of CC recipient email addresses.
- `bcc_recipients` (array, optional): Array of BCC recipient email addresses.
- `subject` (string, required): Email subject.
- `body` (string, required): Email body content.
- `body_type` (string, optional): Body content type. Enum: `Text`, `HTML`. Default is `HTML`.
- `importance` (string, optional): Message importance level. Enum: `low`, `normal`, `high`. Default is `normal`.
- `reply_to` (array, optional): Array of reply-to email addresses.
- `save_to_sent_items` (boolean, optional): Whether to save the message to Sent Items folder. Default is `true`.
</Accordion>
<Accordion title="microsoft_outlook/get_calendar_events">
**Description:** Get calendar events from the user's calendar.
**Parameters:**
- `top` (integer, optional): Number of events to retrieve (max 1000). Default is `10`.
- `skip` (integer, optional): Number of events to skip. Default is `0`.
- `filter` (string, optional): OData filter expression (e.g., "start/dateTime ge '2024-01-01T00:00:00Z'").
- `orderby` (string, optional): Order by field (e.g., "start/dateTime asc"). Default is "start/dateTime asc".
</Accordion>
<Accordion title="microsoft_outlook/create_calendar_event">
**Description:** Create a new calendar event.
**Parameters:**
- `subject` (string, required): Event subject/title.
- `body` (string, optional): Event body/description.
- `start_datetime` (string, required): Start date and time in ISO 8601 format (e.g., '2024-01-20T10:00:00').
- `end_datetime` (string, required): End date and time in ISO 8601 format.
- `timezone` (string, optional): Time zone (e.g., 'Pacific Standard Time'). Default is `UTC`.
- `location` (string, optional): Event location.
- `attendees` (array, optional): Array of attendee email addresses.
</Accordion>
<Accordion title="microsoft_outlook/get_contacts">
**Description:** Get contacts from the user's address book.
**Parameters:**
- `top` (integer, optional): Number of contacts to retrieve (max 1000). Default is `10`.
- `skip` (integer, optional): Number of contacts to skip. Default is `0`.
- `filter` (string, optional): OData filter expression.
- `orderby` (string, optional): Order by field (e.g., "displayName asc"). Default is "displayName asc".
</Accordion>
<Accordion title="microsoft_outlook/create_contact">
**Description:** Create a new contact in the user's address book.
**Parameters:**
- `displayName` (string, required): Contact's display name.
- `givenName` (string, optional): Contact's first name.
- `surname` (string, optional): Contact's last name.
- `emailAddresses` (array, optional): Array of email addresses. Each item is an object with `address` (string) and `name` (string).
- `businessPhones` (array, optional): Array of business phone numbers.
- `homePhones` (array, optional): Array of home phone numbers.
- `jobTitle` (string, optional): Contact's job title.
- `companyName` (string, optional): Contact's company name.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Microsoft Outlook Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Microsoft Outlook capabilities
outlook_agent = Agent(
role="Email Assistant",
goal="Manage emails, calendar events, and contacts efficiently",
backstory="An AI assistant specialized in Microsoft Outlook operations and communication management.",
apps=['microsoft_outlook'] # All Outlook actions will be available
)
# Task to send an email
send_email_task = Task(
description="Send an email to 'colleague@example.com' with subject 'Project Update' and body 'Hi, here is the latest project update. Best regards.'",
agent=outlook_agent,
expected_output="Email sent successfully to colleague@example.com"
)
# Run the task
crew = Crew(
agents=[outlook_agent],
tasks=[send_email_task]
)
crew.kickoff()
```
### Email Management and Search
```python
from crewai import Agent, Task, Crew
# Create an agent focused on email management
email_manager = Agent(
role="Email Manager",
goal="Retrieve, search, and organize email messages",
backstory="An AI assistant skilled in email organization and management.",
apps=['microsoft_outlook/get_messages']
)
# Task to search and retrieve emails
search_emails_task = Task(
description="Get the latest 20 unread emails and provide a summary of the most important ones.",
agent=email_manager,
expected_output="Summary of the most important unread emails with key details."
)
crew = Crew(
agents=[email_manager],
tasks=[search_emails_task]
)
crew.kickoff()
```
### Calendar and Contact Management
```python
from crewai import Agent, Task, Crew
# Create an agent for calendar and contact management
scheduler = Agent(
role="Calendar and Contact Manager",
goal="Manage calendar events and maintain contact information",
backstory="An AI assistant that handles scheduling and contact organization.",
apps=['microsoft_outlook/create_calendar_event', 'microsoft_outlook/get_calendar_events', 'microsoft_outlook/create_contact']
)
# Task to create a meeting and add a contact
schedule_task = Task(
description="Create a calendar event for tomorrow at 2 PM titled 'Team Meeting' with location 'Conference Room A', and create a new contact for 'John Smith' with email 'john.smith@example.com' and job title 'Project Manager'.",
agent=scheduler,
expected_output="Calendar event created and new contact added successfully."
)
crew = Crew(
agents=[scheduler],
tasks=[schedule_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Authentication Errors**
- Ensure your Microsoft account has the necessary permissions for mail, calendar, and contact access.
- Required scopes include: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
- Verify that the OAuth connection includes all required scopes.
**Email Sending Issues**
- Ensure `to_recipients`, `subject`, and `body` are provided for `send_email`.
- Check that email addresses are properly formatted.
- Verify that the account has `Mail.Send` permissions.
**Calendar Event Creation**
- Ensure `subject`, `start_datetime`, and `end_datetime` are provided.
- Use proper ISO 8601 format for datetime fields (e.g., '2024-01-20T10:00:00').
- Verify timezone settings if events appear at incorrect times.
**Contact Management**
- For `create_contact`, ensure `displayName` is provided as it's required.
- When providing `emailAddresses`, use the proper object format with `address` and `name` properties.
**Search and Filter Issues**
- Use proper OData syntax for `filter` parameters.
- For date filters, use ISO 8601 format (e.g., "receivedDateTime ge '2024-01-01T00:00:00Z'").
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft Outlook integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,388 @@
---
title: Microsoft SharePoint Integration
description: "Site, list, and document management with Microsoft SharePoint integration for CrewAI."
icon: "folder-tree"
mode: "wide"
---
## Overview
Enable your agents to access and manage SharePoint sites, lists, and document libraries. Retrieve site information, manage list items, upload and organize files, and streamline your SharePoint workflows with AI-powered automation.
## Prerequisites
Before using the Microsoft SharePoint integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft 365 account with SharePoint access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft SharePoint Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft SharePoint** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for SharePoint sites and content access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_sharepoint/get_sites">
**Description:** Get all SharePoint sites the user has access to.
**Parameters:**
- `search` (string, optional): Search query to filter sites
- `select` (string, optional): Select specific properties to return (e.g., 'displayName,id,webUrl')
- `filter` (string, optional): Filter results using OData syntax
- `expand` (string, optional): Expand related resources inline
- `top` (integer, optional): Number of items to return. Minimum: 1, Maximum: 999
- `skip` (integer, optional): Number of items to skip. Minimum: 0
- `orderby` (string, optional): Order results by specified properties (e.g., 'displayName desc')
</Accordion>
<Accordion title="microsoft_sharepoint/get_site">
**Description:** Get information about a specific SharePoint site.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `select` (string, optional): Select specific properties to return (e.g., 'displayName,id,webUrl,drives')
- `expand` (string, optional): Expand related resources inline (e.g., 'drives,lists')
</Accordion>
<Accordion title="microsoft_sharepoint/get_site_lists">
**Description:** Get all lists in a SharePoint site.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
</Accordion>
<Accordion title="microsoft_sharepoint/get_list">
**Description:** Get information about a specific list.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `list_id` (string, required): The ID of the list
</Accordion>
<Accordion title="microsoft_sharepoint/get_list_items">
**Description:** Get items from a SharePoint list.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `list_id` (string, required): The ID of the list
- `expand` (string, optional): Expand related data (e.g., 'fields')
</Accordion>
<Accordion title="microsoft_sharepoint/create_list_item">
**Description:** Create a new item in a SharePoint list.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `list_id` (string, required): The ID of the list
- `fields` (object, required): The field values for the new item
```json
{
"Title": "New Item Title",
"Description": "Item description",
"Status": "Active"
}
```
</Accordion>
<Accordion title="microsoft_sharepoint/update_list_item">
**Description:** Update an item in a SharePoint list.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `list_id` (string, required): The ID of the list
- `item_id` (string, required): The ID of the item to update
- `fields` (object, required): The field values to update
```json
{
"Title": "Updated Title",
"Status": "Completed"
}
```
</Accordion>
<Accordion title="microsoft_sharepoint/delete_list_item">
**Description:** Delete an item from a SharePoint list.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `list_id` (string, required): The ID of the list
- `item_id` (string, required): The ID of the item to delete
</Accordion>
<Accordion title="microsoft_sharepoint/upload_file_to_library">
**Description:** Upload a file to a SharePoint document library.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `file_path` (string, required): The path where to upload the file (e.g., 'folder/filename.txt')
- `content` (string, required): The file content to upload
</Accordion>
<Accordion title="microsoft_sharepoint/get_drive_items">
**Description:** Get files and folders from a SharePoint document library.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
</Accordion>
<Accordion title="microsoft_sharepoint/delete_drive_item">
**Description:** Delete a file or folder from SharePoint document library.
**Parameters:**
- `site_id` (string, required): The ID of the SharePoint site
- `item_id` (string, required): The ID of the file or folder to delete
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic SharePoint Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with SharePoint capabilities
sharepoint_agent = Agent(
role="SharePoint Manager",
goal="Manage SharePoint sites, lists, and documents efficiently",
backstory="An AI assistant specialized in SharePoint content management and collaboration.",
apps=['microsoft_sharepoint'] # All SharePoint actions will be available
)
# Task to organize SharePoint content
content_organization_task = Task(
description="List all accessible SharePoint sites and organize content by department",
agent=sharepoint_agent,
expected_output="SharePoint sites listed and content organized by department"
)
# Run the task
crew = Crew(
agents=[sharepoint_agent],
tasks=[content_organization_task]
)
crew.kickoff()
```
### List Management and Data Operations
```python
from crewai import Agent, Task, Crew
list_manager = Agent(
role="List Manager",
goal="Manage SharePoint lists and data efficiently",
backstory="An AI assistant that focuses on SharePoint list management and data operations.",
apps=[
'microsoft_sharepoint/get_site_lists',
'microsoft_sharepoint/get_list_items',
'microsoft_sharepoint/create_list_item',
'microsoft_sharepoint/update_list_item'
]
)
# Task to manage list data
list_management_task = Task(
description="Get all lists from the project site, review items, and update status for completed tasks",
agent=list_manager,
expected_output="SharePoint lists reviewed and task statuses updated"
)
crew = Crew(
agents=[list_manager],
tasks=[list_management_task]
)
crew.kickoff()
```
### Document Library Management
```python
from crewai import Agent, Task, Crew
document_manager = Agent(
role="Document Manager",
goal="Manage SharePoint document libraries and files",
backstory="An AI assistant that specializes in document organization and file management.",
apps=['microsoft_sharepoint']
)
# Task to manage documents
document_task = Task(
description="""
1. Get all files from the main document library
2. Upload new policy documents to the appropriate folders
3. Organize files by department and date
4. Remove outdated documents
""",
agent=document_manager,
expected_output="Document library organized with new files uploaded and outdated files removed"
)
crew = Crew(
agents=[document_manager],
tasks=[document_task]
)
crew.kickoff()
```
### Site Administration and Analysis
```python
from crewai import Agent, Task, Crew
site_administrator = Agent(
role="Site Administrator",
goal="Administer and analyze SharePoint sites",
backstory="An AI assistant that handles site administration and provides insights on site usage.",
apps=['microsoft_sharepoint']
)
# Task for site administration
admin_task = Task(
description="""
1. Get information about all accessible SharePoint sites
2. Analyze site structure and content organization
3. Identify sites with low activity or outdated content
4. Generate recommendations for site optimization
""",
agent=site_administrator,
expected_output="Site analysis completed with optimization recommendations"
)
crew = Crew(
agents=[site_administrator],
tasks=[admin_task]
)
crew.kickoff()
```
### Automated Content Workflows
```python
from crewai import Agent, Task, Crew
workflow_automator = Agent(
role="Workflow Automator",
goal="Automate SharePoint content workflows and processes",
backstory="An AI assistant that automates complex SharePoint workflows and content management processes.",
apps=['microsoft_sharepoint']
)
# Complex workflow automation task
automation_task = Task(
description="""
1. Monitor project lists across multiple sites
2. Create status reports based on list data
3. Upload reports to designated document libraries
4. Update project tracking lists with completion status
5. Archive completed project documents
6. Send notifications for overdue items
""",
agent=workflow_automator,
expected_output="Automated workflow completed with status reports generated and project tracking updated"
)
crew = Crew(
agents=[workflow_automator],
tasks=[automation_task]
)
crew.kickoff()
```
### Data Integration and Reporting
```python
from crewai import Agent, Task, Crew
data_integrator = Agent(
role="Data Integrator",
goal="Integrate and analyze data across SharePoint sites and lists",
backstory="An AI assistant that specializes in data integration and cross-site analysis.",
apps=['microsoft_sharepoint']
)
# Task for data integration
integration_task = Task(
description="""
1. Get data from multiple SharePoint lists across different sites
2. Consolidate information into comprehensive reports
3. Create new list items with aggregated data
4. Upload analytical reports to executive document library
5. Update dashboard lists with key metrics
""",
agent=data_integrator,
expected_output="Data integrated across sites with comprehensive reports and updated dashboards"
)
crew = Crew(
agents=[data_integrator],
tasks=[integration_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Permission Errors**
- Ensure your Microsoft account has appropriate permissions for SharePoint sites
- Verify that the OAuth connection includes required scopes (Sites.Read.All, Sites.ReadWrite.All)
- Check that you have access to the specific sites and lists you're trying to access
**Site and List ID Issues**
- Verify that site IDs and list IDs are correct and properly formatted
- Ensure that sites and lists exist and are accessible to your account
- Use the get_sites and get_site_lists actions to discover valid IDs
**Field and Schema Issues**
- Ensure field names match exactly with the SharePoint list schema
- Verify that required fields are included when creating or updating list items
- Check that field types and values are compatible with the list column definitions
**File Upload Issues**
- Ensure file paths are properly formatted and don't contain invalid characters
- Verify that you have write permissions to the target document library
- Check that file content is properly encoded for upload
**OData Query Issues**
- Use proper OData syntax for filter, select, expand, and orderby parameters
- Verify that property names used in queries exist in the target resources
- Test simple queries before building complex filter expressions
**Pagination and Performance**
- Use top and skip parameters appropriately for large result sets
- Implement proper pagination for lists with many items
- Consider using select parameters to return only needed properties
**Document Library Operations**
- Ensure you have proper permissions for document library operations
- Verify that drive item IDs are correct when deleting files or folders
- Check that file paths don't conflict with existing content
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft SharePoint integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,212 @@
---
title: Microsoft Teams Integration
description: "Team collaboration and communication with Microsoft Teams integration for CrewAI."
icon: "users"
mode: "wide"
---
## Overview
Enable your agents to access Teams data, send messages, create meetings, and manage channels. Automate team communication, schedule meetings, retrieve messages, and streamline your collaboration workflows with AI-powered automation.
## Prerequisites
Before using the Microsoft Teams integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft account with Teams access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft Teams Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft Teams** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for Teams access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_teams/get_teams">
**Description:** Get all teams the user is a member of.
**Parameters:**
- No parameters required.
</Accordion>
<Accordion title="microsoft_teams/get_channels">
**Description:** Get channels in a specific team.
**Parameters:**
- `team_id` (string, required): The ID of the team.
</Accordion>
<Accordion title="microsoft_teams/send_message">
**Description:** Send a message to a Teams channel.
**Parameters:**
- `team_id` (string, required): The ID of the team.
- `channel_id` (string, required): The ID of the channel.
- `message` (string, required): The message content.
- `content_type` (string, optional): Content type (html or text). Enum: `html`, `text`. Default is `text`.
</Accordion>
<Accordion title="microsoft_teams/get_messages">
**Description:** Get messages from a Teams channel.
**Parameters:**
- `team_id` (string, required): The ID of the team.
- `channel_id` (string, required): The ID of the channel.
- `top` (integer, optional): Number of messages to retrieve (max 50). Default is `20`.
</Accordion>
<Accordion title="microsoft_teams/create_meeting">
**Description:** Create a Teams meeting.
**Parameters:**
- `subject` (string, required): Meeting subject/title.
- `startDateTime` (string, required): Meeting start time (ISO 8601 format with timezone).
- `endDateTime` (string, required): Meeting end time (ISO 8601 format with timezone).
</Accordion>
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
**Description:** Search online meetings by Join Web URL.
**Parameters:**
- `join_web_url` (string, required): The join web URL of the meeting to search for.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Microsoft Teams Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Microsoft Teams capabilities
teams_agent = Agent(
role="Teams Coordinator",
goal="Manage Teams communication and meetings efficiently",
backstory="An AI assistant specialized in Microsoft Teams operations and team collaboration.",
apps=['microsoft_teams'] # All Teams actions will be available
)
# Task to list teams and channels
explore_teams_task = Task(
description="List all teams I'm a member of and then get the channels for the first team.",
agent=teams_agent,
expected_output="List of teams and channels displayed."
)
# Run the task
crew = Crew(
agents=[teams_agent],
tasks=[explore_teams_task]
)
crew.kickoff()
```
### Messaging and Communication
```python
from crewai import Agent, Task, Crew
# Create an agent focused on messaging
messenger = Agent(
role="Teams Messenger",
goal="Send and retrieve messages in Teams channels",
backstory="An AI assistant skilled in team communication and message management.",
apps=['microsoft_teams/send_message', 'microsoft_teams/get_messages']
)
# Task to send a message and retrieve recent messages
messaging_task = Task(
description="Send a message 'Hello team! This is an automated update from our AI assistant.' to the General channel of team 'your_team_id', then retrieve the last 10 messages from that channel.",
agent=messenger,
expected_output="Message sent successfully and recent messages retrieved."
)
crew = Crew(
agents=[messenger],
tasks=[messaging_task]
)
crew.kickoff()
```
### Meeting Management
```python
from crewai import Agent, Task, Crew
# Create an agent for meeting management
meeting_scheduler = Agent(
role="Meeting Scheduler",
goal="Create and manage Teams meetings",
backstory="An AI assistant that handles meeting scheduling and organization.",
apps=['microsoft_teams/create_meeting', 'microsoft_teams/search_online_meetings_by_join_url']
)
# Task to create a meeting
schedule_meeting_task = Task(
description="Create a Teams meeting titled 'Weekly Team Sync' scheduled for tomorrow at 10:00 AM lasting for 1 hour (use proper ISO 8601 format with timezone).",
agent=meeting_scheduler,
expected_output="Teams meeting created successfully with meeting details."
)
crew = Crew(
agents=[meeting_scheduler],
tasks=[schedule_meeting_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Authentication Errors**
- Ensure your Microsoft account has the necessary permissions for Teams access.
- Required scopes include: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
- Verify that the OAuth connection includes all required scopes.
**Team and Channel Access**
- Ensure you are a member of the teams you're trying to access.
- Double-check team IDs and channel IDs for correctness.
- Team and channel IDs can be obtained using the `get_teams` and `get_channels` actions.
**Message Sending Issues**
- Ensure `team_id`, `channel_id`, and `message` are provided for `send_message`.
- Verify that you have permissions to send messages to the specified channel.
- Choose appropriate `content_type` (text or html) based on your message format.
**Meeting Creation**
- Ensure `subject`, `startDateTime`, and `endDateTime` are provided.
- Use proper ISO 8601 format with timezone for datetime fields (e.g., '2024-01-20T10:00:00-08:00').
- Verify that the meeting times are in the future.
**Message Retrieval Limitations**
- The `get_messages` action can retrieve a maximum of 50 messages per request.
- Messages are returned in reverse chronological order (newest first).
**Meeting Search**
- For `search_online_meetings_by_join_url`, ensure the join URL is exact and properly formatted.
- The URL should be the complete Teams meeting join URL.
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft Teams integration setup or troubleshooting.
</Card>

View File

@@ -0,0 +1,192 @@
---
title: Microsoft Word Integration
description: "Document creation and management with Microsoft Word integration for CrewAI."
icon: "file-word"
mode: "wide"
---
## Overview
Enable your agents to create, read, and manage Word documents and text files in OneDrive or SharePoint. Automate document creation, retrieve content, manage document properties, and streamline your document workflows with AI-powered automation.
## Prerequisites
Before using the Microsoft Word integration, ensure you have:
- A [CrewAI AMP](https://app.crewai.com) account with an active subscription
- A Microsoft account with Word and OneDrive/SharePoint access
- Connected your Microsoft account through the [Integrations page](https://app.crewai.com/crewai_plus/connectors)
## Setting Up Microsoft Word Integration
### 1. Connect Your Microsoft Account
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Microsoft Word** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for file access
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
```bash
uv add crewai-tools
```
## Available Actions
<AccordionGroup>
<Accordion title="microsoft_word/get_documents">
**Description:** Get all Word documents from OneDrive or SharePoint.
**Parameters:**
- `select` (string, optional): Select specific properties to return.
- `filter` (string, optional): Filter results using OData syntax.
- `expand` (string, optional): Expand related resources inline.
- `top` (integer, optional): Number of items to return (min 1, max 999).
- `orderby` (string, optional): Order results by specified properties.
</Accordion>
<Accordion title="microsoft_word/create_text_document">
**Description:** Create a text document (.txt) with content. RECOMMENDED for programmatic content creation that needs to be readable and editable.
**Parameters:**
- `file_name` (string, required): Name of the text document (should end with .txt).
- `content` (string, optional): Text content for the document. Default is "This is a new text document created via API."
</Accordion>
<Accordion title="microsoft_word/get_document_content">
**Description:** Get the content of a document (works best with text files).
**Parameters:**
- `file_id` (string, required): The ID of the document.
</Accordion>
<Accordion title="microsoft_word/get_document_properties">
**Description:** Get properties and metadata of a document.
**Parameters:**
- `file_id` (string, required): The ID of the document.
</Accordion>
<Accordion title="microsoft_word/delete_document">
**Description:** Delete a document.
**Parameters:**
- `file_id` (string, required): The ID of the document to delete.
</Accordion>
</AccordionGroup>
## Usage Examples
### Basic Microsoft Word Agent Setup
```python
from crewai import Agent, Task, Crew
# Create an agent with Microsoft Word capabilities
word_agent = Agent(
role="Document Manager",
goal="Manage Word documents and text files efficiently",
backstory="An AI assistant specialized in Microsoft Word document operations and content management.",
apps=['microsoft_word'] # All Word actions will be available
)
# Task to create a new text document
create_doc_task = Task(
description="Create a new text document named 'meeting_notes.txt' with content 'Meeting Notes from January 2024: Key discussion points and action items.'",
agent=word_agent,
expected_output="New text document 'meeting_notes.txt' created successfully."
)
# Run the task
crew = Crew(
agents=[word_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
### Reading and Managing Documents
```python
from crewai import Agent, Task, Crew
# Create an agent focused on document operations
document_reader = Agent(
role="Document Reader",
goal="Retrieve and analyze document content and properties",
backstory="An AI assistant skilled in reading and analyzing document content.",
apps=['microsoft_word/get_documents', 'microsoft_word/get_document_content', 'microsoft_word/get_document_properties']
)
# Task to list and read documents
read_docs_task = Task(
description="List all Word documents in my OneDrive, then get the content and properties of the first document found.",
agent=document_reader,
expected_output="List of documents with content and properties of the first document."
)
crew = Crew(
agents=[document_reader],
tasks=[read_docs_task]
)
crew.kickoff()
```
### Document Cleanup and Organization
```python
from crewai import Agent, Task, Crew
# Create an agent for document management
document_organizer = Agent(
role="Document Organizer",
goal="Organize and clean up document collections",
backstory="An AI assistant that helps maintain organized document libraries.",
apps=['microsoft_word/get_documents', 'microsoft_word/get_document_properties', 'microsoft_word/delete_document']
)
# Task to organize documents
organize_task = Task(
description="List all documents, check their properties, and identify any documents that might be duplicates or outdated for potential cleanup.",
agent=document_organizer,
expected_output="Analysis of document library with recommendations for organization."
)
crew = Crew(
agents=[document_organizer],
tasks=[organize_task]
)
crew.kickoff()
```
## Troubleshooting
### Common Issues
**Authentication Errors**
- Ensure your Microsoft account has the necessary permissions for file access (e.g., `Files.Read.All`, `Files.ReadWrite.All`).
- Verify that the OAuth connection includes all required scopes.
**File Creation Issues**
- When creating text documents, ensure the `file_name` ends with `.txt` extension.
- Verify that you have write permissions to the target location (OneDrive/SharePoint).
**Document Access Issues**
- Double-check document IDs for correctness when accessing specific documents.
- Ensure the referenced documents exist and are accessible.
- Note that this integration works best with text files (.txt) for content operations.
**Content Retrieval Limitations**
- The `get_document_content` action works best with text files (.txt).
- For complex Word documents (.docx), consider using the document properties action to get metadata.
### Getting Help
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
Contact our support team for assistance with Microsoft Word integration setup or troubleshooting.
</Card>

View File

@@ -1,13 +1,13 @@
---
title: Notion Integration
description: "Page and database management with Notion integration for CrewAI."
description: "User management and commenting with Notion integration for CrewAI."
icon: "book"
mode: "wide"
---
## Overview
Enable your agents to manage pages, databases, and content through Notion. Create and update pages, manage content blocks, organize knowledge bases, and streamline your documentation workflows with AI-powered automation.
Enable your agents to manage users and create comments through Notion. Access workspace user information and create comments on pages and discussions, streamlining your collaboration workflows with AI-powered automation.
## Prerequisites
@@ -24,8 +24,8 @@ Before using the Notion integration, ensure you have:
1. Navigate to [CrewAI AMP Integrations](https://app.crewai.com/crewai_plus/connectors)
2. Find **Notion** in the Authentication Integrations section
3. Click **Connect** and complete the OAuth flow
4. Grant the necessary permissions for page and database management
5. Copy your Enterprise Token from [Account Settings](https://app.crewai.com/crewai_plus/settings/account)
4. Grant the necessary permissions for user access and comment creation
5. Copy your Enterprise Token from [Integration Settings](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Install Required Package
@@ -36,242 +36,50 @@ uv add crewai-tools
## Available Actions
<AccordionGroup>
<Accordion title="NOTION_CREATE_PAGE">
**Description:** Create a page in Notion.
<Accordion title="notion/list_users">
**Description:** List all users in the workspace.
**Parameters:**
- `parent` (object, required): Parent - The parent page or database where the new page is inserted, represented as a JSON object with a page_id or database_id key.
- `page_size` (integer, optional): Number of items returned in the response. Minimum: 1, Maximum: 100, Default: 100
- `start_cursor` (string, optional): Cursor for pagination. Return results after this cursor.
</Accordion>
<Accordion title="notion/get_user">
**Description:** Retrieve a specific user by ID.
**Parameters:**
- `user_id` (string, required): The ID of the user to retrieve.
</Accordion>
<Accordion title="notion/create_comment">
**Description:** Create a comment on a page or discussion.
**Parameters:**
- `parent` (object, required): The parent page or discussion to comment on.
```json
{
"database_id": "DATABASE_ID"
"type": "page_id",
"page_id": "PAGE_ID_HERE"
}
```
- `properties` (object, required): Properties - The values of the page's properties. If the parent is a database, then the schema must match the parent database's properties.
or
```json
{
"title": [
{
"text": {
"content": "My Page"
}
}
]
"type": "discussion_id",
"discussion_id": "DISCUSSION_ID_HERE"
}
```
- `icon` (object, required): Icon - The page icon.
```json
{
"emoji": "🥬"
}
```
- `children` (object, optional): Children - Content blocks to add to the page.
- `rich_text` (array, required): The rich text content of the comment.
```json
[
{
"object": "block",
"type": "heading_2",
"heading_2": {
"rich_text": [
{
"type": "text",
"text": {
"content": "Lacinato kale"
}
}
]
"type": "text",
"text": {
"content": "This is my comment text"
}
}
]
```
- `cover` (object, optional): Cover - The page cover image.
```json
{
"external": {
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
}
}
```
</Accordion>
<Accordion title="NOTION_UPDATE_PAGE">
**Description:** Update a page in Notion.
**Parameters:**
- `pageId` (string, required): Page ID - Specify the ID of the Page to Update. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
- `icon` (object, required): Icon - The page icon.
```json
{
"emoji": "🥬"
}
```
- `archived` (boolean, optional): Archived - Whether the page is archived (deleted). Set to true to archive a page. Set to false to un-archive (restore) a page.
- `properties` (object, optional): Properties - The property values to update for the page.
```json
{
"title": [
{
"text": {
"content": "My Updated Page"
}
}
]
}
```
- `cover` (object, optional): Cover - The page cover image.
```json
{
"external": {
"url": "https://upload.wikimedia.org/wikipedia/commons/6/62/Tuscankale.jpg"
}
}
```
</Accordion>
<Accordion title="NOTION_GET_PAGE_BY_ID">
**Description:** Get a page by ID in Notion.
**Parameters:**
- `pageId` (string, required): Page ID - Specify the ID of the Page to Get. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_ARCHIVE_PAGE">
**Description:** Archive a page in Notion.
**Parameters:**
- `pageId` (string, required): Page ID - Specify the ID of the Page to Archive. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_SEARCH_PAGES">
**Description:** Search pages in Notion using filters.
**Parameters:**
- `searchByTitleFilterSearch` (object, optional): A filter in disjunctive normal form - OR of AND groups of single conditions.
```json
{
"operator": "OR",
"conditions": [
{
"operator": "AND",
"conditions": [
{
"field": "query",
"operator": "$stringExactlyMatches",
"value": "meeting notes"
}
]
}
]
}
```
Available fields: `query`, `filter.value`, `direction`, `page_size`
</Accordion>
<Accordion title="NOTION_GET_PAGE_CONTENT">
**Description:** Get page content (blocks) in Notion.
**Parameters:**
- `blockId` (string, required): Page ID - Specify a Block or Page ID to receive all of its block's children in order. (example: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_UPDATE_BLOCK">
**Description:** Update a block in Notion.
**Parameters:**
- `blockId` (string, required): Block ID - Specify the ID of the Block to Update. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
- `archived` (boolean, optional): Archived - Set to true to archive (delete) a block. Set to false to un-archive (restore) a block.
- `paragraph` (object, optional): Paragraph content.
```json
{
"rich_text": [
{
"type": "text",
"text": {
"content": "Lacinato kale",
"link": null
}
}
],
"color": "default"
}
```
- `image` (object, optional): Image block.
```json
{
"type": "external",
"external": {
"url": "https://website.domain/images/image.png"
}
}
```
- `bookmark` (object, optional): Bookmark block.
```json
{
"caption": [],
"url": "https://companywebsite.com"
}
```
- `code` (object, optional): Code block.
```json
{
"rich_text": [
{
"type": "text",
"text": {
"content": "const a = 3"
}
}
],
"language": "javascript"
}
```
- `pdf` (object, optional): PDF block.
```json
{
"type": "external",
"external": {
"url": "https://website.domain/files/doc.pdf"
}
}
```
- `table` (object, optional): Table block.
```json
{
"table_width": 2,
"has_column_header": false,
"has_row_header": false
}
```
- `tableOfContent` (object, optional): Table of Contents block.
```json
{
"color": "default"
}
```
- `additionalFields` (object, optional): Additional block types.
```json
{
"child_page": {
"title": "Lacinato kale"
},
"child_database": {
"title": "My database"
}
}
```
</Accordion>
<Accordion title="NOTION_GET_BLOCK_BY_ID">
**Description:** Get a block by ID in Notion.
**Parameters:**
- `blockId` (string, required): Block ID - Specify the ID of the Block to Get. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
<Accordion title="NOTION_DELETE_BLOCK">
**Description:** Delete a block in Notion.
**Parameters:**
- `blockId` (string, required): Block ID - Specify the ID of the Block to Delete. (example: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
</AccordionGroup>
@@ -281,32 +89,26 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Notion tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Notion capabilities
notion_agent = Agent(
role="Documentation Manager",
goal="Manage documentation and knowledge base in Notion efficiently",
backstory="An AI assistant specialized in content management and documentation.",
tools=[enterprise_tools]
role="Workspace Manager",
goal="Manage workspace users and facilitate collaboration through comments",
backstory="An AI assistant specialized in user management and team collaboration.",
apps=['notion'] # All Notion actions will be available
)
# Task to create a meeting notes page
create_notes_task = Task(
description="Create a new meeting notes page in the team database with today's date and agenda items",
# Task to list workspace users
user_management_task = Task(
description="List all users in the workspace and provide a summary of team members",
agent=notion_agent,
expected_output="Meeting notes page created successfully with structured content"
expected_output="Complete list of workspace users with their details"
)
# Run the task
crew = Crew(
agents=[notion_agent],
tasks=[create_notes_task]
tasks=[user_management_task]
)
crew.kickoff()
@@ -315,144 +117,116 @@ crew.kickoff()
### Filtering Specific Notion Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Notion tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["notion_create_page", "notion_update_block", "notion_search_pages"]
comment_manager = Agent(
role="Comment Manager",
goal="Create and manage comments on Notion pages",
backstory="An AI assistant that focuses on facilitating discussions through comments.",
apps=['notion/create_comment']
)
content_manager = Agent(
role="Content Manager",
goal="Create and manage content pages efficiently",
backstory="An AI assistant that focuses on content creation and management.",
tools=enterprise_tools
)
# Task to manage content workflow
content_workflow = Task(
description="Create a new project documentation page and add structured content blocks for requirements and specifications",
agent=content_manager,
expected_output="Project documentation created with organized content sections"
# Task to create comments on pages
comment_task = Task(
description="Create a summary comment on the project status page with key updates",
agent=comment_manager,
expected_output="Comment created successfully with project status updates"
)
crew = Crew(
agents=[content_manager],
tasks=[content_workflow]
agents=[comment_manager],
tasks=[comment_task]
)
crew.kickoff()
```
### Knowledge Base Management
### User Information and Team Management
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
team_coordinator = Agent(
role="Team Coordinator",
goal="Coordinate team activities and manage user information",
backstory="An AI assistant that helps coordinate team activities and manages user information.",
apps=['notion']
)
knowledge_curator = Agent(
role="Knowledge Curator",
goal="Curate and organize knowledge base content in Notion",
backstory="An experienced knowledge manager who organizes and maintains comprehensive documentation.",
tools=[enterprise_tools]
)
# Task to curate knowledge base
curation_task = Task(
# Task to coordinate team activities
coordination_task = Task(
description="""
1. Search for existing documentation pages related to our new product feature
2. Create a comprehensive feature documentation page with proper structure
3. Add code examples, images, and links to related resources
4. Update existing pages with cross-references to the new documentation
1. List all users in the workspace
2. Get detailed information for specific team members
3. Create comments on relevant pages to notify team members about updates
""",
agent=knowledge_curator,
expected_output="Feature documentation created and integrated with existing knowledge base"
agent=team_coordinator,
expected_output="Team coordination completed with user information gathered and notifications sent"
)
crew = Crew(
agents=[knowledge_curator],
tasks=[curation_task]
agents=[team_coordinator],
tasks=[coordination_task]
)
crew.kickoff()
```
### Content Structure and Organization
### Collaboration and Communication
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
collaboration_facilitator = Agent(
role="Collaboration Facilitator",
goal="Facilitate team collaboration through comments and user management",
backstory="An AI assistant that specializes in team collaboration and communication.",
apps=['notion']
)
content_organizer = Agent(
role="Content Organizer",
goal="Organize and structure content blocks for optimal readability",
backstory="An AI assistant that specializes in content structure and user experience.",
tools=[enterprise_tools]
)
# Task to organize content structure
organization_task = Task(
# Task to facilitate collaboration
collaboration_task = Task(
description="""
1. Get content from existing project pages
2. Analyze the structure and identify improvement opportunities
3. Update content blocks to use proper headings, tables, and formatting
4. Add table of contents and improve navigation between related pages
5. Create templates for future documentation consistency
1. Identify active users in the workspace
2. Create contextual comments on project pages to facilitate discussions
3. Provide status updates and feedback through comments
""",
agent=content_organizer,
expected_output="Content reorganized with improved structure and navigation"
agent=collaboration_facilitator,
expected_output="Collaboration facilitated with comments created and team members notified"
)
crew = Crew(
agents=[content_organizer],
tasks=[organization_task]
agents=[collaboration_facilitator],
tasks=[collaboration_task]
)
crew.kickoff()
```
### Automated Documentation Workflows
### Automated Team Communication
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
communication_automator = Agent(
role="Communication Automator",
goal="Automate team communication and user management workflows",
backstory="An AI assistant that automates communication workflows and manages user interactions.",
apps=['notion']
)
doc_automator = Agent(
role="Documentation Automator",
goal="Automate documentation workflows and maintenance",
backstory="An AI assistant that automates repetitive documentation tasks.",
tools=[enterprise_tools]
)
# Complex documentation automation task
# Complex communication automation task
automation_task = Task(
description="""
1. Search for pages that haven't been updated in the last 30 days
2. Review and update outdated content blocks
3. Create weekly team update pages with consistent formatting
4. Add status indicators and progress tracking to project pages
5. Generate monthly documentation health reports
6. Archive completed project pages and organize them in archive sections
1. List all workspace users and identify team roles
2. Get specific user information for project stakeholders
3. Create automated status update comments on key project pages
4. Facilitate team communication through targeted comments
""",
agent=doc_automator,
expected_output="Documentation automated with updated content, weekly reports, and organized archives"
agent=communication_automator,
expected_output="Automated communication workflow completed with user management and comments"
)
crew = Crew(
agents=[doc_automator],
agents=[communication_automator],
tasks=[automation_task]
)
@@ -464,44 +238,29 @@ crew.kickoff()
### Common Issues
**Permission Errors**
- Ensure your Notion account has edit access to the target workspace
- Verify that the OAuth connection includes required scopes for Notion API
- Check that pages and databases are shared with the authenticated integration
- Ensure your Notion account has appropriate permissions to read user information
- Verify that the OAuth connection includes required scopes for user access and comment creation
- Check that you have permissions to comment on the target pages or discussions
**Invalid Page and Block IDs**
- Double-check page IDs and block IDs for correct UUID format
- Ensure referenced pages and blocks exist and are accessible
- Verify that parent page or database IDs are valid when creating new pages
**User Access Issues**
- Ensure you have workspace admin permissions to list all users
- Verify that user IDs are correct and users exist in the workspace
- Check that the workspace allows API access to user information
**Property Schema Issues**
- Ensure page properties match the database schema when creating pages in databases
- Verify that property names and types are correct for the target database
- Check that required properties are included when creating or updating pages
**Comment Creation Issues**
- Verify that page IDs or discussion IDs are correct and accessible
- Ensure that rich text content follows Notion's API format specifications
- Check that you have comment permissions on the target pages or discussions
**Content Block Structure**
- Ensure block content follows Notion's rich text format specifications
- Verify that nested block structures are properly formatted
- Check that media URLs are accessible and properly formatted
**API Rate Limits**
- Be mindful of Notion's API rate limits when making multiple requests
- Implement appropriate delays between requests if needed
- Consider pagination for large user lists
**Search and Filter Issues**
- Ensure search queries are properly formatted and not empty
- Use valid field names in filter formulas: `query`, `filter.value`, `direction`, `page_size`
- Test simple searches before building complex filter conditions
**Parent-Child Relationships**
- Verify that parent page or database exists before creating child pages
- Ensure proper permissions exist for the parent container
- Check that database schemas allow the properties you're trying to set
**Rich Text and Media Content**
- Ensure URLs for external images, PDFs, and bookmarks are accessible
- Verify that rich text formatting follows Notion's API specifications
- Check that code block language types are supported by Notion
**Archive and Deletion Operations**
- Understand the difference between archiving (reversible) and deleting (permanent)
- Verify that you have permissions to archive or delete the target content
- Be cautious with bulk operations that might affect multiple pages or blocks
**Parent Object Specification**
- Ensure parent object type is correctly specified (page_id or discussion_id)
- Verify that the parent page or discussion exists and is accessible
- Check that the parent object ID format is correct
### Getting Help

View File

@@ -22,7 +22,7 @@ Before using the Salesforce integration, ensure you have:
### **Record Management**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
<Accordion title="salesforce/create_record_contact">
**Description:** Create a new Contact record in Salesforce.
**Parameters:**
@@ -35,7 +35,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Contact fields
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
<Accordion title="salesforce/create_record_lead">
**Description:** Create a new Lead record in Salesforce.
**Parameters:**
@@ -51,7 +51,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Lead fields
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/create_record_opportunity">
**Description:** Create a new Opportunity record in Salesforce.
**Parameters:**
@@ -66,7 +66,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Opportunity fields
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
<Accordion title="salesforce/create_record_task">
**Description:** Create a new Task record in Salesforce.
**Parameters:**
@@ -84,7 +84,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Task fields
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
<Accordion title="salesforce/create_record_account">
**Description:** Create a new Account record in Salesforce.
**Parameters:**
@@ -96,7 +96,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Account fields
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
<Accordion title="salesforce/create_record_any">
**Description:** Create a record of any object type in Salesforce.
**Note:** This is a flexible tool for creating records of custom or unknown object types.
@@ -106,7 +106,7 @@ Before using the Salesforce integration, ensure you have:
### **Record Updates**
<AccordionGroup>
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
<Accordion title="salesforce/update_record_contact">
**Description:** Update an existing Contact record in Salesforce.
**Parameters:**
@@ -120,7 +120,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Contact fields
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
<Accordion title="salesforce/update_record_lead">
**Description:** Update an existing Lead record in Salesforce.
**Parameters:**
@@ -137,7 +137,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Lead fields
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/update_record_opportunity">
**Description:** Update an existing Opportunity record in Salesforce.
**Parameters:**
@@ -153,7 +153,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Opportunity fields
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
<Accordion title="salesforce/update_record_task">
**Description:** Update an existing Task record in Salesforce.
**Parameters:**
@@ -171,7 +171,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Task fields
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
<Accordion title="salesforce/update_record_account">
**Description:** Update an existing Account record in Salesforce.
**Parameters:**
@@ -184,7 +184,7 @@ Before using the Salesforce integration, ensure you have:
- `additionalFields` (object, optional): Additional fields in JSON format for custom Account fields
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
<Accordion title="salesforce/update_record_any">
**Description:** Update a record of any object type in Salesforce.
**Note:** This is a flexible tool for updating records of custom or unknown object types.
@@ -194,42 +194,42 @@ Before using the Salesforce integration, ensure you have:
### **Record Retrieval**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
<Accordion title="salesforce/get_record_by_id_contact">
**Description:** Get a Contact record by its ID.
**Parameters:**
- `recordId` (string, required): Record ID of the Contact
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
<Accordion title="salesforce/get_record_by_id_lead">
**Description:** Get a Lead record by its ID.
**Parameters:**
- `recordId` (string, required): Record ID of the Lead
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_id_opportunity">
**Description:** Get an Opportunity record by its ID.
**Parameters:**
- `recordId` (string, required): Record ID of the Opportunity
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
<Accordion title="salesforce/get_record_by_id_task">
**Description:** Get a Task record by its ID.
**Parameters:**
- `recordId` (string, required): Record ID of the Task
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_id_account">
**Description:** Get an Account record by its ID.
**Parameters:**
- `recordId` (string, required): Record ID of the Account
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
<Accordion title="salesforce/get_record_by_id_any">
**Description:** Get a record of any object type by its ID.
**Parameters:**
@@ -241,7 +241,7 @@ Before using the Salesforce integration, ensure you have:
### **Record Search**
<AccordionGroup>
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
<Accordion title="salesforce/search_records_contact">
**Description:** Search for Contact records with advanced filtering.
**Parameters:**
@@ -252,7 +252,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
<Accordion title="salesforce/search_records_lead">
**Description:** Search for Lead records with advanced filtering.
**Parameters:**
@@ -263,7 +263,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
<Accordion title="salesforce/search_records_opportunity">
**Description:** Search for Opportunity records with advanced filtering.
**Parameters:**
@@ -274,7 +274,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
<Accordion title="salesforce/search_records_task">
**Description:** Search for Task records with advanced filtering.
**Parameters:**
@@ -285,7 +285,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
<Accordion title="salesforce/search_records_account">
**Description:** Search for Account records with advanced filtering.
**Parameters:**
@@ -296,7 +296,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
<Accordion title="salesforce/search_records_any">
**Description:** Search for records of any object type.
**Parameters:**
@@ -310,7 +310,7 @@ Before using the Salesforce integration, ensure you have:
### **List View Retrieval**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
<Accordion title="salesforce/get_record_by_view_id_contact">
**Description:** Get Contact records from a specific List View.
**Parameters:**
@@ -318,7 +318,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
<Accordion title="salesforce/get_record_by_view_id_lead">
**Description:** Get Lead records from a specific List View.
**Parameters:**
@@ -326,7 +326,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_view_id_opportunity">
**Description:** Get Opportunity records from a specific List View.
**Parameters:**
@@ -334,7 +334,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
<Accordion title="salesforce/get_record_by_view_id_task">
**Description:** Get Task records from a specific List View.
**Parameters:**
@@ -342,7 +342,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_view_id_account">
**Description:** Get Account records from a specific List View.
**Parameters:**
@@ -350,7 +350,7 @@ Before using the Salesforce integration, ensure you have:
- `paginationParameters` (object, optional): Pagination settings with pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
<Accordion title="salesforce/get_record_by_view_id_any">
**Description:** Get records of any object type from a specific List View.
**Parameters:**
@@ -363,7 +363,7 @@ Before using the Salesforce integration, ensure you have:
### **Custom Fields**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
<Accordion title="salesforce/create_custom_field_contact">
**Description:** Deploy custom fields for Contact objects.
**Parameters:**
@@ -379,7 +379,7 @@ Before using the Salesforce integration, ensure you have:
- `defaultFieldValue` (string, optional): Default field value
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
<Accordion title="salesforce/create_custom_field_lead">
**Description:** Deploy custom fields for Lead objects.
**Parameters:**
@@ -395,7 +395,7 @@ Before using the Salesforce integration, ensure you have:
- `defaultFieldValue` (string, optional): Default field value
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
<Accordion title="salesforce/create_custom_field_opportunity">
**Description:** Deploy custom fields for Opportunity objects.
**Parameters:**
@@ -411,7 +411,7 @@ Before using the Salesforce integration, ensure you have:
- `defaultFieldValue` (string, optional): Default field value
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
<Accordion title="salesforce/create_custom_field_task">
**Description:** Deploy custom fields for Task objects.
**Parameters:**
@@ -427,7 +427,7 @@ Before using the Salesforce integration, ensure you have:
- `defaultFieldValue` (string, optional): Default field value
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
<Accordion title="salesforce/create_custom_field_account">
**Description:** Deploy custom fields for Account objects.
**Parameters:**
@@ -443,7 +443,7 @@ Before using the Salesforce integration, ensure you have:
- `defaultFieldValue` (string, optional): Default field value
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
<Accordion title="salesforce/create_custom_field_any">
**Description:** Deploy custom fields for any object type.
**Note:** This is a flexible tool for creating custom fields on custom or unknown object types.
@@ -453,14 +453,14 @@ Before using the Salesforce integration, ensure you have:
### **Advanced Operations**
<AccordionGroup>
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
<Accordion title="salesforce/write_soql_query">
**Description:** Execute custom SOQL queries against your Salesforce data.
**Parameters:**
- `query` (string, required): SOQL Query (e.g., "SELECT Id, Name FROM Account WHERE Name = 'Example'")
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
<Accordion title="salesforce/create_custom_object">
**Description:** Deploy a new custom object in Salesforce.
**Parameters:**
@@ -470,7 +470,7 @@ Before using the Salesforce integration, ensure you have:
- `recordName` (string, required): Record Name that appears in layouts and searches (e.g., "Account Name")
</Accordion>
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
<Accordion title="salesforce/describe_action_schema">
**Description:** Get the expected schema for operations on specific object types.
**Parameters:**
@@ -487,19 +487,14 @@ Before using the Salesforce integration, ensure you have:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Salesforce tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Salesforce capabilities
salesforce_agent = Agent(
role="CRM Manager",
goal="Manage customer relationships and sales processes efficiently",
backstory="An AI assistant specialized in CRM operations and sales automation.",
tools=[enterprise_tools]
apps=['salesforce'] # All Salesforce actions will be available
)
# Task to create a new lead
@@ -521,19 +516,12 @@ crew.kickoff()
### Filtering Specific Salesforce Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Salesforce tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
)
sales_manager = Agent(
role="Sales Manager",
goal="Manage leads and opportunities in the sales pipeline",
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
tools=enterprise_tools
apps=['salesforce/create_record_lead']
)
# Task to manage sales pipeline
@@ -555,17 +543,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
account_manager = Agent(
role="Account Manager",
goal="Manage customer accounts and maintain strong relationships",
backstory="An AI assistant that specializes in account management and customer relationship building.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Task to manage customer accounts
@@ -591,17 +574,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Sales Data Analyst",
goal="Generate insights from Salesforce data using SOQL queries",
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Complex task involving SOQL queries and data analysis

View File

@@ -22,7 +22,7 @@ Before using the Shopify integration, ensure you have:
### **Customer Management**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_CUSTOMERS">
<Accordion title="shopify/get_customers">
**Description:** Retrieve a list of customers from your Shopify store.
**Parameters:**
@@ -34,7 +34,7 @@ Before using the Shopify integration, ensure you have:
- `limit` (string, optional): Maximum number of customers to return (defaults to 250)
</Accordion>
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
<Accordion title="shopify/search_customers">
**Description:** Search for customers using advanced filtering criteria.
**Parameters:**
@@ -42,7 +42,7 @@ Before using the Shopify integration, ensure you have:
- `limit` (string, optional): Maximum number of customers to return (defaults to 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
<Accordion title="shopify/create_customer">
**Description:** Create a new customer in your Shopify store.
**Parameters:**
@@ -63,7 +63,7 @@ Before using the Shopify integration, ensure you have:
- `metafields` (object, optional): Additional metafields in JSON format
</Accordion>
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
<Accordion title="shopify/update_customer">
**Description:** Update an existing customer in your Shopify store.
**Parameters:**
@@ -89,7 +89,7 @@ Before using the Shopify integration, ensure you have:
### **Order Management**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_ORDERS">
<Accordion title="shopify/get_orders">
**Description:** Retrieve a list of orders from your Shopify store.
**Parameters:**
@@ -101,7 +101,7 @@ Before using the Shopify integration, ensure you have:
- `limit` (string, optional): Maximum number of orders to return (defaults to 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_ORDER">
<Accordion title="shopify/create_order">
**Description:** Create a new order in your Shopify store.
**Parameters:**
@@ -114,7 +114,7 @@ Before using the Shopify integration, ensure you have:
- `note` (string, optional): Order note
</Accordion>
<Accordion title="SHOPIFY_UPDATE_ORDER">
<Accordion title="shopify/update_order">
**Description:** Update an existing order in your Shopify store.
**Parameters:**
@@ -128,7 +128,7 @@ Before using the Shopify integration, ensure you have:
- `note` (string, optional): Order note
</Accordion>
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
<Accordion title="shopify/get_abandoned_carts">
**Description:** Retrieve abandoned carts from your Shopify store.
**Parameters:**
@@ -144,7 +144,7 @@ Before using the Shopify integration, ensure you have:
### **Product Management (REST API)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS">
<Accordion title="shopify/get_products">
**Description:** Retrieve a list of products from your Shopify store using REST API.
**Parameters:**
@@ -160,7 +160,7 @@ Before using the Shopify integration, ensure you have:
- `limit` (string, optional): Maximum number of products to return (defaults to 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT">
<Accordion title="shopify/create_product">
**Description:** Create a new product in your Shopify store using REST API.
**Parameters:**
@@ -176,7 +176,7 @@ Before using the Shopify integration, ensure you have:
- `publishToPointToSale` (boolean, optional): Whether to publish to point of sale
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
<Accordion title="shopify/update_product">
**Description:** Update an existing product in your Shopify store using REST API.
**Parameters:**
@@ -197,14 +197,14 @@ Before using the Shopify integration, ensure you have:
### **Product Management (GraphQL)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
<Accordion title="shopify/get_products_graphql">
**Description:** Retrieve products using advanced GraphQL filtering capabilities.
**Parameters:**
- `productFilterFormula` (object, optional): Advanced filter in disjunctive normal form with support for fields like id, title, vendor, status, handle, tag, created_at, updated_at, published_at
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/create_product_graphql">
**Description:** Create a new product using GraphQL API with enhanced media support.
**Parameters:**
@@ -217,7 +217,7 @@ Before using the Shopify integration, ensure you have:
- `additionalFields` (object, optional): Additional product fields like status, requiresSellingPlan, giftCard
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/update_product_graphql">
**Description:** Update an existing product using GraphQL API with enhanced media support.
**Parameters:**
@@ -238,19 +238,14 @@ Before using the Shopify integration, ensure you have:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Shopify tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Shopify capabilities
shopify_agent = Agent(
role="E-commerce Manager",
goal="Manage online store operations and customer relationships efficiently",
backstory="An AI assistant specialized in e-commerce operations and online store management.",
tools=[enterprise_tools]
apps=['shopify'] # All Shopify actions will be available
)
# Task to create a new customer
@@ -272,19 +267,12 @@ crew.kickoff()
### Filtering Specific Shopify Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Shopify tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["shopify_create_customer", "shopify_create_order", "shopify_get_products"]
)
store_manager = Agent(
role="Store Manager",
goal="Manage customer orders and product catalog",
backstory="An experienced store manager who handles customer relationships and inventory management.",
tools=enterprise_tools
apps=['shopify/create_customer']
)
# Task to manage store operations
@@ -306,17 +294,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
product_manager = Agent(
role="Product Manager",
goal="Manage product catalog and inventory with advanced GraphQL capabilities",
backstory="An AI assistant that specializes in product management and catalog optimization.",
tools=[enterprise_tools]
apps=['shopify']
)
# Task to manage product catalog
@@ -343,17 +326,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="E-commerce Analyst",
goal="Analyze customer behavior and order patterns to optimize store performance",
backstory="An analytical AI that excels at extracting insights from e-commerce data.",
tools=[enterprise_tools]
apps=['shopify']
)
# Complex task involving multiple operations

View File

@@ -22,21 +22,21 @@ Before using the Slack integration, ensure you have:
### **User Management**
<AccordionGroup>
<Accordion title="SLACK_LIST_MEMBERS">
<Accordion title="slack/list_members">
**Description:** List all members in a Slack channel.
**Parameters:**
- No parameters required - retrieves all channel members
</Accordion>
<Accordion title="SLACK_GET_USER_BY_EMAIL">
<Accordion title="slack/get_user_by_email">
**Description:** Find a user in your Slack workspace by their email address.
**Parameters:**
- `email` (string, required): The email address of a user in the workspace
</Accordion>
<Accordion title="SLACK_GET_USERS_BY_NAME">
<Accordion title="slack/get_users_by_name">
**Description:** Search for users by their name or display name.
**Parameters:**
@@ -50,7 +50,7 @@ Before using the Slack integration, ensure you have:
### **Channel Management**
<AccordionGroup>
<Accordion title="SLACK_LIST_CHANNELS">
<Accordion title="slack/list_channels">
**Description:** List all channels in your Slack workspace.
**Parameters:**
@@ -61,7 +61,7 @@ Before using the Slack integration, ensure you have:
### **Messaging**
<AccordionGroup>
<Accordion title="SLACK_SEND_MESSAGE">
<Accordion title="slack/send_message">
**Description:** Send a message to a Slack channel.
**Parameters:**
@@ -73,7 +73,7 @@ Before using the Slack integration, ensure you have:
- `authenticatedUser` (boolean, optional): If true, message appears to come from your authenticated Slack user instead of the application (defaults to false)
</Accordion>
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
<Accordion title="slack/send_direct_message">
**Description:** Send a direct message to a specific user in Slack.
**Parameters:**
@@ -89,7 +89,7 @@ Before using the Slack integration, ensure you have:
### **Search & Discovery**
<AccordionGroup>
<Accordion title="SLACK_SEARCH_MESSAGES">
<Accordion title="slack/search_messages">
**Description:** Search for messages across your Slack workspace.
**Parameters:**
@@ -150,19 +150,13 @@ Slack's Block Kit allows you to create rich, interactive messages. Here are some
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Slack tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Slack capabilities
slack_agent = Agent(
role="Team Communication Manager",
goal="Facilitate team communication and coordinate collaboration efficiently",
backstory="An AI assistant specialized in team communication and workspace coordination.",
tools=[enterprise_tools]
apps=['slack'] # All Slack actions will be available
)
# Task to send project updates
@@ -184,19 +178,18 @@ crew.kickoff()
### Filtering Specific Slack Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Slack tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["slack_send_message", "slack_send_direct_message", "slack_search_messages"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Slack actions only
communication_manager = Agent(
role="Communication Coordinator",
goal="Manage team communications and ensure important messages reach the right people",
backstory="An experienced communication coordinator who handles team messaging and notifications.",
tools=enterprise_tools
apps=[
'slack/send_message',
'slack/send_direct_message',
'slack/search_messages'
] # Using canonical action names from canonical_integrations.yml
)
# Task to coordinate team communication
@@ -218,17 +211,13 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create agent with Slack messaging capabilities
notification_agent = Agent(
role="Notification Manager",
goal="Create rich, interactive notifications and manage workspace communication",
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
tools=[enterprise_tools]
apps=['slack/send_message'] # Specific action for sending messages
)
# Task to send rich notifications
@@ -254,17 +243,17 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create agent with Slack search and user management capabilities
analytics_agent = Agent(
role="Communication Analyst",
goal="Analyze team communication patterns and extract insights from conversations",
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
tools=[enterprise_tools]
apps=[
'slack/search_messages',
'slack/get_user_by_email',
'slack/list_members'
] # Using canonical action names from canonical_integrations.yml
)
# Complex task involving search and analysis

View File

@@ -22,7 +22,7 @@ Before using the Stripe integration, ensure you have:
### **Customer Management**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_CUSTOMER">
<Accordion title="stripe/create_customer">
**Description:** Create a new customer in your Stripe account.
**Parameters:**
@@ -32,14 +32,14 @@ Before using the Stripe integration, ensure you have:
- `metadataCreateCustomer` (object, optional): Additional metadata as key-value pairs (e.g., `{"field1": 1, "field2": 2}`)
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
<Accordion title="stripe/get_customer_by_id">
**Description:** Retrieve a specific customer by their Stripe customer ID.
**Parameters:**
- `idGetCustomer` (string, required): The Stripe customer ID to retrieve
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMERS">
<Accordion title="stripe/get_customers">
**Description:** Retrieve a list of customers with optional filtering.
**Parameters:**
@@ -49,7 +49,7 @@ Before using the Stripe integration, ensure you have:
- `limitGetCustomers` (string, optional): Maximum number of customers to return (defaults to 10)
</Accordion>
<Accordion title="STRIPE_UPDATE_CUSTOMER">
<Accordion title="stripe/update_customer">
**Description:** Update an existing customer's information.
**Parameters:**
@@ -64,7 +64,7 @@ Before using the Stripe integration, ensure you have:
### **Subscription Management**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
<Accordion title="stripe/create_subscription">
**Description:** Create a new subscription for a customer.
**Parameters:**
@@ -73,7 +73,7 @@ Before using the Stripe integration, ensure you have:
- `metadataCreateSubscription` (object, optional): Additional metadata for the subscription
</Accordion>
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
<Accordion title="stripe/get_subscriptions">
**Description:** Retrieve subscriptions with optional filtering.
**Parameters:**
@@ -86,7 +86,7 @@ Before using the Stripe integration, ensure you have:
### **Product Management**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_PRODUCT">
<Accordion title="stripe/create_product">
**Description:** Create a new product in your Stripe catalog.
**Parameters:**
@@ -95,14 +95,14 @@ Before using the Stripe integration, ensure you have:
- `metadataProduct` (object, optional): Additional product metadata as key-value pairs
</Accordion>
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
<Accordion title="stripe/get_product_by_id">
**Description:** Retrieve a specific product by its Stripe product ID.
**Parameters:**
- `productId` (string, required): The Stripe product ID to retrieve
</Accordion>
<Accordion title="STRIPE_GET_PRODUCTS">
<Accordion title="stripe/get_products">
**Description:** Retrieve a list of products with optional filtering.
**Parameters:**
@@ -115,7 +115,7 @@ Before using the Stripe integration, ensure you have:
### **Financial Operations**
<AccordionGroup>
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
<Accordion title="stripe/get_balance_transactions">
**Description:** Retrieve balance transactions from your Stripe account.
**Parameters:**
@@ -124,7 +124,7 @@ Before using the Stripe integration, ensure you have:
- `pageCursor` (string, optional): Page cursor for pagination
</Accordion>
<Accordion title="STRIPE_GET_PLANS">
<Accordion title="stripe/get_plans">
**Description:** Retrieve subscription plans from your Stripe account.
**Parameters:**
@@ -140,19 +140,14 @@ Before using the Stripe integration, ensure you have:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Stripe tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Stripe capabilities
stripe_agent = Agent(
role="Payment Manager",
goal="Manage customer payments, subscriptions, and billing operations efficiently",
backstory="An AI assistant specialized in payment processing and subscription management.",
tools=[enterprise_tools]
apps=['stripe'] # All Stripe actions will be available
)
# Task to create a new customer
@@ -174,19 +169,12 @@ crew.kickoff()
### Filtering Specific Stripe Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Stripe tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["stripe_create_customer", "stripe_create_subscription", "stripe_get_balance_transactions"]
)
billing_manager = Agent(
role="Billing Manager",
goal="Handle customer billing, subscriptions, and payment processing",
backstory="An experienced billing manager who handles subscription lifecycle and payment operations.",
tools=enterprise_tools
apps=['stripe']
)
# Task to manage billing operations
@@ -208,17 +196,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
subscription_manager = Agent(
role="Subscription Manager",
goal="Manage customer subscriptions and optimize recurring revenue",
backstory="An AI assistant that specializes in subscription lifecycle management and customer retention.",
tools=[enterprise_tools]
apps=['stripe']
)
# Task to manage subscription operations
@@ -245,17 +228,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
financial_analyst = Agent(
role="Financial Analyst",
goal="Analyze payment data and generate financial insights",
backstory="An analytical AI that excels at extracting insights from payment and subscription data.",
tools=[enterprise_tools]
apps=['stripe']
)
# Complex task involving financial analysis

View File

@@ -22,7 +22,7 @@ Before using the Zendesk integration, ensure you have:
### **Ticket Management**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_TICKET">
<Accordion title="zendesk/create_ticket">
**Description:** Create a new support ticket in Zendesk.
**Parameters:**
@@ -40,7 +40,7 @@ Before using the Zendesk integration, ensure you have:
- `ticketCustomFields` (object, optional): Custom field values in JSON format
</Accordion>
<Accordion title="ZENDESK_UPDATE_TICKET">
<Accordion title="zendesk/update_ticket">
**Description:** Update an existing support ticket in Zendesk.
**Parameters:**
@@ -58,14 +58,14 @@ Before using the Zendesk integration, ensure you have:
- `ticketCustomFields` (object, optional): Updated custom field values
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
<Accordion title="zendesk/get_ticket_by_id">
**Description:** Retrieve a specific ticket by its ID.
**Parameters:**
- `ticketId` (string, required): The ticket ID to retrieve (e.g., "35436")
</Accordion>
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
<Accordion title="zendesk/add_comment_to_ticket">
**Description:** Add a comment or internal note to an existing ticket.
**Parameters:**
@@ -75,7 +75,7 @@ Before using the Zendesk integration, ensure you have:
- `isPublic` (boolean, optional): True for public comments, false for internal notes
</Accordion>
<Accordion title="ZENDESK_SEARCH_TICKETS">
<Accordion title="zendesk/search_tickets">
**Description:** Search for tickets using various filters and criteria.
**Parameters:**
@@ -100,7 +100,7 @@ Before using the Zendesk integration, ensure you have:
### **User Management**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_USER">
<Accordion title="zendesk/create_user">
**Description:** Create a new user in Zendesk.
**Parameters:**
@@ -113,7 +113,7 @@ Before using the Zendesk integration, ensure you have:
- `notes` (string, optional): Internal notes about the user
</Accordion>
<Accordion title="ZENDESK_UPDATE_USER">
<Accordion title="zendesk/update_user">
**Description:** Update an existing user's information.
**Parameters:**
@@ -127,14 +127,14 @@ Before using the Zendesk integration, ensure you have:
- `notes` (string, optional): Updated internal notes
</Accordion>
<Accordion title="ZENDESK_GET_USER_BY_ID">
<Accordion title="zendesk/get_user_by_id">
**Description:** Retrieve a specific user by their ID.
**Parameters:**
- `userId` (string, required): The user ID to retrieve
</Accordion>
<Accordion title="ZENDESK_SEARCH_USERS">
<Accordion title="zendesk/search_users">
**Description:** Search for users using various criteria.
**Parameters:**
@@ -150,7 +150,7 @@ Before using the Zendesk integration, ensure you have:
### **Administrative Tools**
<AccordionGroup>
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
<Accordion title="zendesk/get_ticket_fields">
**Description:** Retrieve all standard and custom fields available for tickets.
**Parameters:**
@@ -158,7 +158,7 @@ Before using the Zendesk integration, ensure you have:
- `pageCursor` (string, optional): Page cursor for pagination
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
<Accordion title="zendesk/get_ticket_audits">
**Description:** Get audit records (read-only history) for tickets.
**Parameters:**
@@ -205,19 +205,14 @@ Standard ticket status progression:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Zendesk tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
from crewai import Agent, Task, Crew
# Create an agent with Zendesk capabilities
zendesk_agent = Agent(
role="Support Manager",
goal="Manage customer support tickets and provide excellent customer service",
backstory="An AI assistant specialized in customer support operations and ticket management.",
tools=[enterprise_tools]
apps=['zendesk'] # All Zendesk actions will be available
)
# Task to create a new support ticket
@@ -239,19 +234,14 @@ crew.kickoff()
### Filtering Specific Zendesk Tools
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Zendesk tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
)
from crewai import Agent, Task, Crew
# Create agent with specific Zendesk actions only
support_agent = Agent(
role="Customer Support Agent",
goal="Handle customer inquiries and resolve support issues efficiently",
backstory="An experienced support agent who specializes in ticket resolution and customer communication.",
tools=enterprise_tools
apps=['zendesk/create_ticket'] # Specific Zendesk actions
)
# Task to manage support workflow
@@ -273,17 +263,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
ticket_manager = Agent(
role="Ticket Manager",
goal="Manage support ticket workflows and ensure timely resolution",
backstory="An AI assistant that specializes in support ticket triage and workflow optimization.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Task to manage ticket lifecycle
@@ -310,17 +295,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
support_analyst = Agent(
role="Support Analyst",
goal="Analyze support metrics and generate insights for team performance",
backstory="An analytical AI that excels at extracting insights from support data and ticket patterns.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Complex task involving analytics and reporting

View File

@@ -43,7 +43,7 @@ mode: "wide"
1. <Link href="https://app.crewai.com/crewai_plus/connectors">Integrations</Link>로 이동
2. 원하는 서비스에서 <b>Connect</b> 클릭
3. OAuth 플로우 완료 및 스코프 승인
4. <b>Integration</b> 탭에서 Enterprise Token 복사
4. <Link href="https://app.crewai.com/crewai_plus/settings/integrations">통합 설정</Link>에서 Enterprise Token 복사
<Frame>
![Enterprise Token](/images/enterprise/enterprise_action_auth_token.png)
@@ -60,23 +60,18 @@ mode: "wide"
### 사용 예시
<Tip>
인증된 모든 서비스는 도구로 제공됩니다. 에이전트에 `CrewaiEnterpriseTools`를 추가하세요.
새로운 간소화된 접근 방식을 사용하여 엔터프라이즈 앱을 통합하세요. Agent 구성에서 앱과 해당 액션을 직접 지정하기만 하면 됩니다.
</Tip>
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
print(enterprise_tools)
# Gmail 기능을 가진 에이전트 생성
email_agent = Agent(
role="이메일 매니저",
goal="이메일 커뮤니케이션 관리",
backstory="이메일 관리에 특화된 AI 어시스턴트",
tools=enterprise_tools
apps=['gmail', 'gmail/send_email'] # 정식 이름 'gmail' 사용
)
email_task = Task(
@@ -92,19 +87,14 @@ mode: "wide"
### 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
actions_list=["gmail_find_email"]
)
gmail_tool = enterprise_tools["gmail_find_email"]
from crewai import Agent, Task, Crew
# 특정 Gmail 액션만 사용하는 에이전트 생성
gmail_agent = Agent(
role="Gmail 매니저",
goal="Gmail 커뮤니케이션 및 알림 관리",
backstory="Gmail 커뮤니케이션 조율 AI 어시스턴트",
tools=[gmail_tool]
apps=['gmail/fetch_emails'] # 정식 이름과 특정 액션 사용
)
notification_task = Task(

View File

@@ -25,7 +25,7 @@ Asana 연동을 사용하기 전에 다음을 확인하세요:
2. 인증 통합 섹션에서 **Asana**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 작업 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="ASANA_CREATE_COMMENT">
<Accordion title="asana/create_comment">
**설명:** Asana에 댓글을 생성합니다.
**매개변수:**
@@ -44,7 +44,7 @@ uv add crewai-tools
- `text` (string, 필수): 텍스트 (예: "This is a comment.").
</Accordion>
<Accordion title="ASANA_CREATE_PROJECT">
<Accordion title="asana/create_project">
**설명:** Asana에 프로젝트를 생성합니다.
**매개변수:**
@@ -54,7 +54,7 @@ uv add crewai-tools
- `notes` (string, 선택): 노트 (예: "These are things we need to purchase.").
</Accordion>
<Accordion title="ASANA_GET_PROJECTS">
<Accordion title="asana/get_projects">
**설명:** Asana의 프로젝트 목록을 가져옵니다.
**매개변수:**
@@ -62,14 +62,14 @@ uv add crewai-tools
- 옵션: `default`, `true`, `false`
</Accordion>
<Accordion title="ASANA_GET_PROJECT_BY_ID">
<Accordion title="asana/get_project_by_id">
**설명:** Asana에서 ID로 프로젝트를 가져옵니다.
**매개변수:**
- `projectFilterId` (string, 필수): 프로젝트 ID.
</Accordion>
<Accordion title="ASANA_CREATE_TASK">
<Accordion title="asana/create_task">
**설명:** Asana에 작업을 생성합니다.
**매개변수:**
@@ -83,7 +83,7 @@ uv add crewai-tools
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
</Accordion>
<Accordion title="ASANA_UPDATE_TASK">
<Accordion title="asana/update_task">
**설명:** Asana의 작업을 업데이트합니다.
**매개변수:**
@@ -98,7 +98,7 @@ uv add crewai-tools
- `gid` (string, 선택): 외부 ID - 이 작업과 연결할 애플리케이션의 ID입니다. 이 ID를 사용하여 이후 작업 업데이트를 동기화할 수 있습니다.
</Accordion>
<Accordion title="ASANA_GET_TASKS">
<Accordion title="asana/get_tasks">
**설명:** Asana의 작업 목록을 가져옵니다.
**매개변수:**
@@ -108,21 +108,21 @@ uv add crewai-tools
- `completedSince` (string, 선택): 이후 완료됨 - 미완료이거나 해당 시간(ISO 또는 Unix 타임스탬프) 이후에 완료된 작업만 반환합니다. (예: "2014-04-25T16:15:47-04:00").
</Accordion>
<Accordion title="ASANA_GET_TASKS_BY_ID">
<Accordion title="asana/get_tasks_by_id">
**설명:** Asana에서 ID로 작업 목록을 가져옵니다.
**매개변수:**
- `taskId` (string, 필수): 작업 ID.
</Accordion>
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
<Accordion title="asana/get_task_by_external_id">
**설명:** Asana에서 외부 ID로 작업을 가져옵니다.
**매개변수:**
- `gid` (string, 필수): 외부 ID - 이 작업이 애플리케이션과 연동(또는 동기화)된 ID입니다.
</Accordion>
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
<Accordion title="asana/add_task_to_section">
**설명:** Asana에서 섹션에 작업을 추가합니다.
**매개변수:**
@@ -132,14 +132,14 @@ uv add crewai-tools
- `afterTaskId` (string, 선택): 이후 작업 ID - 이 작업이 삽입될 섹션 내의 작업 ID입니다. 이전 작업 ID와 함께 사용할 수 없습니다. (예: "1204619611402340").
</Accordion>
<Accordion title="ASANA_GET_TEAMS">
<Accordion title="asana/get_teams">
**설명:** Asana에서 팀 목록을 가져옵니다.
**매개변수:**
- `workspace` (string, 필수): 워크스페이스 - 인증된 사용자가 볼 수 있는 이 워크스페이스 내의 팀을 반환합니다.
</Accordion>
<Accordion title="ASANA_GET_WORKSPACES">
<Accordion title="asana/get_workspaces">
**설명:** Asana에서 워크스페이스 목록을 가져옵니다.
**매개변수:** 필요 없음.
@@ -152,19 +152,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Asana tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Asana capabilities
asana_agent = Agent(
role="Project Manager",
goal="Manage tasks and projects in Asana efficiently",
backstory="An AI assistant specialized in project management and task coordination.",
tools=[enterprise_tools]
apps=['asana']
)
# Task to create a new project
@@ -186,19 +180,12 @@ crew.kickoff()
### 특정 Asana 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Asana tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["asana_create_task", "asana_update_task", "asana_get_tasks"]
)
task_manager_agent = Agent(
role="Task Manager",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and management.",
tools=enterprise_tools
apps=['asana']
)
# Task to create and assign a task
@@ -220,17 +207,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate project activities and track progress",
backstory="An experienced project coordinator who ensures projects run smoothly.",
tools=[enterprise_tools]
apps=['asana']
)
# Complex task involving multiple Asana operations

View File

@@ -25,7 +25,7 @@ Box 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합 섹션에서 **Box**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 파일 및 폴더 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="BOX_SAVE_FILE">
<Accordion title="box/save_file">
**설명:** Box에서 URL로부터 파일을 저장합니다.
**파라미터:**
@@ -52,7 +52,7 @@ uv add crewai-tools
- `file` (string, 필수): 파일 URL - 파일 크기는 50MB 미만이어야 합니다. (예시: "https://picsum.photos/200/300").
</Accordion>
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
<Accordion title="box/save_file_from_object">
**설명:** Box에 파일을 저장합니다.
**파라미터:**
@@ -61,14 +61,14 @@ uv add crewai-tools
- `folder` (string, 선택): 폴더 - Connect Portal Workflow Settings를 사용하여 사용자가 파일의 폴더 목적지를 선택할 수 있도록 합니다. 비워두면 기본적으로 사용자의 루트 폴더에 저장됩니다.
</Accordion>
<Accordion title="BOX_GET_FILE_BY_ID">
<Accordion title="box/get_file_by_id">
**설명:** Box에서 ID로 파일을 가져옵니다.
**파라미터:**
- `fileId` (string, 필수): 파일 ID - 파일을 나타내는 고유 식별자. (예시: "12345").
</Accordion>
<Accordion title="BOX_LIST_FILES">
<Accordion title="box/list_files">
**설명:** Box에서 파일 목록을 조회합니다.
**파라미터:**
@@ -93,7 +93,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_CREATE_FOLDER">
<Accordion title="box/create_folder">
**설명:** Box에 폴더를 생성합니다.
**파라미터:**
@@ -106,7 +106,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_MOVE_FOLDER">
<Accordion title="box/move_folder">
**설명:** Box에서 폴더를 이동합니다.
**파라미터:**
@@ -120,14 +120,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_GET_FOLDER_BY_ID">
<Accordion title="box/get_folder_by_id">
**설명:** Box에서 ID로 폴더를 가져옵니다.
**파라미터:**
- `folderId` (string, 필수): 폴더 ID - 폴더를 나타내는 고유 식별자. (예시: "0").
</Accordion>
<Accordion title="BOX_SEARCH_FOLDERS">
<Accordion title="box/search_folders">
**설명:** Box에서 폴더를 검색합니다.
**파라미터:**
@@ -152,7 +152,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_DELETE_FOLDER">
<Accordion title="box/delete_folder">
**설명:** Box에서 폴더를 삭제합니다.
**파라미터:**
@@ -167,19 +167,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Box tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Box capabilities
box_agent = Agent(
role="Document Manager",
goal="Manage files and folders in Box efficiently",
backstory="An AI assistant specialized in document management and file organization.",
tools=[enterprise_tools]
apps=['box']
)
# Task to create a folder structure
@@ -201,19 +195,12 @@ crew.kickoff()
### 특정 Box 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Box tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["box_create_folder", "box_save_file", "box_list_files"]
)
file_organizer_agent = Agent(
role="File Organizer",
goal="Organize and manage file storage efficiently",
backstory="An AI assistant that focuses on file organization and storage management.",
tools=enterprise_tools
apps=['box']
)
# Task to organize files
@@ -235,17 +222,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
file_manager = Agent(
role="File Manager",
goal="Maintain organized file structure and manage document lifecycle",
backstory="An experienced file manager who ensures documents are properly organized and accessible.",
tools=[enterprise_tools]
apps=['box']
)
# Complex task involving multiple Box operations

View File

@@ -25,7 +25,7 @@ ClickUp 통합을 사용하기 전에 다음을 준비해야 합니다:
2. 인증 통합 섹션에서 **ClickUp**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
4. 작업 및 프로젝트 관리에 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 동작
<AccordionGroup>
<Accordion title="CLICKUP_SEARCH_TASKS">
<Accordion title="clickup/search_tasks">
**설명:** 고급 필터를 사용하여 ClickUp에서 작업을 검색합니다.
**파라미터:**
@@ -61,7 +61,7 @@ uv add crewai-tools
사용 가능한 필드: `space_ids%5B%5D`, `project_ids%5B%5D`, `list_ids%5B%5D`, `statuses%5B%5D`, `include_closed`, `assignees%5B%5D`, `tags%5B%5D`, `due_date_gt`, `due_date_lt`, `date_created_gt`, `date_created_lt`, `date_updated_gt`, `date_updated_lt`
</Accordion>
<Accordion title="CLICKUP_GET_TASK_IN_LIST">
<Accordion title="clickup/get_task_in_list">
**설명:** ClickUp의 특정 목록에서 작업을 가져옵니다.
**파라미터:**
@@ -69,7 +69,7 @@ uv add crewai-tools
- `taskFilterFormula` (string, 선택): 지정된 필터와 일치하는 작업을 검색합니다. 예: name=task1.
</Accordion>
<Accordion title="CLICKUP_CREATE_TASK">
<Accordion title="clickup/create_task">
**설명:** ClickUp에 작업을 생성합니다.
**파라미터:**
@@ -82,7 +82,7 @@ uv add crewai-tools
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
</Accordion>
<Accordion title="CLICKUP_UPDATE_TASK">
<Accordion title="clickup/update_task">
**설명:** ClickUp의 작업을 업데이트합니다.
**파라미터:**
@@ -96,49 +96,49 @@ uv add crewai-tools
- `additionalFields` (string, 선택): 추가 필드 - 이 작업에 포함할 추가 필드를 JSON으로 지정합니다.
</Accordion>
<Accordion title="CLICKUP_DELETE_TASK">
<Accordion title="clickup/delete_task">
**설명:** ClickUp에서 작업을 삭제합니다.
**파라미터:**
- `taskId` (string, 필수): 작업 ID - 삭제할 작업의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_LIST">
<Accordion title="clickup/get_list">
**설명:** ClickUp에서 목록 정보를 가져옵니다.
**파라미터:**
- `spaceId` (string, 필수): 스페이스 ID - 목록이 포함된 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
<Accordion title="clickup/get_custom_fields_in_list">
**설명:** ClickUp에서 목록의 사용자 정의 필드를 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 목록 ID - 사용자 정의 필드를 가져올 목록의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
<Accordion title="clickup/get_all_fields_in_list">
**설명:** ClickUp에서 목록의 모든 필드를 가져옵니다.
**파라미터:**
- `listId` (string, 필수): 목록 ID - 모든 필드를 가져올 목록의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_SPACE">
<Accordion title="clickup/get_space">
**설명:** ClickUp에서 스페이스 정보를 가져옵니다.
**파라미터:**
- `spaceId` (string, 선택): 스페이스 ID - 조회할 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_FOLDERS">
<Accordion title="clickup/get_folders">
**설명:** ClickUp에서 폴더를 가져옵니다.
**파라미터:**
- `spaceId` (string, 필수): 스페이스 ID - 폴더가 포함된 스페이스의 ID입니다.
</Accordion>
<Accordion title="CLICKUP_GET_MEMBER">
<Accordion title="clickup/get_member">
**설명:** ClickUp에서 멤버 정보를 가져옵니다.
**파라미터:** 필요 없음.
@@ -151,19 +151,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (ClickUp tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with ClickUp capabilities
clickup_agent = Agent(
role="Task Manager",
goal="Manage tasks and projects in ClickUp efficiently",
backstory="An AI assistant specialized in task management and productivity coordination.",
tools=[enterprise_tools]
apps=['clickup']
)
# Task to create a new task
@@ -185,19 +179,12 @@ crew.kickoff()
### 특정 ClickUp 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific ClickUp tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["clickup_create_task", "clickup_update_task", "clickup_search_tasks"]
)
task_coordinator = Agent(
role="Task Coordinator",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and status management.",
tools=enterprise_tools
apps=['clickup']
)
# Task to manage task workflow
@@ -219,17 +206,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_manager = Agent(
role="Project Manager",
goal="Coordinate project activities and track team productivity",
backstory="An experienced project manager who ensures projects are delivered on time.",
tools=[enterprise_tools]
apps=['clickup']
)
# Complex task involving multiple ClickUp operations
@@ -256,17 +238,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_analyst = Agent(
role="Task Analyst",
goal="Analyze task patterns and optimize team productivity",
backstory="An AI assistant that analyzes task data to improve team efficiency.",
tools=[enterprise_tools]
apps=['clickup']
)
# Task to analyze and optimize task distribution

View File

@@ -25,7 +25,7 @@ GitHub 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합 섹션에서 **GitHub**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 리포지토리 및 이슈 관리를 위한 필수 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GITHUB_CREATE_ISSUE">
<Accordion title="github/create_issue">
**설명:** GitHub에 이슈를 생성합니다.
**파라미터:**
@@ -47,7 +47,7 @@ uv add crewai-tools
- `assignees` (string, 선택): 담당자 - 이 이슈의 담당자 GitHub 로그인을 문자열 배열로 지정합니다. (예시: `["octocat"]`).
</Accordion>
<Accordion title="GITHUB_UPDATE_ISSUE">
<Accordion title="github/update_issue">
**설명:** GitHub에서 이슈를 업데이트합니다.
**파라미터:**
@@ -61,7 +61,7 @@ uv add crewai-tools
- 옵션: `open`, `closed`
</Accordion>
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
<Accordion title="github/get_issue_by_number">
**설명:** GitHub에서 번호로 이슈를 조회합니다.
**파라미터:**
@@ -70,7 +70,7 @@ uv add crewai-tools
- `issue_number` (string, 필수): 이슈 번호 - 가져올 이슈의 번호를 지정합니다.
</Accordion>
<Accordion title="GITHUB_LOCK_ISSUE">
<Accordion title="github/lock_issue">
**설명:** GitHub에서 이슈를 잠급니다.
**파라미터:**
@@ -81,7 +81,7 @@ uv add crewai-tools
- 옵션: `off-topic`, `too heated`, `resolved`, `spam`
</Accordion>
<Accordion title="GITHUB_SEARCH_ISSUE">
<Accordion title="github/search_issue">
**설명:** GitHub에서 이슈를 검색합니다.
**파라미터:**
@@ -108,7 +108,7 @@ uv add crewai-tools
사용 가능한 필드: `assignee`, `creator`, `mentioned`, `labels`
</Accordion>
<Accordion title="GITHUB_CREATE_RELEASE">
<Accordion title="github/create_release">
**설명:** GitHub에 릴리스를 생성합니다.
**파라미터:**
@@ -126,7 +126,7 @@ uv add crewai-tools
- 옵션: `true`, `false`
</Accordion>
<Accordion title="GITHUB_UPDATE_RELEASE">
<Accordion title="github/update_release">
**설명:** GitHub에서 릴리스를 업데이트합니다.
**파라미터:**
@@ -145,7 +145,7 @@ uv add crewai-tools
- 옵션: `true`, `false`
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
<Accordion title="github/get_release_by_id">
**설명:** GitHub에서 ID로 릴리스를 조회합니다.
**파라미터:**
@@ -154,7 +154,7 @@ uv add crewai-tools
- `id` (string, 필수): 릴리스 ID - 조회할 릴리스의 ID를 지정합니다.
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
<Accordion title="github/get_release_by_tag_name">
**설명:** GitHub에서 태그 이름으로 릴리스를 조회합니다.
**파라미터:**
@@ -163,7 +163,7 @@ uv add crewai-tools
- `tag_name` (string, 필수): 이름 - 가져올 릴리스의 태그를 지정합니다. (예시: "v1.0.0").
</Accordion>
<Accordion title="GITHUB_DELETE_RELEASE">
<Accordion title="github/delete_release">
**설명:** GitHub에서 릴리스를 삭제합니다.
**파라미터:**
@@ -179,19 +179,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (GitHub tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with GitHub capabilities
github_agent = Agent(
role="Repository Manager",
goal="Manage GitHub repositories, issues, and releases efficiently",
backstory="An AI assistant specialized in repository management and issue tracking.",
tools=[enterprise_tools]
apps=['github']
)
# Task to create a new issue
@@ -213,19 +207,12 @@ crew.kickoff()
### 특정 GitHub 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific GitHub tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["github_create_issue", "github_update_issue", "github_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage GitHub issues efficiently",
backstory="An AI assistant that focuses on issue tracking and management.",
tools=enterprise_tools
apps=['github']
)
# Task to manage issue workflow
@@ -247,17 +234,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
release_manager = Agent(
role="Release Manager",
goal="Manage software releases and versioning",
backstory="An experienced release manager who handles version control and release processes.",
tools=[enterprise_tools]
apps=['github']
)
# Task to create a new release
@@ -284,17 +266,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Track and coordinate project issues and development progress",
backstory="An AI assistant that helps coordinate development work and track project progress.",
tools=[enterprise_tools]
apps=['github']
)
# Complex task involving multiple GitHub operations

View File

@@ -25,7 +25,7 @@ Gmail 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합 섹션에서 **Gmail**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 이메일 및 연락처 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GMAIL_SEND_EMAIL">
<Accordion title="gmail/send_email">
**설명:** Gmail에서 이메일을 보냅니다.
**파라미터:**
@@ -59,7 +59,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
<Accordion title="gmail/get_email_by_id">
**설명:** Gmail에서 ID로 이메일을 조회합니다.
**파라미터:**
@@ -67,7 +67,7 @@ uv add crewai-tools
- `messageId` (string, 필수): 메시지 ID - 조회할 메시지의 ID를 지정합니다.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
<Accordion title="gmail/fetch_emails">
**설명:** 고급 필터를 사용하여 Gmail에서 이메일을 검색합니다.
**파라미터:**
@@ -98,7 +98,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_DELETE_EMAIL">
<Accordion title="gmail/delete_email">
**설명:** Gmail에서 이메일을 삭제합니다.
**파라미터:**
@@ -106,7 +106,7 @@ uv add crewai-tools
- `messageId` (string, 필수): 메시지 ID - 휴지통으로 보낼 메시지의 ID를 지정합니다.
</Accordion>
<Accordion title="GMAIL_CREATE_A_CONTACT">
<Accordion title="gmail/create_a_contact">
**설명:** Gmail에서 연락처를 생성합니다.
**파라미터:**
@@ -126,28 +126,28 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
<Accordion title="gmail/get_contact_by_resource_name">
**설명:** Gmail에서 리소스 이름으로 연락처를 조회합니다.
**파라미터:**
- `resourceName` (string, 필수): 리소스 이름 - 조회할 연락처의 리소스 이름을 지정합니다.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
<Accordion title="gmail/search_for_contact">
**설명:** Gmail에서 연락처를 검색합니다.
**파라미터:**
- `searchTerm` (string, 필수): 검색어 - 이름, 닉네임, 이메일 주소, 전화번호 또는 조직 연락처 속성에서 유사하거나 정확히 일치하는 항목을 검색할 검색어를 지정합니다.
</Accordion>
<Accordion title="GMAIL_DELETE_CONTACT">
<Accordion title="gmail/delete_contact">
**설명:** Gmail에서 연락처를 삭제합니다.
**파라미터:**
- `resourceName` (string, 필수): 리소스 이름 - 삭제할 연락처의 리소스 이름을 지정합니다.
</Accordion>
<Accordion title="GMAIL_CREATE_DRAFT">
<Accordion title="gmail/create_draft">
**설명:** Gmail에서 임시 저장 메일을 만듭니다.
**파라미터:**
@@ -177,19 +177,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Gmail capabilities
gmail_agent = Agent(
role="Email Manager",
goal="Manage email communications and contacts efficiently",
backstory="An AI assistant specialized in email management and communication.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to send a follow-up email
@@ -211,19 +205,12 @@ crew.kickoff()
### 특정 Gmail 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Gmail tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["gmail_send_email", "gmail_search_for_email", "gmail_create_draft"]
)
email_coordinator = Agent(
role="Email Coordinator",
goal="Coordinate email communications and manage drafts",
backstory="An AI assistant that focuses on email coordination and draft management.",
tools=enterprise_tools
apps=['gmail']
)
# Task to prepare and send emails
@@ -245,17 +232,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
contact_manager = Agent(
role="Contact Manager",
goal="Manage and organize email contacts efficiently",
backstory="An experienced contact manager who maintains organized contact databases.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to manage contacts
@@ -281,17 +263,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
email_analyst = Agent(
role="Email Analyst",
goal="Analyze email patterns and provide insights",
backstory="An AI assistant that analyzes email data to provide actionable insights.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to analyze email patterns
@@ -317,17 +294,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Email Workflow Manager",
goal="Automate email workflows and responses",
backstory="An AI assistant that manages automated email workflows and responses.",
tools=[enterprise_tools]
apps=['gmail']
)
# Complex task involving multiple Gmail operations

View File

@@ -25,7 +25,7 @@ Google Calendar 통합을 사용하기 전에 다음을 준비해야 합니다:
2. 인증 통합 섹션에서 **Google Calendar**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 과정을 완료합니다.
4. 캘린더 및 연락처 접근 권한을 허용합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
<Accordion title="google_calendar/create_event">
**설명:** Google 캘린더에 이벤트를 생성합니다.
**파라미터:**
@@ -51,7 +51,7 @@ uv add crewai-tools
- `includeMeetLink` (boolean, 선택): Google Meet 링크 포함 여부? - 이 이벤트에 대해 Google Meet 컨퍼런스 링크를 자동으로 생성합니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
<Accordion title="google_calendar/update_event">
**설명:** Google 캘린더에서 기존 이벤트를 업데이트합니다.
**파라미터:**
@@ -65,7 +65,7 @@ uv add crewai-tools
- `eventDescription` (string, 선택): 이벤트 설명.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
<Accordion title="google_calendar/view_events">
**설명:** Google 캘린더에서 이벤트 목록을 가져옵니다.
**파라미터:**
@@ -74,7 +74,7 @@ uv add crewai-tools
- `before` (string, 선택): 이전 - 제공된 날짜 이전에 종료되는 이벤트를 필터링합니다 (밀리초 단위의 Unix 또는 ISO 타임스탬프). (예시: "2025-04-12T10:00:00Z 또는 1712908800000").
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
<Accordion title="google_calendar/get_event_by_id">
**설명:** Google 캘린더에서 ID로 특정 이벤트를 가져옵니다.
**파라미터:**
@@ -82,7 +82,7 @@ uv add crewai-tools
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
<Accordion title="google_calendar/delete_event">
**설명:** Google 캘린더에서 이벤트를 삭제합니다.
**파라미터:**
@@ -90,7 +90,7 @@ uv add crewai-tools
- `calendar` (string, 선택): 캘린더 - Connect Portal Workflow Settings를 사용하여 사용자가 이벤트를 추가할 캘린더를 선택할 수 있도록 합니다. 비워두면 사용자의 기본 캘린더로 기본 설정됩니다.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
<Accordion title="google_calendar/get_contacts">
**설명:** Google 캘린더에서 연락처를 가져옵니다.
**파라미터:**
@@ -102,14 +102,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
<Accordion title="google_calendar/search_contacts">
**설명:** Google 캘린더에서 연락처를 검색합니다.
**파라미터:**
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
<Accordion title="google_calendar/list_directory_people">
**설명:** 디렉토리 구성원 목록을 가져옵니다.
**파라미터:**
@@ -121,7 +121,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
<Accordion title="google_calendar/search_directory_people">
**설명:** 디렉토리 구성원을 검색합니다.
**파라미터:**
@@ -134,7 +134,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
<Accordion title="google_calendar/list_other_contacts">
**설명:** 기타 연락처 목록을 가져옵니다.
**파라미터:**
@@ -146,14 +146,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
<Accordion title="google_calendar/search_other_contacts">
**설명:** 기타 연락처를 검색합니다.
**파라미터:**
- `query` (string, 선택): 연락처를 검색할 검색 쿼리.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
<Accordion title="google_calendar/get_availability">
**설명:** 캘린더의 가용성 정보를 가져옵니다.
**파라미터:**
@@ -180,19 +180,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Calendar tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Calendar capabilities
calendar_agent = Agent(
role="Schedule Manager",
goal="Manage calendar events and scheduling efficiently",
backstory="An AI assistant specialized in calendar management and scheduling coordination.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Task to create a meeting
@@ -214,19 +208,12 @@ crew.kickoff()
### 특정 캘린더 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Calendar tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
)
meeting_coordinator = Agent(
role="Meeting Coordinator",
goal="Coordinate meetings and check availability",
backstory="An AI assistant that focuses on meeting scheduling and availability management.",
tools=enterprise_tools
apps=['google_calendar']
)
# Task to schedule a meeting with availability check
@@ -248,17 +235,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
event_manager = Agent(
role="Event Manager",
goal="Manage and update calendar events efficiently",
backstory="An experienced event manager who handles event logistics and updates.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Task to manage event updates
@@ -284,17 +266,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
availability_coordinator = Agent(
role="Availability Coordinator",
goal="Coordinate availability and manage contacts for scheduling",
backstory="An AI assistant that specializes in availability management and contact coordination.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Task to coordinate availability
@@ -321,17 +298,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
scheduling_automator = Agent(
role="Scheduling Automator",
goal="Automate scheduling workflows and calendar management",
backstory="An AI assistant that automates complex scheduling scenarios and calendar workflows.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Complex scheduling automation task

View File

@@ -0,0 +1,221 @@
---
title: Google Contacts 통합
description: "CrewAI를 위한 Google Contacts 통합으로 연락처 및 디렉토리 관리."
icon: "address-book"
mode: "wide"
---
## 개요
에이전트가 Google Contacts를 통해 연락처와 디렉토리 정보를 관리할 수 있도록 합니다. 개인 연락처에 액세스하고, 디렉토리 사람들을 검색하고, 연락처 정보를 생성 및 업데이트하고, AI 기반 자동화로 연락처 그룹을 관리합니다.
## 전제 조건
Google Contacts 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Google Contacts 액세스 권한이 있는 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
## Google Contacts 통합 설정
### 1. Google 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Google Contacts** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 연락처 및 디렉토리 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="google_contacts/get_contacts">
**설명:** Google Contacts에서 사용자의 연락처를 검색합니다.
**매개변수:**
- `pageSize` (integer, 선택사항): 반환할 연락처 수 (최대 1000). 최소: 1, 최대: 1000
- `pageToken` (string, 선택사항): 검색할 페이지의 토큰.
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
- `sortOrder` (string, 선택사항): 연결을 정렬할 순서. 옵션: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
</Accordion>
<Accordion title="google_contacts/search_contacts">
**설명:** 쿼리 문자열을 사용하여 연락처를 검색합니다.
**매개변수:**
- `query` (string, 필수): 검색 쿼리 문자열
- `readMask` (string, 필수): 읽을 필드 (예: 'names,emailAddresses,phoneNumbers')
- `pageSize` (integer, 선택사항): 반환할 결과 수. 최소: 1, 최대: 30
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
- `sources` (array, 선택사항): 검색할 소스. 옵션: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. 기본값: READ_SOURCE_TYPE_CONTACT
</Accordion>
<Accordion title="google_contacts/list_directory_people">
**설명:** 인증된 사용자의 디렉토리에 있는 사람들을 나열합니다.
**매개변수:**
- `sources` (array, 필수): 검색할 디렉토리 소스. 옵션: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. 기본값: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
- `pageSize` (integer, 선택사항): 반환할 사람 수. 최소: 1, 최대: 1000
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
- `readMask` (string, 선택사항): 읽을 필드 (예: 'names,emailAddresses')
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
- `mergeSources` (array, 선택사항): 디렉토리 사람 응답에 병합할 추가 데이터. 옵션: CONTACT
</Accordion>
<Accordion title="google_contacts/search_directory_people">
**설명:** 디렉토리에서 사람을 검색합니다.
**매개변수:**
- `query` (string, 필수): 검색 쿼리
- `sources` (string, 필수): 디렉토리 소스 ('DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE' 사용)
- `pageSize` (integer, 선택사항): 반환할 결과 수
- `readMask` (string, 선택사항): 읽을 필드
</Accordion>
<Accordion title="google_contacts/list_other_contacts">
**설명:** 기타 연락처를 나열합니다 (사용자의 개인 연락처에 없는).
**매개변수:**
- `pageSize` (integer, 선택사항): 반환할 연락처 수. 최소: 1, 최대: 1000
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
- `readMask` (string, 선택사항): 읽을 필드
- `requestSyncToken` (boolean, 선택사항): 응답에 동기화 토큰을 포함할지 여부. 기본값: false
</Accordion>
<Accordion title="google_contacts/search_other_contacts">
**설명:** 기타 연락처를 검색합니다.
**매개변수:**
- `query` (string, 필수): 검색 쿼리
- `readMask` (string, 필수): 읽을 필드 (예: 'names,emailAddresses')
- `pageSize` (integer, 선택사항): 결과 수
</Accordion>
<Accordion title="google_contacts/get_person">
**설명:** 리소스 이름으로 한 사람의 연락처 정보를 가져옵니다.
**매개변수:**
- `resourceName` (string, 필수): 가져올 사람의 리소스 이름 (예: 'people/c123456789')
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/create_contact">
**설명:** 사용자의 주소록에 새 연락처를 만듭니다.
**매개변수:**
- `names` (array, 선택사항): 사람의 이름들. 각 항목은 `givenName` (string), `familyName` (string), `displayName` (string)이 있는 객체.
- `emailAddresses` (array, 선택사항): 이메일 주소들. 각 항목은 `value` (string, 이메일 주소)와 `type` (string, 'home', 'work', 'other', 기본값 'other')이 있는 객체.
- `phoneNumbers` (array, 선택사항): 전화번호들. 각 항목은 `value` (string, 전화번호)와 `type` (string, 'home', 'work', 'mobile', 'other', 기본값 'other')이 있는 객체.
- `addresses` (array, 선택사항): 우편 주소들. 각 항목은 `formattedValue` (string, 형식화된 주소)와 `type` (string, 'home', 'work', 'other', 기본값 'other')이 있는 객체.
- `organizations` (array, 선택사항): 조직/회사들. 각 항목은 `name` (string, 조직 이름), `title` (string, 직책), `type` (string, 'work', 'other', 기본값 'work')이 있는 객체.
</Accordion>
<Accordion title="google_contacts/update_contact">
**설명:** 기존 연락처의 정보를 업데이트합니다.
**매개변수:**
- `resourceName` (string, 필수): 업데이트할 사람의 리소스 이름 (예: 'people/c123456789').
- `updatePersonFields` (string, 필수): 업데이트할 필드 (예: 'names,emailAddresses,phoneNumbers').
- `names` (array, 선택사항): 사람의 이름들. 각 항목은 `givenName` (string), `familyName` (string), `displayName` (string)이 있는 객체.
- `emailAddresses` (array, 선택사항): 이메일 주소들. 각 항목은 `value` (string, 이메일 주소)와 `type` (string, 'home', 'work', 'other')이 있는 객체.
- `phoneNumbers` (array, 선택사항): 전화번호들. 각 항목은 `value` (string, 전화번호)와 `type` (string, 'home', 'work', 'mobile', 'other')이 있는 객체.
</Accordion>
<Accordion title="google_contacts/delete_contact">
**설명:** 사용자의 주소록에서 연락처를 삭제합니다.
**매개변수:**
- `resourceName` (string, 필수): 삭제할 사람의 리소스 이름 (예: 'people/c123456789').
</Accordion>
<Accordion title="google_contacts/batch_get_people">
**설명:** 한 번의 요청으로 여러 사람에 대한 정보를 가져옵니다.
**매개변수:**
- `resourceNames` (array, 필수): 가져올 사람들의 리소스 이름 (최대 200개 항목).
- `personFields` (string, 선택사항): 포함할 필드 (예: 'names,emailAddresses,phoneNumbers'). 기본값: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/list_contact_groups">
**설명:** 사용자의 연락처 그룹(라벨)을 나열합니다.
**매개변수:**
- `pageSize` (integer, 선택사항): 반환할 연락처 그룹 수. 최소: 1, 최대: 1000
- `pageToken` (string, 선택사항): 반환할 결과 페이지를 지정하는 토큰.
- `groupFields` (string, 선택사항): 포함할 필드 (예: 'name,memberCount,clientData'). 기본값: name,memberCount
</Accordion>
<Accordion title="google_contacts/get_contact_group">
**설명:** 리소스 이름으로 특정 연락처 그룹을 가져옵니다.
**매개변수:**
- `resourceName` (string, 필수): 연락처 그룹의 리소스 이름 (예: 'contactGroups/myContactGroup').
- `maxMembers` (integer, 선택사항): 포함할 최대 멤버 수. 최소: 0, 최대: 20000
- `groupFields` (string, 선택사항): 포함할 필드 (예: 'name,memberCount,clientData'). 기본값: name,memberCount
</Accordion>
<Accordion title="google_contacts/create_contact_group">
**설명:** 새 연락처 그룹(라벨)을 만듭니다.
**매개변수:**
- `name` (string, 필수): 연락처 그룹의 이름.
- `clientData` (array, 선택사항): 클라이언트별 데이터. 각 항목은 `key` (string)와 `value` (string)가 있는 객체.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Google Contacts 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Google Contacts 기능을 가진 에이전트 생성
contacts_agent = Agent(
role="연락처 관리자",
goal="Google Contacts를 효율적으로 관리",
backstory="연락처 관리 및 조직 전문 AI 어시스턴트.",
apps=['google_contacts'] # 모든 Google Contacts 작업을 사용할 수 있습니다
)
# 새 연락처 생성 작업
create_contact_task = Task(
description="'김철수'라는 이름으로 이메일 'kim.chulsoo@example.com'과 전화번호 '010-1234-5678'로 새 연락처를 만드세요",
agent=contacts_agent,
expected_output="새 연락처가 성공적으로 생성됨"
)
# 작업 실행
crew = Crew(
agents=[contacts_agent],
tasks=[create_contact_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Google 계정이 연락처 및 디렉토리 액세스에 필요한 권한을 가지고 있는지 확인하세요.
- OAuth 연결이 Google People API에 필요한 모든 범위를 포함하는지 확인하세요.
**연락처 생성/업데이트 문제**
- 연락처 생성 시 `email`과 같은 필수 필드가 제공되는지 확인하세요.
- 연락처를 업데이트하거나 삭제할 때 `resourceName`이 올바른지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Contacts 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,158 @@
---
title: Google Docs 통합
description: "CrewAI를 위한 Google Docs 통합으로 문서 생성 및 편집."
icon: "file-lines"
mode: "wide"
---
## 개요
에이전트가 텍스트 조작 및 서식을 사용하여 Google Docs 문서를 생성, 편집 및 관리할 수 있도록 합니다. AI 기반 자동화로 문서 생성을 자동화하고, 텍스트를 삽입 및 교체하고, 콘텐츠 범위를 관리하며, 문서 워크플로를 간소화합니다.
## 전제 조건
Google Docs 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Google Docs 액세스 권한이 있는 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
## Google Docs 통합 설정
### 1. Google 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Google Docs** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 문서 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="google_docs/create_document">
**설명:** 새 Google 문서를 만듭니다.
**매개변수:**
- `title` (string, 선택사항): 새 문서의 제목.
</Accordion>
<Accordion title="google_docs/get_document">
**설명:** Google 문서의 내용과 메타데이터를 가져옵니다.
**매개변수:**
- `documentId` (string, 필수): 검색할 문서의 ID.
- `includeTabsContent` (boolean, 선택사항): 탭 내용을 포함할지 여부. 기본값: false
- `suggestionsViewMode` (string, 선택사항): 문서에 적용할 제안 보기 모드. 옵션: DEFAULT_FOR_CURRENT_ACCESS, PREVIEW_SUGGESTIONS_ACCEPTED, PREVIEW_WITHOUT_SUGGESTIONS. 기본값: DEFAULT_FOR_CURRENT_ACCESS
</Accordion>
<Accordion title="google_docs/batch_update">
**설명:** Google 문서에 하나 이상의 업데이트를 적용합니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `requests` (array, 필수): 문서에 적용할 업데이트 목록. 각 항목은 요청을 나타내는 객체.
- `writeControl` (object, 선택사항): 쓰기 요청이 실행되는 방식을 제어합니다. `requiredRevisionId` (string)와 `targetRevisionId` (string)를 포함.
</Accordion>
<Accordion title="google_docs/insert_text">
**설명:** Google 문서의 특정 위치에 텍스트를 삽입합니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `text` (string, 필수): 삽입할 텍스트.
- `index` (integer, 선택사항): 텍스트를 삽입할 0 기반 인덱스. 기본값: 1
</Accordion>
<Accordion title="google_docs/replace_text">
**설명:** Google 문서에서 텍스트의 모든 인스턴스를 교체합니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `containsText` (string, 필수): 찾아서 교체할 텍스트.
- `replaceText` (string, 필수): 교체할 텍스트.
- `matchCase` (boolean, 선택사항): 검색이 대소문자를 구분할지 여부. 기본값: false
</Accordion>
<Accordion title="google_docs/delete_content_range">
**설명:** Google 문서의 특정 범위에서 내용을 삭제합니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `startIndex` (integer, 필수): 삭제할 범위의 시작 인덱스.
- `endIndex` (integer, 필수): 삭제할 범위의 끝 인덱스.
</Accordion>
<Accordion title="google_docs/insert_page_break">
**설명:** Google 문서의 특정 위치에 페이지 나누기를 삽입합니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `index` (integer, 선택사항): 페이지 나누기를 삽입할 0 기반 인덱스. 기본값: 1
</Accordion>
<Accordion title="google_docs/create_named_range">
**설명:** Google 문서에 명명된 범위를 만듭니다.
**매개변수:**
- `documentId` (string, 필수): 업데이트할 문서의 ID.
- `name` (string, 필수): 명명된 범위의 이름.
- `startIndex` (integer, 필수): 범위의 시작 인덱스.
- `endIndex` (integer, 필수): 범위의 끝 인덱스.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Google Docs 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Google Docs 기능을 가진 에이전트 생성
docs_agent = Agent(
role="문서 작성자",
goal="Google Docs 문서를 효율적으로 생성하고 관리",
backstory="Google Docs 문서 생성 및 편집 전문 AI 어시스턴트.",
apps=['google_docs'] # 모든 Google Docs 작업을 사용할 수 있습니다
)
# 새 문서 생성 작업
create_doc_task = Task(
description="'프로젝트 상태 보고서'라는 제목으로 새 Google 문서를 만드세요",
agent=docs_agent,
expected_output="새 Google 문서 '프로젝트 상태 보고서'가 성공적으로 생성됨"
)
# 작업 실행
crew = Crew(
agents=[docs_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Google 계정이 Google Docs 액세스에 필요한 권한을 가지고 있는지 확인하세요.
- OAuth 연결이 필요한 모든 범위(`https://www.googleapis.com/auth/documents`)를 포함하는지 확인하세요.
**문서 ID 문제**
- 문서 ID가 올바른지 다시 확인하세요.
- 문서가 존재하고 계정에서 액세스할 수 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Docs 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,30 @@
---
title: Google Drive 통합
description: "CrewAI를 위한 Google Drive 통합으로 파일 및 폴더 관리."
icon: "google"
mode: "wide"
---
## 개요
에이전트가 Google Drive의 파일과 폴더에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 파일을 업로드, 다운로드, 콘텐츠 구성, 공유 링크 생성 및 클라우드 스토리지 워크플로를 간소화합니다.
## 전제 조건
Google Drive 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Google Drive 액세스 권한이 있는 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
## 사용 가능한 작업
자세한 매개변수 및 사용법은 [영어 문서](../../../en/enterprise/integrations/google_drive)를 참조하세요.
## 문제 해결
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Drive 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -26,7 +26,7 @@ Google Sheets 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합 섹션에서 **Google Sheets**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 흐름을 완료합니다.
4. 스프레드시트 접근에 필요한 권한을 허용합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -37,7 +37,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="GOOGLE_SHEETS_GET_ROW">
<Accordion title="google_sheets/get_values">
**설명:** Google Sheets 스프레드시트에서 행을 가져옵니다.
**매개변수:**
@@ -45,7 +45,7 @@ uv add crewai-tools
- `limit` (string, 선택): 행 제한 - 반환할 최대 행 수를 제한합니다.
</Accordion>
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
<Accordion title="google_sheets/append_values">
**설명:** Google Sheets 스프레드시트에 새로운 행을 만듭니다.
**매개변수:**
@@ -62,7 +62,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
<Accordion title="google_sheets/update_values">
**설명:** Google Sheets 스프레드시트의 기존 행을 업데이트합니다.
**매개변수:**
@@ -105,19 +105,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Google Sheets tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Google Sheets capabilities
sheets_agent = Agent(
role="Data Manager",
goal="Manage spreadsheet data and track information efficiently",
backstory="An AI assistant specialized in data management and spreadsheet operations.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to add new data to a spreadsheet
@@ -139,19 +133,12 @@ crew.kickoff()
### 특정 Google Sheets 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Google Sheets tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
)
data_collector = Agent(
role="Data Collector",
goal="Collect and organize data in spreadsheets",
backstory="An AI assistant that focuses on data collection and organization.",
tools=enterprise_tools
apps=['google_sheets']
)
# Task to collect and organize data
@@ -173,17 +160,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Data Analyst",
goal="Analyze spreadsheet data and generate insights",
backstory="An experienced data analyst who extracts insights from spreadsheet data.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to analyze data and create reports
@@ -209,17 +191,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_updater = Agent(
role="Data Updater",
goal="Automatically update and maintain spreadsheet data",
backstory="An AI assistant that maintains data accuracy and updates records automatically.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Task to update data based on conditions
@@ -246,17 +223,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Data Workflow Manager",
goal="Manage complex data workflows across multiple spreadsheets",
backstory="An AI assistant that orchestrates complex data operations across multiple spreadsheets.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Complex workflow task

View File

@@ -0,0 +1,167 @@
---
title: Google Slides 통합
description: "CrewAI를 위한 Google Slides 통합으로 프레젠테이션 생성 및 관리."
icon: "chart-bar"
mode: "wide"
---
## 개요
에이전트가 Google Slides 프레젠테이션을 생성, 편집 및 관리할 수 있도록 합니다. AI 기반 자동화로 프레젠테이션 생성을 자동화하고, 콘텐츠를 업데이트하고, Google Sheets에서 데이터를 가져오며, 프레젠테이션 워크플로를 간소화합니다.
## 전제 조건
Google Slides 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Google Slides 액세스 권한이 있는 Google 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Google 계정 연결
## Google Slides 통합 설정
### 1. Google 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Google Slides** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 프레젠테이션, 스프레드시트 및 드라이브 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="google_slides/create_blank_presentation">
**설명:** 내용이 없는 빈 프레젠테이션을 만듭니다.
**매개변수:**
- `title` (string, 필수): 프레젠테이션의 제목.
</Accordion>
<Accordion title="google_slides/get_presentation">
**설명:** ID로 프레젠테이션을 검색합니다.
**매개변수:**
- `presentationId` (string, 필수): 검색할 프레젠테이션의 ID.
- `fields` (string, 선택사항): 응답에 포함할 필드. 성능 향상을 위해 필요한 데이터만 반환하는 데 사용.
</Accordion>
<Accordion title="google_slides/batch_update_presentation">
**설명:** 프레젠테이션에 업데이트를 적용하거나 콘텐츠를 추가하거나 제거합니다.
**매개변수:**
- `presentationId` (string, 필수): 업데이트할 프레젠테이션의 ID.
- `requests` (array, 필수): 프레젠테이션에 적용할 업데이트 목록. 각 항목은 요청을 나타내는 객체.
- `writeControl` (object, 선택사항): 쓰기 요청이 실행되는 방식을 제어합니다. `requiredRevisionId` (string)를 포함.
</Accordion>
<Accordion title="google_slides/get_page">
**설명:** ID로 특정 페이지를 검색합니다.
**매개변수:**
- `presentationId` (string, 필수): 프레젠테이션의 ID.
- `pageObjectId` (string, 필수): 검색할 페이지의 ID.
</Accordion>
<Accordion title="google_slides/get_thumbnail">
**설명:** 페이지 썸네일을 생성합니다.
**매개변수:**
- `presentationId` (string, 필수): 프레젠테이션의 ID.
- `pageObjectId` (string, 필수): 썸네일 생성을 위한 페이지의 ID.
</Accordion>
<Accordion title="google_slides/import_data_from_sheet">
**설명:** Google 시트에서 프레젠테이션으로 데이터를 가져옵니다.
**매개변수:**
- `presentationId` (string, 필수): 프레젠테이션의 ID.
- `sheetId` (string, 필수): 가져올 Google 시트의 ID.
- `dataRange` (string, 필수): 시트에서 가져올 데이터 범위.
</Accordion>
<Accordion title="google_slides/upload_file_to_drive">
**설명:** 프레젠테이션과 연결된 Google 드라이브에 파일을 업로드합니다.
**매개변수:**
- `file` (string, 필수): 업로드할 파일 데이터.
- `presentationId` (string, 필수): 업로드된 파일을 연결할 프레젠테이션의 ID.
</Accordion>
<Accordion title="google_slides/link_file_to_presentation">
**설명:** Google 드라이브의 파일을 프레젠테이션에 연결합니다.
**매개변수:**
- `presentationId` (string, 필수): 프레젠테이션의 ID.
- `fileId` (string, 필수): 연결할 파일의 ID.
</Accordion>
<Accordion title="google_slides/get_all_presentations">
**설명:** 사용자가 액세스할 수 있는 모든 프레젠테이션을 나열합니다.
**매개변수:**
- `pageSize` (integer, 선택사항): 페이지당 반환할 프레젠테이션 수.
- `pageToken` (string, 선택사항): 페이지네이션을 위한 토큰.
</Accordion>
<Accordion title="google_slides/delete_presentation">
**설명:** ID로 프레젠테이션을 삭제합니다.
**매개변수:**
- `presentationId` (string, 필수): 삭제할 프레젠테이션의 ID.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Google Slides 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Google Slides 기능을 가진 에이전트 생성
slides_agent = Agent(
role="프레젠테이션 작성자",
goal="Google Slides 프레젠테이션을 효율적으로 생성하고 관리",
backstory="프레젠테이션 디자인 및 콘텐츠 관리 전문 AI 어시스턴트.",
apps=['google_slides'] # 모든 Google Slides 작업을 사용할 수 있습니다
)
# 새 프레젠테이션 생성 작업
create_presentation_task = Task(
description="'분기별 매출 보고서'라는 제목으로 새 빈 프레젠테이션을 만드세요",
agent=slides_agent,
expected_output="새 프레젠테이션 '분기별 매출 보고서'가 성공적으로 생성됨"
)
# 작업 실행
crew = Crew(
agents=[slides_agent],
tasks=[create_presentation_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Google 계정이 Google Slides 및 Google Drive 액세스에 필요한 권한을 가지고 있는지 확인하세요.
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
**프레젠테이션/페이지 ID 문제**
- 프레젠테이션 ID와 페이지 객체 ID가 올바른지 다시 확인하세요.
- 프레젠테이션이나 페이지가 존재하고 액세스할 수 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Google Slides 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -25,7 +25,7 @@ HubSpot 통합을 사용하기 전에 다음을 확인하세요.
2. 인증 통합 섹션에서 **HubSpot**을 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 회사 및 연락처 관리를 위한 필요한 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
<Accordion title="hubspot/create_company">
**설명:** HubSpot에서 새로운 회사 레코드를 생성합니다.
**파라미터:**
@@ -101,7 +101,7 @@ uv add crewai-tools
- `founded_year` (string, 선택): 설립 연도.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
<Accordion title="hubspot/create_contact">
**설명:** HubSpot에서 새로운 연락처 레코드를 생성합니다.
**파라미터:**
@@ -200,7 +200,7 @@ uv add crewai-tools
- `hs_googleplusid` (string, 선택): googleplus ID.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
<Accordion title="hubspot/create_deal">
**설명:** HubSpot에서 새로운 거래(deal) 레코드를 생성합니다.
**파라미터:**
@@ -215,7 +215,7 @@ uv add crewai-tools
- `hs_priority` (string, 선택): 거래 우선순위. 사용 가능한 값: `low`, `medium`, `high`.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/create_record_engagements">
**설명:** HubSpot에서 새로운 참여(예: 노트, 이메일, 통화, 미팅, 작업)를 생성합니다.
**파라미터:**
@@ -232,7 +232,7 @@ uv add crewai-tools
- `hs_meeting_end_time` (string, 선택): 미팅 종료 시간. (`MEETING`에서 사용)
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
<Accordion title="hubspot/update_company">
**설명:** HubSpot에서 기존 회사 레코드를 업데이트합니다.
**파라미터:**
@@ -249,7 +249,7 @@ uv add crewai-tools
- `description` (string, 선택): 설명.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
<Accordion title="hubspot/create_record_any">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 생성합니다.
**파라미터:**
@@ -257,7 +257,7 @@ uv add crewai-tools
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
<Accordion title="hubspot/update_contact">
**설명:** HubSpot에서 기존 연락처 레코드를 업데이트합니다.
**파라미터:**
@@ -271,7 +271,7 @@ uv add crewai-tools
- `lifecyclestage` (string, 선택): 라이프사이클 단계.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
<Accordion title="hubspot/update_deal">
**설명:** HubSpot에서 기존 거래 레코드를 업데이트합니다.
**파라미터:**
@@ -284,7 +284,7 @@ uv add crewai-tools
- `dealtype` (string, 선택): 거래 유형.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/update_record_engagements">
**설명:** HubSpot에서 기존 참여(engagement)를 업데이트합니다.
**파라미터:**
@@ -295,7 +295,7 @@ uv add crewai-tools
- `hs_task_status` (string, 선택): 작업 상태.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
<Accordion title="hubspot/update_record_any">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 업데이트합니다.
**파라미터:**
@@ -304,28 +304,28 @@ uv add crewai-tools
- 추가 파라미터는 커스텀 오브젝트의 스키마에 따라 다릅니다.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
<Accordion title="hubspot/list_companies">
**설명:** HubSpot에서 회사 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
<Accordion title="hubspot/list_contacts">
**설명:** HubSpot에서 연락처 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
<Accordion title="hubspot/list_deals">
**설명:** HubSpot에서 거래 레코드 목록을 가져옵니다.
**파라미터:**
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/get_records_engagements">
**설명:** HubSpot에서 참여(engagement) 레코드 목록을 가져옵니다.
**파라미터:**
@@ -333,7 +333,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
<Accordion title="hubspot/get_records_any">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드 목록을 가져옵니다.
**파라미터:**
@@ -341,35 +341,35 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
<Accordion title="hubspot/get_company">
**설명:** ID로 단일 회사 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 회사의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
<Accordion title="hubspot/get_contact">
**설명:** ID로 단일 연락처 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 연락처의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
<Accordion title="hubspot/get_deal">
**설명:** ID로 단일 거래 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 거래의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
<Accordion title="hubspot/get_record_by_id_engagements">
**설명:** ID로 단일 참여(engagement) 레코드를 가져옵니다.
**파라미터:**
- `recordId` (string, 필수): 가져올 참여의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
<Accordion title="hubspot/get_record_by_id_any">
**설명:** 지정된 오브젝트 타입의 단일 레코드를 ID로 가져옵니다.
**파라미터:**
@@ -377,7 +377,7 @@ uv add crewai-tools
- `recordId` (string, 필수): 가져올 레코드의 ID.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
<Accordion title="hubspot/search_companies">
**설명:** 필터 수식을 사용해 HubSpot에서 회사 레코드를 검색합니다.
**파라미터:**
@@ -385,7 +385,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
<Accordion title="hubspot/search_contacts">
**설명:** 필터 수식을 사용해 HubSpot에서 연락처 레코드를 검색합니다.
**파라미터:**
@@ -393,7 +393,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
<Accordion title="hubspot/search_deals">
**설명:** 필터 수식을 사용해 HubSpot에서 거래 레코드를 검색합니다.
**파라미터:**
@@ -401,7 +401,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/search_records_engagements">
**설명:** 필터 수식을 사용해 HubSpot에서 참여(engagement) 레코드를 검색합니다.
**파라미터:**
@@ -409,7 +409,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
<Accordion title="hubspot/search_records_any">
**설명:** HubSpot에서 지정된 오브젝트 타입의 레코드를 검색합니다.
**파라미터:**
@@ -418,35 +418,35 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 다음 페이지를 가져오려면 `pageCursor`를 사용하세요.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
<Accordion title="hubspot/delete_record_companies">
**설명:** ID로 회사 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 회사의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
<Accordion title="hubspot/delete_record_contacts">
**설명:** ID로 연락처 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 연락처의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
<Accordion title="hubspot/delete_record_deals">
**설명:** ID로 거래 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 거래의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/delete_record_engagements">
**설명:** ID로 참여(engagement) 레코드를 삭제합니다.
**파라미터:**
- `recordId` (string, 필수): 삭제할 참여의 ID.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
<Accordion title="hubspot/delete_record_any">
**설명:** 지정된 오브젝트 타입의 레코드를 ID로 삭제합니다.
**파라미터:**
@@ -454,7 +454,7 @@ uv add crewai-tools
- `recordId` (string, 필수): 삭제할 레코드의 ID.
</Accordion>
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
<Accordion title="hubspot/get_contacts_by_list_id">
**설명:** 지정된 리스트 ID로부터 연락처 목록을 가져옵니다.
**파라미터:**
@@ -462,7 +462,7 @@ uv add crewai-tools
- `paginationParameters` (object, 선택): 이후 페이지를 위해 `pageCursor` 사용.
</Accordion>
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
<Accordion title="hubspot/describe_action_schema">
**설명:** 특정 오브젝트 타입 및 작업에 대한 예상 스키마를 가져옵니다.
**파라미터:**
@@ -477,19 +477,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (HubSpot tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with HubSpot capabilities
hubspot_agent = Agent(
role="CRM Manager",
goal="Manage company and contact records in HubSpot",
backstory="An AI assistant specialized in CRM management.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task to create a new company
@@ -511,19 +505,16 @@ crew.kickoff()
### 특정 HubSpot 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only the tool to create contacts
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["hubspot_create_record_contacts"]
actions_list=["hubspot/create_contact"]
)
contact_creator = Agent(
role="Contact Creator",
goal="Create new contacts in HubSpot",
backstory="An AI assistant that focuses on creating new contact entries in the CRM.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task to create a contact
@@ -545,17 +536,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
crm_manager = Agent(
role="CRM Manager",
goal="Manage and organize HubSpot contacts efficiently.",
backstory="An experienced CRM manager who maintains an organized contact database.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task to manage contacts

View File

@@ -25,7 +25,7 @@ Jira 통합을 사용하기 전에 다음을 준비하세요:
2. **Jira**를 인증 통합 섹션에서 찾습니다.
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
4. 이슈 및 프로젝트 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="JIRA_CREATE_ISSUE">
<Accordion title="jira/create_issue">
**설명:** Jira에서 이슈를 생성합니다.
**파라미터:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE">
<Accordion title="jira/update_issue">
**설명:** Jira에서 이슈를 업데이트합니다.
**파라미터:**
@@ -71,14 +71,14 @@ uv add crewai-tools
- `additionalFields` (string, 선택): 추가 필드 - 포함해야 하는 다른 필드를 JSON 형식으로 지정하세요.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
<Accordion title="jira/get_issue_by_key">
**설명:** Jira에서 키로 이슈를 조회합니다.
**파라미터:**
- `issueKey` (string, 필수): 이슈 키 (예시: "TEST-1234").
</Accordion>
<Accordion title="JIRA_FILTER_ISSUES">
<Accordion title="jira/filter_issues">
**설명:** 필터를 사용하여 Jira에서 이슈를 검색합니다.
**파라미터:**
@@ -104,7 +104,7 @@ uv add crewai-tools
- `limit` (string, 선택): 결과 제한 - 반환되는 최대 이슈 수를 제한합니다. 입력하지 않으면 기본값은 10입니다.
</Accordion>
<Accordion title="JIRA_SEARCH_BY_JQL">
<Accordion title="jira/search_by_jql">
**설명:** Jira에서 JQL로 이슈를 검색합니다.
**파라미터:**
@@ -117,13 +117,13 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
<Accordion title="jira/update_issue_any">
**설명:** Jira에서 임의의 이슈를 업데이트합니다. 이 기능의 속성 스키마를 얻으려면 DESCRIBE_ACTION_SCHEMA를 사용하세요.
**파라미터:** 특정 파라미터 없음 - 예상 스키마를 먼저 확인하려면 JIRA_DESCRIBE_ACTION_SCHEMA를 사용하세요.
</Accordion>
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
<Accordion title="jira/describe_action_schema">
**설명:** 이슈 유형에 대한 예상 스키마를 가져옵니다. 사용하려는 이슈 유형과 일치하는 다른 기능이 없을 경우 먼저 이 기능을 사용하세요.
**파라미터:**
@@ -132,7 +132,7 @@ uv add crewai-tools
- `operation` (string, 필수): 작업 유형 값(예: CREATE_ISSUE 또는 UPDATE_ISSUE).
</Accordion>
<Accordion title="JIRA_GET_PROJECTS">
<Accordion title="jira/get_projects">
**설명:** Jira에서 프로젝트를 가져옵니다.
**파라미터:**
@@ -144,27 +144,27 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
<Accordion title="jira/get_issue_types_by_project">
**설명:** Jira에서 프로젝트별 이슈 유형을 조회합니다.
**파라미터:**
- `project` (string, 필수): 프로젝트 키.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES">
<Accordion title="jira/get_issue_types">
**설명:** Jira에서 모든 이슈 유형을 조회합니다.
**파라미터:** 필요 없음.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
<Accordion title="jira/get_issue_status_by_project">
**설명:** 주어진 프로젝트의 이슈 상태를 조회합니다.
**파라미터:**
- `project` (string, 필수): 프로젝트 키.
</Accordion>
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
<Accordion title="jira/get_all_assignees_by_project">
**설명:** 주어진 프로젝트의 담당자 목록을 조회합니다.
**파라미터:**
@@ -178,19 +178,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Jira tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Jira capabilities
jira_agent = Agent(
role="Issue Manager",
goal="Manage Jira issues and track project progress efficiently",
backstory="An AI assistant specialized in issue tracking and project management.",
tools=[enterprise_tools]
apps=['jira']
)
# Task to create a bug report
@@ -212,19 +206,12 @@ crew.kickoff()
### 특정 Jira 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Jira tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
)
issue_coordinator = Agent(
role="Issue Coordinator",
goal="Create and manage Jira issues efficiently",
backstory="An AI assistant that focuses on issue creation and management.",
tools=enterprise_tools
apps=['jira']
)
# Task to manage issue workflow
@@ -246,17 +233,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_analyst = Agent(
role="Project Analyst",
goal="Analyze project data and generate insights from Jira",
backstory="An experienced project analyst who extracts insights from project management data.",
tools=[enterprise_tools]
apps=['jira']
)
# Task to analyze project status
@@ -283,17 +265,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
automation_manager = Agent(
role="Automation Manager",
goal="Automate issue management and workflow processes",
backstory="An AI assistant that automates repetitive issue management tasks.",
tools=[enterprise_tools]
apps=['jira']
)
# Task to automate issue management
@@ -321,17 +298,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
schema_specialist = Agent(
role="Schema Specialist",
goal="Handle complex Jira operations using dynamic schemas",
backstory="An AI assistant that can work with dynamic Jira schemas and custom issue types.",
tools=[enterprise_tools]
apps=['jira']
)
# Task using schema-based operations

View File

@@ -25,7 +25,7 @@ Linear 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합( Authentication Integrations ) 섹션에서 **Linear**를 찾습니다.
3. **Connect**를 클릭하고 OAuth 절차를 완료합니다.
4. 이슈 및 프로젝트 관리를 위한 필수 권한을 부여합니다.
5. [계정 설정](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="LINEAR_CREATE_ISSUE">
<Accordion title="linear/create_issue">
**설명:** Linear에서 새로운 이슈를 생성합니다.
**파라미터:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_ISSUE">
<Accordion title="linear/update_issue">
**설명:** Linear에서 이슈를 업데이트합니다.
**파라미터:**
@@ -76,21 +76,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
<Accordion title="linear/get_issue_by_id">
**설명:** Linear에서 ID로 이슈를 가져옵니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 가져올 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
<Accordion title="linear/get_issue_by_issue_identifier">
**설명:** Linear에서 이슈 식별자로 이슈를 가져옵니다.
**파라미터:**
- `externalId` (string, 필수): 외부 ID - 가져올 이슈의 사람이 읽을 수 있는 이슈 식별자를 지정합니다. (예: "ABC-1").
</Accordion>
<Accordion title="LINEAR_SEARCH_ISSUE">
<Accordion title="linear/search_issue">
**설명:** Linear에서 이슈를 검색합니다.
**파라미터:**
@@ -117,21 +117,21 @@ uv add crewai-tools
사용 가능한 연산자: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
</Accordion>
<Accordion title="LINEAR_DELETE_ISSUE">
<Accordion title="linear/delete_issue">
**설명:** Linear에서 이슈를 삭제합니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 삭제할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_ARCHIVE_ISSUE">
<Accordion title="linear/archive_issue">
**설명:** Linear에서 이슈를 아카이브합니다.
**파라미터:**
- `issueId` (string, 필수): 이슈 ID - 아카이브할 이슈의 레코드 ID를 지정합니다. (예: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
<Accordion title="linear/create_sub_issue">
**설명:** Linear에서 하위 이슈를 생성합니다.
**파라미터:**
@@ -147,7 +147,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_CREATE_PROJECT">
<Accordion title="linear/create_project">
**설명:** Linear에서 새로운 프로젝트를 생성합니다.
**파라미터:**
@@ -169,7 +169,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_PROJECT">
<Accordion title="linear/update_project">
**설명:** Linear에서 프로젝트를 업데이트합니다.
**파라미터:**
@@ -185,21 +185,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
<Accordion title="linear/get_project_by_id">
**설명:** Linear에서 ID로 프로젝트를 가져옵니다.
**파라미터:**
- `projectId` (string, 필수): 프로젝트 ID - 가져올 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_DELETE_PROJECT">
<Accordion title="linear/delete_project">
**설명:** Linear에서 프로젝트를 삭제합니다.
**파라미터:**
- `projectId` (string, 필수): 프로젝트 ID - 삭제할 프로젝트의 프로젝트 ID를 지정합니다. (예: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_SEARCH_TEAMS">
<Accordion title="linear/search_teams">
**설명:** Linear에서 팀을 검색합니다.
**파라미터:**
@@ -231,19 +231,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Linear tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Linear capabilities
linear_agent = Agent(
role="Development Manager",
goal="Manage Linear issues and track development progress efficiently",
backstory="An AI assistant specialized in software development project management.",
tools=[enterprise_tools]
apps=['linear']
)
# Task to create a bug report
@@ -265,19 +259,12 @@ crew.kickoff()
### 특정 Linear 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Linear tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage Linear issues efficiently",
backstory="An AI assistant that focuses on issue creation and lifecycle management.",
tools=enterprise_tools
apps=['linear']
)
# Task to manage issue workflow
@@ -299,17 +286,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate projects and teams in Linear efficiently",
backstory="An experienced project coordinator who manages development cycles and team workflows.",
tools=[enterprise_tools]
apps=['linear']
)
# Task to coordinate project setup
@@ -336,17 +318,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_organizer = Agent(
role="Task Organizer",
goal="Organize complex issues into manageable sub-tasks",
backstory="An AI assistant that breaks down complex development work into organized sub-tasks.",
tools=[enterprise_tools]
apps=['linear']
)
# Task to create issue hierarchy
@@ -373,17 +350,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_automator = Agent(
role="Workflow Automator",
goal="Automate development workflow processes in Linear",
backstory="An AI assistant that automates repetitive development workflow tasks.",
tools=[enterprise_tools]
apps=['linear']
)
# Complex workflow automation task

View File

@@ -0,0 +1,234 @@
---
title: Microsoft Excel 통합
description: "CrewAI를 위한 Microsoft Excel 통합으로 통합 문서 및 데이터 관리."
icon: "table"
mode: "wide"
---
## 개요
에이전트가 OneDrive 또는 SharePoint에서 Excel 통합 문서, 워크시트, 테이블 및 차트를 생성하고 관리할 수 있도록 합니다. AI 기반 자동화로 데이터 범위를 조작하고, 시각화를 생성하고, 테이블을 관리하며, 스프레드시트 워크플로를 간소화합니다.
## 전제 조건
Microsoft Excel 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Excel 및 OneDrive/SharePoint 액세스 권한이 있는 Microsoft 365 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft Excel 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft Excel** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 파일 및 Excel 통합 문서 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_excel/create_workbook">
**설명:** OneDrive 또는 SharePoint에 새 Excel 통합 문서를 만듭니다.
**매개변수:**
- `file_path` (string, 필수): 통합 문서를 만들 경로 (예: 'MyWorkbook.xlsx')
- `worksheets` (array, 선택사항): 만들 초기 워크시트들. 각 항목은 `name` (string, 워크시트 이름)이 있는 객체.
</Accordion>
<Accordion title="microsoft_excel/get_workbooks">
**설명:** OneDrive 또는 SharePoint에서 모든 Excel 통합 문서를 가져옵니다.
**매개변수:**
- `select` (string, 선택사항): 반환할 특정 속성 선택.
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
</Accordion>
<Accordion title="microsoft_excel/get_worksheets">
**설명:** Excel 통합 문서의 모든 워크시트를 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'id,name,position').
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
</Accordion>
<Accordion title="microsoft_excel/create_worksheet">
**설명:** Excel 통합 문서에 새 워크시트를 만듭니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `name` (string, 필수): 새 워크시트의 이름.
</Accordion>
<Accordion title="microsoft_excel/get_range_data">
**설명:** Excel 워크시트의 특정 범위에서 데이터를 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `range` (string, 필수): 범위 주소 (예: 'A1:C10').
</Accordion>
<Accordion title="microsoft_excel/update_range_data">
**설명:** Excel 워크시트의 특정 범위에서 데이터를 업데이트합니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `range` (string, 필수): 범위 주소 (예: 'A1:C10').
- `values` (array, 필수): 범위에 설정할 값들의 2D 배열. 각 내부 배열은 행을 나타내며, 요소는 string, number 또는 integer일 수 있음.
</Accordion>
<Accordion title="microsoft_excel/add_table">
**설명:** Excel 워크시트에 테이블을 만듭니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `range` (string, 필수): 테이블의 범위 (예: 'A1:D10').
- `has_headers` (boolean, 선택사항): 첫 번째 행이 헤더를 포함하는지 여부. 기본값: true.
</Accordion>
<Accordion title="microsoft_excel/get_tables">
**설명:** Excel 워크시트의 모든 테이블을 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
</Accordion>
<Accordion title="microsoft_excel/add_table_row">
**설명:** Excel 테이블에 새 행을 추가합니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `table_name` (string, 필수): 테이블의 이름.
- `values` (array, 필수): 새 행의 값들 배열. 요소는 string, number 또는 integer일 수 있음.
</Accordion>
<Accordion title="microsoft_excel/create_chart">
**설명:** Excel 워크시트에 차트를 만듭니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `chart_type` (string, 필수): 차트 유형 (예: 'ColumnClustered', 'Line', 'Pie').
- `source_data` (string, 필수): 차트의 데이터 범위 (예: 'A1:B10').
- `series_by` (string, 선택사항): 데이터 해석 방법 ('Auto', 'Columns' 또는 'Rows'). 기본값: 'Auto'.
</Accordion>
<Accordion title="microsoft_excel/get_cell">
**설명:** Excel 워크시트의 단일 셀 값을 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `row` (integer, 필수): 행 번호 (0 기반).
- `column` (integer, 필수): 열 번호 (0 기반).
</Accordion>
<Accordion title="microsoft_excel/get_used_range">
**설명:** Excel 워크시트의 사용된 범위를 가져옵니다 (모든 데이터를 포함).
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
</Accordion>
<Accordion title="microsoft_excel/list_charts">
**설명:** Excel 워크시트의 모든 차트를 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
</Accordion>
<Accordion title="microsoft_excel/delete_worksheet">
**설명:** Excel 통합 문서에서 워크시트를 삭제합니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 삭제할 워크시트의 이름.
</Accordion>
<Accordion title="microsoft_excel/delete_table">
**설명:** Excel 워크시트에서 테이블을 삭제합니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
- `worksheet_name` (string, 필수): 워크시트의 이름.
- `table_name` (string, 필수): 삭제할 테이블의 이름.
</Accordion>
<Accordion title="microsoft_excel/list_names">
**설명:** Excel 통합 문서의 모든 명명된 범위를 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): Excel 파일의 ID.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft Excel 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft Excel 기능을 가진 에이전트 생성
excel_agent = Agent(
role="Excel 데이터 관리자",
goal="Excel 통합 문서와 데이터를 효율적으로 관리",
backstory="Microsoft Excel 작업 및 데이터 조작 전문 AI 어시스턴트.",
apps=['microsoft_excel'] # 모든 Excel 작업을 사용할 수 있습니다
)
# 새 통합 문서 생성 작업
create_workbook_task = Task(
description="'월간보고서.xlsx'라는 이름으로 새 Excel 통합 문서를 만들고 '매출데이터'라는 초기 워크시트를 포함하세요.",
agent=excel_agent,
expected_output="새 통합 문서 '월간보고서.xlsx'가 '매출데이터' 워크시트와 함께 생성됨."
)
# 작업 실행
crew = Crew(
agents=[excel_agent],
tasks=[create_workbook_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read.All`, `Files.ReadWrite.All`).
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
**파일 생성 문제**
- 통합 문서를 만들 때 `file_path`가 `.xlsx` 확장자로 끝나는지 확인하세요.
- 대상 위치(OneDrive/SharePoint)에 쓰기 권한이 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft Excel 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,174 @@
---
title: Microsoft OneDrive 통합
description: "CrewAI를 위한 Microsoft OneDrive 통합으로 파일 및 폴더 관리."
icon: "cloud"
mode: "wide"
---
## 개요
에이전트가 Microsoft OneDrive에서 파일과 폴더를 업로드, 다운로드 및 관리할 수 있도록 합니다. AI 기반 자동화로 파일 작업을 자동화하고, 콘텐츠를 구성하고, 공유 링크를 생성하며, 클라우드 스토리지 워크플로를 간소화합니다.
## 전제 조건
Microsoft OneDrive 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- OneDrive 액세스 권한이 있는 Microsoft 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft OneDrive 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft OneDrive** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 파일 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_onedrive/list_files">
**설명:** OneDrive의 파일과 폴더를 나열합니다.
**매개변수:**
- `top` (integer, 선택사항): 검색할 항목 수 (최대 1000). 기본값: 50.
- `orderby` (string, 선택사항): 필드별 정렬 (예: "name asc", "lastModifiedDateTime desc"). 기본값: "name asc".
- `filter` (string, 선택사항): OData 필터 표현식.
</Accordion>
<Accordion title="microsoft_onedrive/get_file_info">
**설명:** 특정 파일 또는 폴더에 대한 정보를 가져옵니다.
**매개변수:**
- `item_id` (string, 필수): 파일 또는 폴더의 ID.
</Accordion>
<Accordion title="microsoft_onedrive/download_file">
**설명:** OneDrive에서 파일을 다운로드합니다.
**매개변수:**
- `item_id` (string, 필수): 다운로드할 파일의 ID.
</Accordion>
<Accordion title="microsoft_onedrive/upload_file">
**설명:** OneDrive에 파일을 업로드합니다.
**매개변수:**
- `file_name` (string, 필수): 업로드할 파일의 이름.
- `content` (string, 필수): Base64로 인코딩된 파일 내용.
</Accordion>
<Accordion title="microsoft_onedrive/create_folder">
**설명:** OneDrive에 새 폴더를 만듭니다.
**매개변수:**
- `folder_name` (string, 필수): 만들 폴더의 이름.
</Accordion>
<Accordion title="microsoft_onedrive/delete_item">
**설명:** OneDrive에서 파일 또는 폴더를 삭제합니다.
**매개변수:**
- `item_id` (string, 필수): 삭제할 파일 또는 폴더의 ID.
</Accordion>
<Accordion title="microsoft_onedrive/copy_item">
**설명:** OneDrive에서 파일 또는 폴더를 복사합니다.
**매개변수:**
- `item_id` (string, 필수): 복사할 파일 또는 폴더의 ID.
- `parent_id` (string, 선택사항): 대상 폴더의 ID (선택사항, 기본값은 루트).
- `new_name` (string, 선택사항): 복사된 항목의 새 이름 (선택사항).
</Accordion>
<Accordion title="microsoft_onedrive/move_item">
**설명:** OneDrive에서 파일 또는 폴더를 이동합니다.
**매개변수:**
- `item_id` (string, 필수): 이동할 파일 또는 폴더의 ID.
- `parent_id` (string, 필수): 대상 폴더의 ID.
- `new_name` (string, 선택사항): 항목의 새 이름 (선택사항).
</Accordion>
<Accordion title="microsoft_onedrive/search_files">
**설명:** OneDrive에서 파일과 폴더를 검색합니다.
**매개변수:**
- `query` (string, 필수): 검색 쿼리 문자열.
- `top` (integer, 선택사항): 반환할 결과 수 (최대 1000). 기본값: 50.
</Accordion>
<Accordion title="microsoft_onedrive/share_item">
**설명:** 파일 또는 폴더의 공유 링크를 만듭니다.
**매개변수:**
- `item_id` (string, 필수): 공유할 파일 또는 폴더의 ID.
- `type` (string, 선택사항): 공유 링크 유형. 옵션: view, edit, embed. 기본값: view.
- `scope` (string, 선택사항): 공유 링크 범위. 옵션: anonymous, organization. 기본값: anonymous.
</Accordion>
<Accordion title="microsoft_onedrive/get_thumbnails">
**설명:** 파일의 썸네일을 가져옵니다.
**매개변수:**
- `item_id` (string, 필수): 파일의 ID.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft OneDrive 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft OneDrive 기능을 가진 에이전트 생성
onedrive_agent = Agent(
role="파일 관리자",
goal="OneDrive에서 파일과 폴더를 효율적으로 관리",
backstory="Microsoft OneDrive 파일 작업 및 구성 전문 AI 어시스턴트.",
apps=['microsoft_onedrive'] # 모든 OneDrive 작업을 사용할 수 있습니다
)
# 파일 나열 및 폴더 생성 작업
organize_files_task = Task(
description="OneDrive 루트 디렉토리의 모든 파일을 나열하고 '프로젝트 문서'라는 새 폴더를 만드세요.",
agent=onedrive_agent,
expected_output="파일 목록이 표시되고 새 폴더 '프로젝트 문서'가 생성됨."
)
# 작업 실행
crew = Crew(
agents=[onedrive_agent],
tasks=[organize_files_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read`, `Files.ReadWrite`).
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
**파일 업로드 문제**
- 파일 업로드 시 `file_name`과 `content`가 제공되는지 확인하세요.
- 바이너리 파일의 경우 내용이 Base64로 인코딩되어야 합니다.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft OneDrive 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,161 @@
---
title: Microsoft Outlook 통합
description: "CrewAI를 위한 Microsoft Outlook 통합으로 이메일, 캘린더 및 연락처 관리."
icon: "envelope"
mode: "wide"
---
## 개요
에이전트가 Outlook 이메일, 캘린더 이벤트 및 연락처에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 이메일을 보내고, 메시지를 검색하고, 캘린더 이벤트를 관리하며, 연락처를 구성합니다.
## 전제 조건
Microsoft Outlook 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Outlook 액세스 권한이 있는 Microsoft 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft Outlook 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft Outlook** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 이메일, 캘린더 및 연락처 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_outlook/get_messages">
**설명:** 사용자의 사서함에서 이메일 메시지를 가져옵니다.
**매개변수:**
- `top` (integer, 선택사항): 검색할 메시지 수 (최대 1000). 기본값: 10.
- `filter` (string, 선택사항): OData 필터 표현식 (예: "isRead eq false").
- `search` (string, 선택사항): 검색 쿼리 문자열.
- `orderby` (string, 선택사항): 필드별 정렬 (예: "receivedDateTime desc"). 기본값: "receivedDateTime desc".
- `select` (string, 선택사항): 반환할 특정 속성 선택.
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
</Accordion>
<Accordion title="microsoft_outlook/send_email">
**설명:** 이메일 메시지를 보냅니다.
**매개변수:**
- `to_recipients` (array, 필수): 받는 사람의 이메일 주소 배열.
- `cc_recipients` (array, 선택사항): 참조 받는 사람의 이메일 주소 배열.
- `bcc_recipients` (array, 선택사항): 숨은 참조 받는 사람의 이메일 주소 배열.
- `subject` (string, 필수): 이메일 제목.
- `body` (string, 필수): 이메일 본문 내용.
- `body_type` (string, 선택사항): 본문 내용 유형. 옵션: Text, HTML. 기본값: HTML.
- `importance` (string, 선택사항): 메시지 중요도 수준. 옵션: low, normal, high. 기본값: normal.
- `reply_to` (array, 선택사항): 회신용 이메일 주소 배열.
- `save_to_sent_items` (boolean, 선택사항): 보낸 편지함 폴더에 메시지를 저장할지 여부. 기본값: true.
</Accordion>
<Accordion title="microsoft_outlook/get_calendar_events">
**설명:** 사용자의 캘린더에서 캘린더 이벤트를 가져옵니다.
**매개변수:**
- `top` (integer, 선택사항): 검색할 이벤트 수 (최대 1000). 기본값: 10.
- `skip` (integer, 선택사항): 건너뛸 이벤트 수. 기본값: 0.
- `filter` (string, 선택사항): OData 필터 표현식 (예: "start/dateTime ge '2024-01-01T00:00:00Z'").
- `orderby` (string, 선택사항): 필드별 정렬 (예: "start/dateTime asc"). 기본값: "start/dateTime asc".
</Accordion>
<Accordion title="microsoft_outlook/create_calendar_event">
**설명:** 새 캘린더 이벤트를 만듭니다.
**매개변수:**
- `subject` (string, 필수): 이벤트 제목/제목.
- `body` (string, 선택사항): 이벤트 본문/설명.
- `start_datetime` (string, 필수): ISO 8601 형식의 시작 날짜 및 시간 (예: '2024-01-20T10:00:00').
- `end_datetime` (string, 필수): ISO 8601 형식의 종료 날짜 및 시간.
- `timezone` (string, 선택사항): 시간대 (예: 'Pacific Standard Time'). 기본값: UTC.
- `location` (string, 선택사항): 이벤트 위치.
- `attendees` (array, 선택사항): 참석자의 이메일 주소 배열.
</Accordion>
<Accordion title="microsoft_outlook/get_contacts">
**설명:** 사용자의 주소록에서 연락처를 가져옵니다.
**매개변수:**
- `top` (integer, 선택사항): 검색할 연락처 수 (최대 1000). 기본값: 10.
- `skip` (integer, 선택사항): 건너뛸 연락처 수. 기본값: 0.
- `filter` (string, 선택사항): OData 필터 표현식.
- `orderby` (string, 선택사항): 필드별 정렬 (예: "displayName asc"). 기본값: "displayName asc".
</Accordion>
<Accordion title="microsoft_outlook/create_contact">
**설명:** 사용자의 주소록에 새 연락처를 만듭니다.
**매개변수:**
- `displayName` (string, 필수): 연락처의 표시 이름.
- `givenName` (string, 선택사항): 연락처의 이름.
- `surname` (string, 선택사항): 연락처의 성.
- `emailAddresses` (array, 선택사항): 이메일 주소 배열. 각 항목은 `address` (string)와 `name` (string)이 있는 객체.
- `businessPhones` (array, 선택사항): 사업용 전화번호 배열.
- `homePhones` (array, 선택사항): 집 전화번호 배열.
- `jobTitle` (string, 선택사항): 연락처의 직책.
- `companyName` (string, 선택사항): 연락처의 회사 이름.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft Outlook 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft Outlook 기능을 가진 에이전트 생성
outlook_agent = Agent(
role="이메일 어시스턴트",
goal="이메일, 캘린더 이벤트 및 연락처를 효율적으로 관리",
backstory="Microsoft Outlook 작업 및 커뮤니케이션 관리 전문 AI 어시스턴트.",
apps=['microsoft_outlook'] # 모든 Outlook 작업을 사용할 수 있습니다
)
# 이메일 보내기 작업
send_email_task = Task(
description="'colleague@example.com'에게 제목 '프로젝트 업데이트'와 본문 '안녕하세요, 프로젝트의 최신 업데이트입니다. 감사합니다.'로 이메일을 보내세요",
agent=outlook_agent,
expected_output="colleague@example.com에게 이메일이 성공적으로 전송됨"
)
# 작업 실행
crew = Crew(
agents=[outlook_agent],
tasks=[send_email_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 이메일, 캘린더 및 연락처 액세스에 필요한 권한을 가지고 있는지 확인하세요.
- 필요한 범위: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
**이메일 보내기 문제**
- `send_email`에 `to_recipients`, `subject`, `body`가 제공되는지 확인하세요.
- 이메일 주소가 올바르게 형식화되어 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft Outlook 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,185 @@
---
title: Microsoft SharePoint 통합
description: "CrewAI를 위한 Microsoft SharePoint 통합으로 사이트, 목록 및 문서 관리."
icon: "folder-tree"
mode: "wide"
---
## 개요
에이전트가 SharePoint 사이트, 목록 및 문서 라이브러리에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 사이트 정보를 검색하고, 목록 항목을 관리하고, 파일을 업로드 및 구성하며, SharePoint 워크플로를 간소화합니다.
## 전제 조건
Microsoft SharePoint 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- SharePoint 액세스 권한이 있는 Microsoft 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft SharePoint 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft SharePoint** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. SharePoint 사이트 및 파일 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_sharepoint/get_sites">
**설명:** 사용자가 액세스할 수 있는 모든 SharePoint 사이트를 가져옵니다.
**매개변수:**
- `search` (string, 선택사항): 사이트를 필터링하기 위한 검색 쿼리.
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'displayName,id,webUrl').
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
- `skip` (integer, 선택사항): 건너뛸 항목 수 (최소 0).
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬 (예: 'displayName desc').
</Accordion>
<Accordion title="microsoft_sharepoint/get_site">
**설명:** 특정 SharePoint 사이트에 대한 정보를 가져옵니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `select` (string, 선택사항): 반환할 특정 속성 선택 (예: 'displayName,id,webUrl,drives').
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장 (예: 'drives,lists').
</Accordion>
<Accordion title="microsoft_sharepoint/get_site_lists">
**설명:** SharePoint 사이트의 모든 목록을 가져옵니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
</Accordion>
<Accordion title="microsoft_sharepoint/get_list">
**설명:** 특정 목록에 대한 정보를 가져옵니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `list_id` (string, 필수): 목록의 ID.
</Accordion>
<Accordion title="microsoft_sharepoint/get_list_items">
**설명:** SharePoint 목록에서 항목을 가져옵니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `list_id` (string, 필수): 목록의 ID.
- `expand` (string, 선택사항): 관련 데이터 확장 (예: 'fields').
</Accordion>
<Accordion title="microsoft_sharepoint/create_list_item">
**설명:** SharePoint 목록에 새 항목을 만듭니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `list_id` (string, 필수): 목록의 ID.
- `fields` (object, 필수): 새 항목의 필드 값.
</Accordion>
<Accordion title="microsoft_sharepoint/update_list_item">
**설명:** SharePoint 목록의 항목을 업데이트합니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `list_id` (string, 필수): 목록의 ID.
- `item_id` (string, 필수): 업데이트할 항목의 ID.
- `fields` (object, 필수): 업데이트할 필드 값.
</Accordion>
<Accordion title="microsoft_sharepoint/delete_list_item">
**설명:** SharePoint 목록에서 항목을 삭제합니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `list_id` (string, 필수): 목록의 ID.
- `item_id` (string, 필수): 삭제할 항목의 ID.
</Accordion>
<Accordion title="microsoft_sharepoint/upload_file_to_library">
**설명:** SharePoint 문서 라이브러리에 파일을 업로드합니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `file_path` (string, 필수): 파일을 업로드할 경로 (예: 'folder/fileName.txt').
- `content` (string, 필수): 업로드할 파일의 내용.
</Accordion>
<Accordion title="microsoft_sharepoint/get_drive_items">
**설명:** SharePoint 문서 라이브러리에서 파일과 폴더를 가져옵니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
</Accordion>
<Accordion title="microsoft_sharepoint/delete_drive_item">
**설명:** SharePoint 문서 라이브러리에서 파일 또는 폴더를 삭제합니다.
**매개변수:**
- `site_id` (string, 필수): SharePoint 사이트의 ID.
- `item_id` (string, 필수): 삭제할 파일 또는 폴더의 ID.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft SharePoint 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft SharePoint 기능을 가진 에이전트 생성
sharepoint_agent = Agent(
role="SharePoint 관리자",
goal="SharePoint 사이트, 목록 및 문서를 효율적으로 관리",
backstory="Microsoft SharePoint 관리 및 콘텐츠 관리 전문 AI 어시스턴트.",
apps=['microsoft_sharepoint'] # 모든 SharePoint 작업을 사용할 수 있습니다
)
# 모든 사이트 가져오기 작업
get_sites_task = Task(
description="액세스할 수 있는 모든 SharePoint 사이트를 나열하세요.",
agent=sharepoint_agent,
expected_output="표시 이름과 URL이 포함된 SharePoint 사이트 목록."
)
# 작업 실행
crew = Crew(
agents=[sharepoint_agent],
tasks=[get_sites_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 SharePoint 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Sites.Read.All`, `Sites.ReadWrite.All`).
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
**사이트/목록/항목 ID 문제**
- 사이트, 목록, 항목 ID가 올바른지 다시 확인하세요.
- 참조된 리소스가 존재하고 액세스할 수 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft SharePoint 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,136 @@
---
title: Microsoft Teams 통합
description: "CrewAI를 위한 Microsoft Teams 통합으로 팀 협업 및 커뮤니케이션."
icon: "users"
mode: "wide"
---
## 개요
에이전트가 Teams 데이터에 액세스하고, 메시지를 보내고, 회의를 만들고, 채널을 관리할 수 있도록 합니다. AI 기반 자동화로 팀 커뮤니케이션을 자동화하고, 회의를 예약하고, 메시지를 검색하며, 협업 워크플로를 간소화합니다.
## 전제 조건
Microsoft Teams 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Teams 액세스 권한이 있는 Microsoft 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft Teams 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft Teams** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. Teams 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_teams/get_teams">
**설명:** 사용자가 멤버인 모든 팀을 가져옵니다.
**매개변수:**
- 매개변수가 필요하지 않습니다.
</Accordion>
<Accordion title="microsoft_teams/get_channels">
**설명:** 특정 팀의 채널을 가져옵니다.
**매개변수:**
- `team_id` (string, 필수): 팀의 ID.
</Accordion>
<Accordion title="microsoft_teams/send_message">
**설명:** Teams 채널에 메시지를 보냅니다.
**매개변수:**
- `team_id` (string, 필수): 팀의 ID.
- `channel_id` (string, 필수): 채널의 ID.
- `message` (string, 필수): 메시지 내용.
- `content_type` (string, 선택사항): 콘텐츠 유형 (html 또는 text). 옵션: html, text. 기본값: text.
</Accordion>
<Accordion title="microsoft_teams/get_messages">
**설명:** Teams 채널에서 메시지를 가져옵니다.
**매개변수:**
- `team_id` (string, 필수): 팀의 ID.
- `channel_id` (string, 필수): 채널의 ID.
- `top` (integer, 선택사항): 검색할 메시지 수 (최대 50). 기본값: 20.
</Accordion>
<Accordion title="microsoft_teams/create_meeting">
**설명:** Teams 회의를 만듭니다.
**매개변수:**
- `subject` (string, 필수): 회의 제목/제목.
- `startDateTime` (string, 필수): 회의 시작 시간 (시간대가 포함된 ISO 8601 형식).
- `endDateTime` (string, 필수): 회의 종료 시간 (시간대가 포함된 ISO 8601 형식).
</Accordion>
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
**설명:** 웹 참가 URL로 온라인 회의를 검색합니다.
**매개변수:**
- `join_web_url` (string, 필수): 검색할 회의의 웹 참가 URL.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft Teams 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft Teams 기능을 가진 에이전트 생성
teams_agent = Agent(
role="Teams 코디네이터",
goal="Teams 커뮤니케이션 및 회의를 효율적으로 관리",
backstory="Microsoft Teams 작업 및 팀 협업 전문 AI 어시스턴트.",
apps=['microsoft_teams'] # 모든 Teams 작업을 사용할 수 있습니다
)
# 팀 및 채널 탐색 작업
explore_teams_task = Task(
description="내가 멤버인 모든 팀을 나열한 다음 첫 번째 팀의 채널을 가져오세요.",
agent=teams_agent,
expected_output="팀 및 채널 목록이 표시됨."
)
# 작업 실행
crew = Crew(
agents=[teams_agent],
tasks=[explore_teams_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 Teams 액세스에 필요한 권한을 가지고 있는지 확인하세요.
- 필요한 범위: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
**팀 및 채널 액세스**
- 액세스하려는 팀의 멤버인지 확인하세요.
- 팀 및 채널 ID가 올바른지 다시 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft Teams 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -0,0 +1,127 @@
---
title: Microsoft Word 통합
description: "CrewAI를 위한 Microsoft Word 통합으로 문서 생성 및 관리."
icon: "file-word"
mode: "wide"
---
## 개요
에이전트가 OneDrive 또는 SharePoint에서 Word 문서와 텍스트 파일을 생성, 읽기 및 관리할 수 있도록 합니다. AI 기반 자동화로 문서 생성을 자동화하고, 콘텐츠를 검색하고, 문서 속성을 관리하며, 문서 워크플로를 간소화합니다.
## 전제 조건
Microsoft Word 통합을 사용하기 전에 다음 사항을 확인하세요:
- 활성 구독이 있는 [CrewAI AMP](https://app.crewai.com) 계정
- Word 및 OneDrive/SharePoint 액세스 권한이 있는 Microsoft 계정
- [통합 페이지](https://app.crewai.com/crewai_plus/connectors)를 통해 Microsoft 계정 연결
## Microsoft Word 통합 설정
### 1. Microsoft 계정 연결
1. [CrewAI AMP 통합](https://app.crewai.com/crewai_plus/connectors)으로 이동
2. 인증 통합 섹션에서 **Microsoft Word** 찾기
3. **연결**을 클릭하고 OAuth 플로우 완료
4. 파일 액세스에 필요한 권한 부여
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token 복사
### 2. 필요한 패키지 설치
```bash
uv add crewai-tools
```
## 사용 가능한 작업
<AccordionGroup>
<Accordion title="microsoft_word/get_documents">
**설명:** OneDrive 또는 SharePoint에서 모든 Word 문서를 가져옵니다.
**매개변수:**
- `select` (string, 선택사항): 반환할 특정 속성 선택.
- `filter` (string, 선택사항): OData 구문을 사용하여 결과 필터링.
- `expand` (string, 선택사항): 관련 리소스를 인라인으로 확장.
- `top` (integer, 선택사항): 반환할 항목 수 (최소 1, 최대 999).
- `orderby` (string, 선택사항): 지정된 속성으로 결과 정렬.
</Accordion>
<Accordion title="microsoft_word/create_text_document">
**설명:** 내용이 있는 텍스트 문서(.txt)를 만듭니다. 읽기 가능하고 편집 가능해야 하는 프로그래밍 방식 콘텐츠 생성에 권장됩니다.
**매개변수:**
- `file_name` (string, 필수): 텍스트 문서의 이름 (.txt로 끝나야 함).
- `content` (string, 선택사항): 문서의 텍스트 내용. 기본값: "API를 통해 생성된 새 텍스트 문서입니다."
</Accordion>
<Accordion title="microsoft_word/get_document_content">
**설명:** 문서의 내용을 가져옵니다 (텍스트 파일에서 가장 잘 작동).
**매개변수:**
- `file_id` (string, 필수): 문서의 ID.
</Accordion>
<Accordion title="microsoft_word/get_document_properties">
**설명:** 문서의 속성과 메타데이터를 가져옵니다.
**매개변수:**
- `file_id` (string, 필수): 문서의 ID.
</Accordion>
<Accordion title="microsoft_word/delete_document">
**설명:** 문서를 삭제합니다.
**매개변수:**
- `file_id` (string, 필수): 삭제할 문서의 ID.
</Accordion>
</AccordionGroup>
## 사용 예제
### 기본 Microsoft Word 에이전트 설정
```python
from crewai import Agent, Task, Crew
# Microsoft Word 기능을 가진 에이전트 생성
word_agent = Agent(
role="문서 관리자",
goal="Word 문서와 텍스트 파일을 효율적으로 관리",
backstory="Microsoft Word 문서 작업 및 콘텐츠 관리 전문 AI 어시스턴트.",
apps=['microsoft_word'] # 모든 Word 작업을 사용할 수 있습니다
)
# 새 텍스트 문서 생성 작업
create_doc_task = Task(
description="'회의노트.txt'라는 새 텍스트 문서를 만들고 내용은 '2024년 1월 회의 노트: 주요 토론 사항 및 실행 항목.'으로 하세요",
agent=word_agent,
expected_output="새 텍스트 문서 '회의노트.txt'가 성공적으로 생성됨."
)
# 작업 실행
crew = Crew(
agents=[word_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
## 문제 해결
### 일반적인 문제
**인증 오류**
- Microsoft 계정이 파일 액세스에 필요한 권한을 가지고 있는지 확인하세요 (예: `Files.Read.All`, `Files.ReadWrite.All`).
- OAuth 연결이 필요한 모든 범위를 포함하는지 확인하세요.
**파일 생성 문제**
- 텍스트 문서를 만들 때 `file_name`이 `.txt` 확장자로 끝나는지 확인하세요.
- 대상 위치(OneDrive/SharePoint)에 쓰기 권한이 있는지 확인하세요.
### 도움 받기
<Card title="도움이 필요하신가요?" icon="headset" href="mailto:support@crewai.com">
Microsoft Word 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.
</Card>

View File

@@ -25,7 +25,7 @@ Notion 통합을 사용하기 전에 다음을 확인하세요:
2. 인증 통합(Auhtentication Integrations) 섹션에서 **Notion**을(를) 찾습니다.
3. **Connect**를 클릭하고 OAuth 플로우를 완료합니다.
4. 페이지 및 데이터베이스 관리를 위한 필요한 권한을 부여합니다.
5. [Account Settings](https://app.crewai.com/crewai_plus/settings/account)에서 Enterprise Token을 복사합니다.
5. [통합 설정](https://app.crewai.com/crewai_plus/settings/integrations)에서 Enterprise Token을 복사합니다.
### 2. 필수 패키지 설치
@@ -36,7 +36,7 @@ uv add crewai-tools
## 사용 가능한 액션
<AccordionGroup>
<Accordion title="NOTION_CREATE_PAGE">
<Accordion title="notion/create_page">
**설명:** Notion에서 페이지를 생성합니다.
**파라미터:**
@@ -93,7 +93,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_UPDATE_PAGE">
<Accordion title="notion/update_page">
**설명:** Notion에서 페이지를 업데이트합니다.
**파라미터:**
@@ -127,21 +127,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_GET_PAGE_BY_ID">
<Accordion title="notion/get_page_by_id">
**설명:** Notion에서 ID로 페이지를 가져옵니다.
**파라미터:**
- `pageId` (string, 필수): 페이지 ID - 가져올 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_ARCHIVE_PAGE">
<Accordion title="notion/archive_page">
**설명:** Notion에서 페이지를 보관합니다.
**파라미터:**
- `pageId` (string, 필수): 페이지 ID - 보관할 페이지의 ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_SEARCH_PAGES">
<Accordion title="notion/search_pages">
**설명:** 필터를 사용하여 Notion에서 페이지를 검색합니다.
**파라미터:**
@@ -166,14 +166,14 @@ uv add crewai-tools
사용 가능한 필드: `query`, `filter.value`, `direction`, `page_size`
</Accordion>
<Accordion title="NOTION_GET_PAGE_CONTENT">
<Accordion title="notion/get_page_content">
**설명:** Notion에서 페이지 콘텐츠(블록)를 가져옵니다.
**파라미터:**
- `blockId` (string, 필수): 페이지 ID - 해당 블록이나 페이지의 모든 자식 블록을 순서대로 가져오기 위해 Block 또는 Page ID를 지정합니다. (예: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_UPDATE_BLOCK">
<Accordion title="notion/update_block">
**설명:** Notion에서 블록을 업데이트합니다.
**파라미터:**
@@ -260,14 +260,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_GET_BLOCK_BY_ID">
<Accordion title="notion/get_block_by_id">
**설명:** Notion에서 ID로 블록을 가져옵니다.
**파라미터:**
- `blockId` (string, 필수): 블록 ID - 가져올 블록의 ID를 지정합니다. (예: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
<Accordion title="NOTION_DELETE_BLOCK">
<Accordion title="notion/delete_block">
**설명:** Notion에서 블록을 삭제합니다.
**파라미터:**
@@ -281,19 +281,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Notion tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Notion capabilities
notion_agent = Agent(
role="Documentation Manager",
goal="Manage documentation and knowledge base in Notion efficiently",
backstory="An AI assistant specialized in content management and documentation.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to create a meeting notes page
@@ -315,19 +309,12 @@ crew.kickoff()
### 특정 Notion 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Notion tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["notion_create_page", "notion_update_block", "notion_search_pages"]
)
content_manager = Agent(
role="Content Manager",
goal="Create and manage content pages efficiently",
backstory="An AI assistant that focuses on content creation and management.",
tools=enterprise_tools
apps=['notion']
)
# Task to manage content workflow
@@ -349,17 +336,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
knowledge_curator = Agent(
role="Knowledge Curator",
goal="Curate and organize knowledge base content in Notion",
backstory="An experienced knowledge manager who organizes and maintains comprehensive documentation.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to curate knowledge base
@@ -386,17 +368,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
content_organizer = Agent(
role="Content Organizer",
goal="Organize and structure content blocks for optimal readability",
backstory="An AI assistant that specializes in content structure and user experience.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to organize content structure
@@ -424,17 +401,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
doc_automator = Agent(
role="Documentation Automator",
goal="Automate documentation workflows and maintenance",
backstory="An AI assistant that automates repetitive documentation tasks.",
tools=[enterprise_tools]
apps=['notion']
)
# Complex documentation automation task

View File

@@ -22,7 +22,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **레코드 관리**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
<Accordion title="salesforce/create_record_contact">
**설명:** Salesforce에서 새로운 Contact 레코드를 생성합니다.
**파라미터:**
@@ -35,7 +35,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 사용자 정의 Contact 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
<Accordion title="salesforce/create_record_lead">
**설명:** Salesforce에서 새로운 Lead 레코드를 생성합니다.
**파라미터:**
@@ -51,7 +51,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 사용자 정의 Lead 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/create_record_opportunity">
**설명:** Salesforce에서 새로운 Opportunity 레코드를 생성합니다.
**파라미터:**
@@ -66,7 +66,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 사용자 정의 Opportunity 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
<Accordion title="salesforce/create_record_task">
**설명:** Salesforce에서 새로운 Task 레코드를 생성합니다.
**파라미터:**
@@ -84,7 +84,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 사용자 정의 Task 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
<Accordion title="salesforce/create_record_account">
**설명:** Salesforce에서 새로운 Account 레코드를 생성합니다.
**파라미터:**
@@ -96,7 +96,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 사용자 정의 Account 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
<Accordion title="salesforce/create_record_any">
**설명:** Salesforce에서 모든 오브젝트 유형의 레코드를 생성합니다.
**참고:** 이 기능은 사용자 정의 또는 알려지지 않은 오브젝트 유형의 레코드를 생성할 때 유연하게 사용할 수 있습니다.
@@ -106,7 +106,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **레코드 업데이트**
<AccordionGroup>
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
<Accordion title="salesforce/update_record_contact">
**설명:** Salesforce에서 기존 연락처(Contact) 레코드를 업데이트합니다.
**파라미터:**
@@ -120,7 +120,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 커스텀 연락처 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
<Accordion title="salesforce/update_record_lead">
**설명:** Salesforce에서 기존 리드(Lead) 레코드를 업데이트합니다.
**파라미터:**
@@ -137,7 +137,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 커스텀 리드 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/update_record_opportunity">
**설명:** Salesforce에서 기존 기회(Opportunity) 레코드를 업데이트합니다.
**파라미터:**
@@ -153,7 +153,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 커스텀 기회 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
<Accordion title="salesforce/update_record_task">
**설명:** Salesforce에서 기존 작업(Task) 레코드를 업데이트합니다.
**파라미터:**
@@ -171,7 +171,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 커스텀 작업 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
<Accordion title="salesforce/update_record_account">
**설명:** Salesforce에서 기존 계정(Account) 레코드를 업데이트합니다.
**파라미터:**
@@ -184,7 +184,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): 커스텀 계정 필드를 위한 JSON 형식의 추가 필드
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
<Accordion title="salesforce/update_record_any">
**설명:** Salesforce에서 어떤 객체 유형이든 레코드를 업데이트합니다.
**참고:** 이는 커스텀 또는 미확인 객체 유형의 레코드 업데이트를 위한 유연한 도구입니다.
@@ -194,42 +194,42 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **레코드 조회**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
<Accordion title="salesforce/get_record_by_id_contact">
**설명:** ID로 Contact 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Contact의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
<Accordion title="salesforce/get_record_by_id_lead">
**설명:** ID로 Lead 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Lead의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_id_opportunity">
**설명:** ID로 Opportunity 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Opportunity의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
<Accordion title="salesforce/get_record_by_id_task">
**설명:** ID로 Task 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Task의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_id_account">
**설명:** ID로 Account 레코드를 조회합니다.
**파라미터:**
- `recordId` (string, 필수): Account의 레코드 ID
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
<Accordion title="salesforce/get_record_by_id_any">
**설명:** ID로 임의 객체 유형의 레코드를 조회합니다.
**파라미터:**
@@ -241,7 +241,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **레코드 검색**
<AccordionGroup>
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
<Accordion title="salesforce/search_records_contact">
**설명:** 고급 필터링으로 연락처(Contact) 레코드를 검색합니다.
**파라미터:**
@@ -252,7 +252,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
<Accordion title="salesforce/search_records_lead">
**설명:** 고급 필터링으로 리드(Lead) 레코드를 검색합니다.
**파라미터:**
@@ -263,7 +263,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
<Accordion title="salesforce/search_records_opportunity">
**설명:** 고급 필터링으로 기회(Opportunity) 레코드를 검색합니다.
**파라미터:**
@@ -274,7 +274,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
<Accordion title="salesforce/search_records_task">
**설명:** 고급 필터링으로 작업(Task) 레코드를 검색합니다.
**파라미터:**
@@ -285,7 +285,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
<Accordion title="salesforce/search_records_account">
**설명:** 고급 필터링으로 계정(Account) 레코드를 검색합니다.
**파라미터:**
@@ -296,7 +296,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor를 포함한 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
<Accordion title="salesforce/search_records_any">
**설명:** 모든 오브젝트 유형의 레코드를 검색합니다.
**파라미터:**
@@ -310,7 +310,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **리스트 뷰 조회**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
<Accordion title="salesforce/get_record_by_view_id_contact">
**설명:** 특정 리스트 뷰에서 Contact 레코드를 가져옵니다.
**파라미터:**
@@ -318,7 +318,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
<Accordion title="salesforce/get_record_by_view_id_lead">
**설명:** 특정 리스트 뷰에서 Lead 레코드를 가져옵니다.
**파라미터:**
@@ -326,7 +326,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_view_id_opportunity">
**설명:** 특정 리스트 뷰에서 Opportunity 레코드를 가져옵니다.
**파라미터:**
@@ -334,7 +334,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
<Accordion title="salesforce/get_record_by_view_id_task">
**설명:** 특정 리스트 뷰에서 Task 레코드를 가져옵니다.
**파라미터:**
@@ -342,7 +342,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_view_id_account">
**설명:** 특정 리스트 뷰에서 Account 레코드를 가져옵니다.
**파라미터:**
@@ -350,7 +350,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `paginationParameters` (object, 선택): pageCursor와 함께 사용하는 페이지네이션 설정
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
<Accordion title="salesforce/get_record_by_view_id_any">
**설명:** 특정 리스트 뷰에서 임의의 객체 유형의 레코드를 가져옵니다.
**파라미터:**
@@ -363,7 +363,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **커스텀 필드**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
<Accordion title="salesforce/create_custom_field_contact">
**설명:** Contact 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
@@ -379,7 +379,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
<Accordion title="salesforce/create_custom_field_lead">
**설명:** Lead 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
@@ -395,7 +395,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
<Accordion title="salesforce/create_custom_field_opportunity">
**설명:** Opportunity 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
@@ -411,7 +411,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
<Accordion title="salesforce/create_custom_field_task">
**설명:** Task 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
@@ -427,7 +427,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
<Accordion title="salesforce/create_custom_field_account">
**설명:** Account 오브젝트에 대한 커스텀 필드를 배포합니다.
**파라미터:**
@@ -443,7 +443,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `defaultFieldValue` (string, 선택): 필드의 기본값
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
<Accordion title="salesforce/create_custom_field_any">
**설명:** 모든 오브젝트 타입에 대한 커스텀 필드를 배포합니다.
**참고:** 커스텀 또는 미지의 오브젝트 타입에 커스텀 필드를 생성할 수 있는 유연한 도구입니다.
@@ -453,14 +453,14 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
### **고급 작업**
<AccordionGroup>
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
<Accordion title="salesforce/write_soql_query">
**설명:** Salesforce 데이터에 대해 커스텀 SOQL 쿼리를 실행합니다.
**파라미터:**
- `query` (string, 필수): SOQL 쿼리 (예: "SELECT Id, Name FROM Account WHERE Name = 'Example'")
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
<Accordion title="salesforce/create_custom_object">
**설명:** Salesforce에 새로운 커스텀 오브젝트를 배포합니다.
**파라미터:**
@@ -470,7 +470,7 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
- `recordName` (string, 필수): 레이아웃과 검색에 표시되는 레코드 이름 (예: "Account Name")
</Accordion>
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
<Accordion title="salesforce/describe_action_schema">
**설명:** 특정 오브젝트 타입에 대한 작업의 예상 스키마를 가져옵니다.
**파라미터:**
@@ -487,19 +487,13 @@ Salesforce 통합을 사용하기 전에 다음을 확인하세요:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Salesforce tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Salesforce capabilities
salesforce_agent = Agent(
role="CRM Manager",
goal="Manage customer relationships and sales processes efficiently",
backstory="An AI assistant specialized in CRM operations and sales automation.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Task to create a new lead
@@ -521,19 +515,12 @@ crew.kickoff()
### 특정 Salesforce 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Salesforce tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
)
sales_manager = Agent(
role="Sales Manager",
goal="Manage leads and opportunities in the sales pipeline",
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
tools=enterprise_tools
apps=['salesforce']
)
# Task to manage sales pipeline
@@ -555,17 +542,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
account_manager = Agent(
role="Account Manager",
goal="Manage customer accounts and maintain strong relationships",
backstory="An AI assistant that specializes in account management and customer relationship building.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Task to manage customer accounts
@@ -591,17 +573,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Sales Data Analyst",
goal="Generate insights from Salesforce data using SOQL queries",
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Complex task involving SOQL queries and data analysis

View File

@@ -22,7 +22,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
### **고객 관리**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_CUSTOMERS">
<Accordion title="shopify/get_customers">
**설명:** Shopify 스토어에서 고객 목록을 조회합니다.
**파라미터:**
@@ -34,7 +34,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
</Accordion>
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
<Accordion title="shopify/search_customers">
**설명:** 고급 필터링 기준을 사용하여 고객을 검색합니다.
**파라미터:**
@@ -42,7 +42,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `limit` (string, 선택): 반환할 최대 고객 수 (기본값 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
<Accordion title="shopify/create_customer">
**설명:** Shopify 스토어에 새로운 고객을 생성합니다.
**파라미터:**
@@ -63,7 +63,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `metafields` (object, 선택): 추가 메타필드(JSON 형식)
</Accordion>
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
<Accordion title="shopify/update_customer">
**설명:** Shopify 스토어에 기존 고객을 업데이트합니다.
**파라미터:**
@@ -89,7 +89,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
### **주문 관리**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_ORDERS">
<Accordion title="shopify/get_orders">
**설명:** Shopify 스토어에서 주문 목록을 조회합니다.
**파라미터:**
@@ -101,7 +101,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `limit` (string, optional): 반환할 주문의 최대 개수 (기본값: 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_ORDER">
<Accordion title="shopify/create_order">
**설명:** Shopify 스토어에 새 주문을 생성합니다.
**파라미터:**
@@ -114,7 +114,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `note` (string, optional): 주문 메모
</Accordion>
<Accordion title="SHOPIFY_UPDATE_ORDER">
<Accordion title="shopify/update_order">
**설명:** Shopify 스토어에서 기존 주문을 업데이트합니다.
**파라미터:**
@@ -128,7 +128,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `note` (string, optional): 주문 메모
</Accordion>
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
<Accordion title="shopify/get_abandoned_carts">
**설명:** Shopify 스토어에서 방치된 장바구니를 조회합니다.
**파라미터:**
@@ -144,7 +144,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
### **제품 관리 (REST API)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS">
<Accordion title="shopify/get_products">
**설명:** REST API를 사용하여 Shopify 스토어에서 제품 목록을 조회합니다.
**파라미터:**
@@ -160,7 +160,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `limit` (string, optional): 반환할 최대 제품 수 (기본값: 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT">
<Accordion title="shopify/create_product">
**설명:** REST API를 사용하여 Shopify 스토어에 새로운 제품을 생성합니다.
**파라미터:**
@@ -176,7 +176,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `publishToPointToSale` (boolean, optional): 포인트 오브 세일(Point of Sale)에 공개 여부
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
<Accordion title="shopify/update_product">
**설명:** REST API를 사용하여 Shopify 스토어의 기존 제품을 업데이트합니다.
**파라미터:**
@@ -197,14 +197,14 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
### **제품 관리 (GraphQL)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
<Accordion title="shopify/get_products_graphql">
**설명:** 고급 GraphQL 필터링 기능을 사용하여 제품을 조회합니다.
**파라미터:**
- `productFilterFormula` (object, 선택): id, title, vendor, status, handle, tag, created_at, updated_at, published_at와 같은 필드를 지원하는 불리언 정규합형(DNF) 기반의 고급 필터
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/create_product_graphql">
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 새 제품을 생성합니다.
**파라미터:**
@@ -217,7 +217,7 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
- `additionalFields` (object, 선택): status, requiresSellingPlan, giftCard와 같은 추가 제품 필드
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/update_product_graphql">
**설명:** 미디어 지원이 강화된 GraphQL API를 사용하여 기존 제품을 업데이트합니다.
**파라미터:**
@@ -238,19 +238,13 @@ Shopify 연동을 사용하기 전에 다음을 확인하세요:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Shopify tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Shopify capabilities
shopify_agent = Agent(
role="E-commerce Manager",
goal="Manage online store operations and customer relationships efficiently",
backstory="An AI assistant specialized in e-commerce operations and online store management.",
tools=[enterprise_tools]
apps=['shopify']
)
# Task to create a new customer
@@ -272,19 +266,12 @@ crew.kickoff()
### 특정 Shopify 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Shopify tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["shopify_create_customer", "shopify_create_order", "shopify_get_products"]
)
store_manager = Agent(
role="Store Manager",
goal="Manage customer orders and product catalog",
backstory="An experienced store manager who handles customer relationships and inventory management.",
tools=enterprise_tools
apps=['shopify']
)
# Task to manage store operations
@@ -306,17 +293,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
product_manager = Agent(
role="Product Manager",
goal="Manage product catalog and inventory with advanced GraphQL capabilities",
backstory="An AI assistant that specializes in product management and catalog optimization.",
tools=[enterprise_tools]
apps=['shopify']
)
# Task to manage product catalog
@@ -343,17 +325,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="E-commerce Analyst",
goal="Analyze customer behavior and order patterns to optimize store performance",
backstory="An analytical AI that excels at extracting insights from e-commerce data.",
tools=[enterprise_tools]
apps=['shopify']
)
# Complex task involving multiple operations

View File

@@ -22,21 +22,21 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
### **사용자 관리**
<AccordionGroup>
<Accordion title="SLACK_LIST_MEMBERS">
<Accordion title="slack/list_members">
**설명:** Slack 채널의 모든 멤버를 나열합니다.
**파라미터:**
- 파라미터 없음 - 모든 채널 멤버를 조회합니다
</Accordion>
<Accordion title="SLACK_GET_USER_BY_EMAIL">
<Accordion title="slack/get_user_by_email">
**설명:** 이메일 주소로 Slack 워크스페이스에서 사용자를 찾습니다.
**파라미터:**
- `email` (string, 필수): 워크스페이스 내 사용자의 이메일 주소
</Accordion>
<Accordion title="SLACK_GET_USERS_BY_NAME">
<Accordion title="slack/get_users_by_name">
**설명:** 이름 또는 표시 이름으로 사용자를 검색합니다.
**파라미터:**
@@ -50,7 +50,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
### **채널 관리**
<AccordionGroup>
<Accordion title="SLACK_LIST_CHANNELS">
<Accordion title="slack/list_channels">
**설명:** Slack 워크스페이스의 모든 채널을 나열합니다.
**파라미터:**
@@ -61,7 +61,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
### **메시징**
<AccordionGroup>
<Accordion title="SLACK_SEND_MESSAGE">
<Accordion title="slack/send_message">
**설명:** Slack 채널에 메시지를 전송합니다.
**파라미터:**
@@ -73,7 +73,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
- `authenticatedUser` (boolean, 선택): true이면 메시지가 애플리케이션이 아니라 인증된 Slack 사용자로부터 보낸 것처럼 표시됩니다(기본값은 false)
</Accordion>
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
<Accordion title="slack/send_direct_message">
**설명:** Slack에서 특정 사용자에게 다이렉트 메시지를 전송합니다.
**파라미터:**
@@ -89,7 +89,7 @@ Slack 통합을 사용하기 전에 다음을 확인하십시오:
### **검색 및 탐색**
<AccordionGroup>
<Accordion title="SLACK_SEARCH_MESSAGES">
<Accordion title="slack/search_messages">
**설명:** Slack 워크스페이스 전체에서 메시지를 검색합니다.
**매개변수:**
@@ -150,19 +150,13 @@ Slack의 Block Kit을 사용하면 풍부하고 상호작용이 가능한 메시
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Slack tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Slack capabilities
slack_agent = Agent(
role="Team Communication Manager",
goal="Facilitate team communication and coordinate collaboration efficiently",
backstory="An AI assistant specialized in team communication and workspace coordination.",
tools=[enterprise_tools]
apps=['slack']
)
# Task to send project updates
@@ -184,19 +178,12 @@ crew.kickoff()
### 특정 Slack 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Slack tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["slack_send_message", "slack_send_direct_message", "slack_search_messages"]
)
communication_manager = Agent(
role="Communication Coordinator",
goal="Manage team communications and ensure important messages reach the right people",
backstory="An experienced communication coordinator who handles team messaging and notifications.",
tools=enterprise_tools
apps=['slack']
)
# Task to coordinate team communication
@@ -218,17 +205,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
notification_agent = Agent(
role="Notification Manager",
goal="Create rich, interactive notifications and manage workspace communication",
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
tools=[enterprise_tools]
apps=['slack']
)
# Task to send rich notifications
@@ -254,17 +236,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="Communication Analyst",
goal="Analyze team communication patterns and extract insights from conversations",
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
tools=[enterprise_tools]
apps=['slack']
)
# Complex task involving search and analysis

View File

@@ -22,7 +22,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
### **고객 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_CUSTOMER">
<Accordion title="stripe/create_customer">
**설명:** Stripe 계정에 새로운 고객을 생성합니다.
**파라미터:**
@@ -32,14 +32,14 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- `metadataCreateCustomer` (object, 선택): 추가 메타데이터를 key-value 쌍으로 입력 (예: `{"field1": 1, "field2": 2}`)
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
<Accordion title="stripe/get_customer_by_id">
**설명:** Stripe 고객 ID로 특정 고객을 조회합니다.
**파라미터:**
- `idGetCustomer` (string, 필수): 조회할 Stripe 고객 ID
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMERS">
<Accordion title="stripe/get_customers">
**설명:** 필터링 옵션과 함께 고객 리스트를 조회합니다.
**파라미터:**
@@ -49,7 +49,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- `limitGetCustomers` (string, 선택): 반환할 최대 고객 수 (기본값 10)
</Accordion>
<Accordion title="STRIPE_UPDATE_CUSTOMER">
<Accordion title="stripe/update_customer">
**설명:** 기존 고객의 정보를 업데이트합니다.
**파라미터:**
@@ -64,7 +64,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
### **구독 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
<Accordion title="stripe/create_subscription">
**설명:** 고객을 위한 새로운 구독을 생성합니다.
**파라미터:**
@@ -73,7 +73,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- `metadataCreateSubscription` (object, 선택): 구독에 대한 추가 메타데이터
</Accordion>
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
<Accordion title="stripe/get_subscriptions">
**설명:** 선택적 필터링으로 구독을 조회합니다.
**파라미터:**
@@ -86,7 +86,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
### **제품 관리**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_PRODUCT">
<Accordion title="stripe/create_product">
**설명:** Stripe 카탈로그에 새 제품을 생성합니다.
**파라미터:**
@@ -95,14 +95,14 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- `metadataProduct` (object, 선택): 키-값 쌍으로 구성된 추가 제품 메타데이터
</Accordion>
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
<Accordion title="stripe/get_product_by_id">
**설명:** Stripe 제품 ID로 특정 제품을 조회합니다.
**파라미터:**
- `productId` (string, 필수): 조회할 Stripe 제품 ID
</Accordion>
<Accordion title="STRIPE_GET_PRODUCTS">
<Accordion title="stripe/get_products">
**설명:** 선택적 필터링을 통해 제품 목록을 조회합니다.
**파라미터:**
@@ -115,7 +115,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
### **금융 운영**
<AccordionGroup>
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
<Accordion title="stripe/get_balance_transactions">
**설명:** Stripe 계정에서 잔액 거래를 조회합니다.
**매개변수:**
@@ -124,7 +124,7 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
<Accordion title="STRIPE_GET_PLANS">
<Accordion title="stripe/get_plans">
**설명:** Stripe 계정에서 구독 플랜을 조회합니다.
**매개변수:**
@@ -140,19 +140,13 @@ Stripe 통합을 사용하기 전에 다음 사항을 확인하세요:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Stripe tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Stripe capabilities
stripe_agent = Agent(
role="Payment Manager",
goal="Manage customer payments, subscriptions, and billing operations efficiently",
backstory="An AI assistant specialized in payment processing and subscription management.",
tools=[enterprise_tools]
apps=['stripe']
)
# Task to create a new customer
@@ -174,19 +168,12 @@ crew.kickoff()
### 특정 Stripe 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Stripe tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["stripe_create_customer", "stripe_create_subscription", "stripe_get_balance_transactions"]
)
billing_manager = Agent(
role="Billing Manager",
goal="Handle customer billing, subscriptions, and payment processing",
backstory="An experienced billing manager who handles subscription lifecycle and payment operations.",
tools=enterprise_tools
apps=['stripe']
)
# Task to manage billing operations
@@ -208,17 +195,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
subscription_manager = Agent(
role="Subscription Manager",
goal="Manage customer subscriptions and optimize recurring revenue",
backstory="An AI assistant that specializes in subscription lifecycle management and customer retention.",
tools=[enterprise_tools]
apps=['stripe']
)
# Task to manage subscription operations
@@ -245,17 +227,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
financial_analyst = Agent(
role="Financial Analyst",
goal="Analyze payment data and generate financial insights",
backstory="An analytical AI that excels at extracting insights from payment and subscription data.",
tools=[enterprise_tools]
apps=['stripe']
)
# Complex task involving financial analysis

View File

@@ -22,7 +22,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
### **티켓 관리**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_TICKET">
<Accordion title="zendesk/create_ticket">
**설명:** Zendesk에 새로운 지원 티켓을 생성합니다.
**매개변수:**
@@ -40,7 +40,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `ticketCustomFields` (object, 선택): JSON 형식의 사용자 정의 필드 값
</Accordion>
<Accordion title="ZENDESK_UPDATE_TICKET">
<Accordion title="zendesk/update_ticket">
**설명:** Zendesk의 기존 지원 티켓을 업데이트합니다.
**매개변수:**
@@ -58,14 +58,14 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `ticketCustomFields` (object, 선택): 업데이트된 사용자 정의 필드 값
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
<Accordion title="zendesk/get_ticket_by_id">
**설명:** ID로 특정 티켓을 조회합니다.
**매개변수:**
- `ticketId` (string, 필수): 조회할 티켓의 ID (예: "35436")
</Accordion>
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
<Accordion title="zendesk/add_comment_to_ticket">
**설명:** 기존 티켓에 댓글이나 내부 노트를 추가합니다.
**매개변수:**
@@ -75,7 +75,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `isPublic` (boolean, 선택): 공개 댓글이면 true, 내부 노트이면 false
</Accordion>
<Accordion title="ZENDESK_SEARCH_TICKETS">
<Accordion title="zendesk/search_tickets">
**설명:** 다양한 필터 및 조건을 사용하여 티켓을 검색합니다.
**매개변수:**
@@ -100,7 +100,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
### **사용자 관리**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_USER">
<Accordion title="zendesk/create_user">
**설명:** Zendesk에서 새로운 사용자를 생성합니다.
**매개변수:**
@@ -113,7 +113,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `notes` (string, 선택): 사용자에 대한 내부 메모
</Accordion>
<Accordion title="ZENDESK_UPDATE_USER">
<Accordion title="zendesk/update_user">
**설명:** 기존 사용자의 정보를 업데이트합니다.
**매개변수:**
@@ -127,14 +127,14 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `notes` (string, 선택): 업데이트된 내부 메모
</Accordion>
<Accordion title="ZENDESK_GET_USER_BY_ID">
<Accordion title="zendesk/get_user_by_id">
**설명:** ID로 특정 사용자를 조회합니다.
**매개변수:**
- `userId` (string, 필수): 조회할 사용자 ID
</Accordion>
<Accordion title="ZENDESK_SEARCH_USERS">
<Accordion title="zendesk/search_users">
**설명:** 다양한 기준으로 사용자를 검색합니다.
**매개변수:**
@@ -150,7 +150,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
### **관리 도구**
<AccordionGroup>
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
<Accordion title="zendesk/get_ticket_fields">
**설명:** 티켓에 사용할 수 있는 모든 표준 및 맞춤 필드를 검색합니다.
**파라미터:**
@@ -158,7 +158,7 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
- `pageCursor` (string, 선택 사항): 페이지네이션을 위한 페이지 커서
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
<Accordion title="zendesk/get_ticket_audits">
**설명:** 티켓의 감사 기록(읽기 전용 이력)을 가져옵니다.
**파라미터:**
@@ -205,19 +205,13 @@ Zendesk 통합을 사용하기 전에 다음을 확인하세요.
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Zendesk tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Zendesk capabilities
zendesk_agent = Agent(
role="Support Manager",
goal="Manage customer support tickets and provide excellent customer service",
backstory="An AI assistant specialized in customer support operations and ticket management.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Task to create a new support ticket
@@ -239,19 +233,12 @@ crew.kickoff()
### 특정 Zendesk 도구 필터링
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Zendesk tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
)
support_agent = Agent(
role="Customer Support Agent",
goal="Handle customer inquiries and resolve support issues efficiently",
backstory="An experienced support agent who specializes in ticket resolution and customer communication.",
tools=enterprise_tools
apps=['zendesk']
)
# Task to manage support workflow
@@ -273,17 +260,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
ticket_manager = Agent(
role="Ticket Manager",
goal="Manage support ticket workflows and ensure timely resolution",
backstory="An AI assistant that specializes in support ticket triage and workflow optimization.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Task to manage ticket lifecycle
@@ -310,17 +292,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
support_analyst = Agent(
role="Support Analyst",
goal="Analyze support metrics and generate insights for team performance",
backstory="An analytical AI that excels at extracting insights from support data and ticket patterns.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Complex task involving analytics and reporting

View File

@@ -43,7 +43,7 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
1. Acesse <Link href="https://app.crewai.com/crewai_plus/connectors">Integrações</Link>
2. Clique em <b>Conectar</b> no serviço desejado
3. Conclua o fluxo OAuth e conceda os escopos
4. Copie seu Token Enterprise na aba <b>Integração</b>
4. Copie seu Token Enterprise em <Link href="https://app.crewai.com/crewai_plus/settings/integrations">Configurações de Integração</Link>
<Frame>
![Token Enterprise](/images/enterprise/enterprise_action_auth_token.png)
@@ -60,23 +60,18 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
### Exemplo de uso
<Tip>
Todos os serviços autenticados ficam disponíveis como ferramentas. Adicione `CrewaiEnterpriseTools` ao agente e pronto.
Use a nova abordagem simplificada para integrar aplicativos empresariais. Simplesmente especifique o aplicativo e suas ações diretamente na configuração do Agent.
</Tip>
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="seu_enterprise_token"
)
print(enterprise_tools)
# Crie um agente com capacidades do Gmail
email_agent = Agent(
role="Gerente de Email",
goal="Gerenciar e organizar comunicações por email",
backstory="Assistente de IA especializado em gestão de emails",
tools=enterprise_tools
apps=['gmail', 'gmail/send_email'] # Usando nome canônico 'gmail'
)
email_task = Task(
@@ -92,19 +87,14 @@ Ferramentas & Integrações é o hub central para conectar aplicações de terce
### Filtrando ferramentas
```python
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
actions_list=["gmail_find_email"]
)
gmail_tool = enterprise_tools["gmail_find_email"]
from crewai import Agent, Task, Crew
# Crie agente com ações específicas do Gmail apenas
gmail_agent = Agent(
role="Gerente de Gmail",
goal="Gerenciar comunicações e notificações no Gmail",
backstory="Assistente de IA para coordenação de emails",
tools=[gmail_tool]
apps=['gmail/fetch_emails'] # Usando nome canônico com ação específica
)
notification_task = Task(

View File

@@ -25,7 +25,7 @@ Antes de usar a integração com o Asana, assegure-se de ter:
2. Encontre **Asana** na seção Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para gerenciamento de tarefas e projetos
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="ASANA_CREATE_COMMENT">
<Accordion title="asana/create_comment">
**Descrição:** Cria um comentário no Asana.
**Parâmetros:**
@@ -44,7 +44,7 @@ uv add crewai-tools
- `text` (string, obrigatório): Texto (exemplo: "Este é um comentário.").
</Accordion>
<Accordion title="ASANA_CREATE_PROJECT">
<Accordion title="asana/create_project">
**Descrição:** Cria um projeto no Asana.
**Parâmetros:**
@@ -54,7 +54,7 @@ uv add crewai-tools
- `notes` (string, opcional): Notas (exemplo: "Esses são itens que precisamos comprar.").
</Accordion>
<Accordion title="ASANA_GET_PROJECTS">
<Accordion title="asana/get_projects">
**Descrição:** Obtém uma lista de projetos do Asana.
**Parâmetros:**
@@ -62,14 +62,14 @@ uv add crewai-tools
- Opções: `default`, `true`, `false`
</Accordion>
<Accordion title="ASANA_GET_PROJECT_BY_ID">
<Accordion title="asana/get_project_by_id">
**Descrição:** Obtém um projeto pelo ID no Asana.
**Parâmetros:**
- `projectFilterId` (string, obrigatório): ID do Projeto.
</Accordion>
<Accordion title="ASANA_CREATE_TASK">
<Accordion title="asana/create_task">
**Descrição:** Cria uma tarefa no Asana.
**Parâmetros:**
@@ -83,7 +83,7 @@ uv add crewai-tools
- `gid` (string, opcional): ID Externo - Um ID da sua aplicação para associar esta tarefa. Você pode usar este ID para sincronizar atualizações com esta tarefa posteriormente.
</Accordion>
<Accordion title="ASANA_UPDATE_TASK">
<Accordion title="asana/update_task">
**Descrição:** Atualiza uma tarefa no Asana.
**Parâmetros:**
@@ -98,7 +98,7 @@ uv add crewai-tools
- `gid` (string, opcional): ID Externo - Um ID da sua aplicação para associar a tarefa. Você pode usar este ID para sincronizar atualizações posteriormente.
</Accordion>
<Accordion title="ASANA_GET_TASKS">
<Accordion title="asana/get_tasks">
**Descrição:** Obtém uma lista de tarefas no Asana.
**Parâmetros:**
@@ -108,21 +108,21 @@ uv add crewai-tools
- `completedSince` (string, opcional): Concluída desde - Retorna apenas tarefas que estejam incompletas ou que tenham sido concluídas desde este horário (timestamp ISO ou Unix). (exemplo: "2014-04-25T16:15:47-04:00").
</Accordion>
<Accordion title="ASANA_GET_TASKS_BY_ID">
<Accordion title="asana/get_tasks_by_id">
**Descrição:** Obtém uma lista de tarefas pelo ID no Asana.
**Parâmetros:**
- `taskId` (string, obrigatório): ID da Tarefa.
</Accordion>
<Accordion title="ASANA_GET_TASK_BY_EXTERNAL_ID">
<Accordion title="asana/get_task_by_external_id">
**Descrição:** Obtém uma tarefa pelo ID externo no Asana.
**Parâmetros:**
- `gid` (string, obrigatório): ID Externo - O ID que esta tarefa está associada ou sincronizada, de sua aplicação.
</Accordion>
<Accordion title="ASANA_ADD_TASK_TO_SECTION">
<Accordion title="asana/add_task_to_section">
**Descrição:** Adiciona uma tarefa a uma seção no Asana.
**Parâmetros:**
@@ -132,14 +132,14 @@ uv add crewai-tools
- `afterTaskId` (string, opcional): Após a Tarefa - O ID de uma tarefa nesta seção após a qual esta tarefa será inserida. Não pode ser usada junto com Before Task ID. (exemplo: "1204619611402340").
</Accordion>
<Accordion title="ASANA_GET_TEAMS">
<Accordion title="asana/get_teams">
**Descrição:** Obtém uma lista de equipes no Asana.
**Parâmetros:**
- `workspace` (string, obrigatório): Área de trabalho - Retorna as equipes nesta área de trabalho visíveis para o usuário autorizado.
</Accordion>
<Accordion title="ASANA_GET_WORKSPACES">
<Accordion title="asana/get_workspaces">
**Descrição:** Obtém uma lista de áreas de trabalho do Asana.
**Parâmetros:** Nenhum obrigatório.
@@ -152,19 +152,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Asana tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Asana capabilities
asana_agent = Agent(
role="Project Manager",
goal="Manage tasks and projects in Asana efficiently",
backstory="An AI assistant specialized in project management and task coordination.",
tools=[enterprise_tools]
apps=['asana']
)
# Task to create a new project
@@ -186,19 +180,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Asana
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Asana tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["asana_create_task", "asana_update_task", "asana_get_tasks"]
)
task_manager_agent = Agent(
role="Task Manager",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and management.",
tools=enterprise_tools
apps=['asana']
)
# Task to create and assign a task
@@ -220,17 +207,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordinate project activities and track progress",
backstory="An experienced project coordinator who ensures projects run smoothly.",
tools=[enterprise_tools]
apps=['asana']
)
# Complex task involving multiple Asana operations

View File

@@ -25,7 +25,7 @@ Antes de utilizar a integração com o Box, assegure-se de que você possui:
2. Encontre **Box** na seção de Integrações de Autenticação
3. Clique em **Conectar** e conclua o fluxo de OAuth
4. Conceda as permissões necessárias para gerenciamento de arquivos e pastas
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o pacote necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="BOX_SAVE_FILE">
<Accordion title="box/save_file">
**Descrição:** Salva um arquivo a partir de uma URL no Box.
**Parâmetros:**
@@ -52,7 +52,7 @@ uv add crewai-tools
- `file` (string, obrigatório): URL do arquivo - Os arquivos devem ter menos de 50MB. (exemplo: "https://picsum.photos/200/300").
</Accordion>
<Accordion title="BOX_SAVE_FILE_FROM_OBJECT">
<Accordion title="box/save_file_from_object">
**Descrição:** Salva um arquivo no Box.
**Parâmetros:**
@@ -61,14 +61,14 @@ uv add crewai-tools
- `folder` (string, opcional): Pasta - Use as configurações de workflow do Connect Portal para permitir que usuários escolham o destino da pasta. Caso em branco, o padrão é a pasta raiz do usuário.
</Accordion>
<Accordion title="BOX_GET_FILE_BY_ID">
<Accordion title="box/get_file_by_id">
**Descrição:** Obtém um arquivo pelo ID no Box.
**Parâmetros:**
- `fileId` (string, obrigatório): ID do arquivo - Identificador único que representa um arquivo. (exemplo: "12345").
</Accordion>
<Accordion title="BOX_LIST_FILES">
<Accordion title="box/list_files">
**Descrição:** Lista arquivos no Box.
**Parâmetros:**
@@ -93,7 +93,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_CREATE_FOLDER">
<Accordion title="box/create_folder">
**Descrição:** Cria uma pasta no Box.
**Parâmetros:**
@@ -106,7 +106,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_MOVE_FOLDER">
<Accordion title="box/move_folder">
**Descrição:** Move uma pasta no Box.
**Parâmetros:**
@@ -120,14 +120,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_GET_FOLDER_BY_ID">
<Accordion title="box/get_folder_by_id">
**Descrição:** Obtém uma pasta pelo ID no Box.
**Parâmetros:**
- `folderId` (string, obrigatório): ID da pasta - Identificador único que representa uma pasta. (exemplo: "0").
</Accordion>
<Accordion title="BOX_SEARCH_FOLDERS">
<Accordion title="box/search_folders">
**Descrição:** Pesquisa pastas no Box.
**Parâmetros:**
@@ -152,7 +152,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="BOX_DELETE_FOLDER">
<Accordion title="box/delete_folder">
**Descrição:** Exclui uma pasta no Box.
**Parâmetros:**
@@ -167,19 +167,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Box tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Box capabilities
box_agent = Agent(
role="Document Manager",
goal="Manage files and folders in Box efficiently",
backstory="An AI assistant specialized in document management and file organization.",
tools=[enterprise_tools]
apps=['box']
)
# Task to create a folder structure
@@ -201,19 +195,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Box
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Box tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["box_create_folder", "box_save_file", "box_list_files"]
)
file_organizer_agent = Agent(
role="File Organizer",
goal="Organize and manage file storage efficiently",
backstory="An AI assistant that focuses on file organization and storage management.",
tools=enterprise_tools
apps=['box']
)
# Task to organize files
@@ -235,17 +222,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
file_manager = Agent(
role="File Manager",
goal="Maintain organized file structure and manage document lifecycle",
backstory="An experienced file manager who ensures documents are properly organized and accessible.",
tools=[enterprise_tools]
apps=['box']
)
# Complex task involving multiple Box operations

View File

@@ -25,7 +25,7 @@ Antes de utilizar a integração com o ClickUp, certifique-se de que você possu
2. Encontre **ClickUp** na seção Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para gerenciamento de tarefas e projetos
5. Copie seu Token Enterprise das [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="CLICKUP_SEARCH_TASKS">
<Accordion title="clickup/search_tasks">
**Descrição:** Busque tarefas no ClickUp utilizando filtros avançados.
**Parâmetros:**
@@ -61,7 +61,7 @@ uv add crewai-tools
Campos disponíveis: `space_ids%5B%5D`, `project_ids%5B%5D`, `list_ids%5B%5D`, `statuses%5B%5D`, `include_closed`, `assignees%5B%5D`, `tags%5B%5D`, `due_date_gt`, `due_date_lt`, `date_created_gt`, `date_created_lt`, `date_updated_gt`, `date_updated_lt`
</Accordion>
<Accordion title="CLICKUP_GET_TASK_IN_LIST">
<Accordion title="clickup/get_task_in_list">
**Descrição:** Obtenha tarefas em uma lista específica do ClickUp.
**Parâmetros:**
@@ -69,7 +69,7 @@ uv add crewai-tools
- `taskFilterFormula` (string, opcional): Busque tarefas que correspondam aos filtros especificados. Por exemplo: name=task1.
</Accordion>
<Accordion title="CLICKUP_CREATE_TASK">
<Accordion title="clickup/create_task">
**Descrição:** Crie uma tarefa no ClickUp.
**Parâmetros:**
@@ -82,7 +82,7 @@ uv add crewai-tools
- `additionalFields` (string, opcional): Campos Adicionais - Especifique campos adicionais para incluir nesta tarefa em formato JSON.
</Accordion>
<Accordion title="CLICKUP_UPDATE_TASK">
<Accordion title="clickup/update_task">
**Descrição:** Atualize uma tarefa no ClickUp.
**Parâmetros:**
@@ -96,49 +96,49 @@ uv add crewai-tools
- `additionalFields` (string, opcional): Campos Adicionais - Especifique campos adicionais para incluir nesta tarefa em formato JSON.
</Accordion>
<Accordion title="CLICKUP_DELETE_TASK">
<Accordion title="clickup/delete_task">
**Descrição:** Exclua uma tarefa no ClickUp.
**Parâmetros:**
- `taskId` (string, obrigatório): ID da tarefa - O ID da tarefa a ser excluída.
</Accordion>
<Accordion title="CLICKUP_GET_LIST">
<Accordion title="clickup/get_list">
**Descrição:** Obtenha informações da Lista no ClickUp.
**Parâmetros:**
- `spaceId` (string, obrigatório): ID do Espaço - O ID do espaço que contém as listas.
</Accordion>
<Accordion title="CLICKUP_GET_CUSTOM_FIELDS_IN_LIST">
<Accordion title="clickup/get_custom_fields_in_list">
**Descrição:** Obtenha Campos Personalizados em uma Lista no ClickUp.
**Parâmetros:**
- `listId` (string, obrigatório): ID da Lista - O ID da lista da qual obter os campos personalizados.
</Accordion>
<Accordion title="CLICKUP_GET_ALL_FIELDS_IN_LIST">
<Accordion title="clickup/get_all_fields_in_list">
**Descrição:** Obtenha Todos os Campos em uma Lista no ClickUp.
**Parâmetros:**
- `listId` (string, obrigatório): ID da Lista - O ID da lista da qual obter todos os campos.
</Accordion>
<Accordion title="CLICKUP_GET_SPACE">
<Accordion title="clickup/get_space">
**Descrição:** Obtenha informações do Espaço no ClickUp.
**Parâmetros:**
- `spaceId` (string, opcional): ID do Espaço - O ID do espaço a ser recuperado.
</Accordion>
<Accordion title="CLICKUP_GET_FOLDERS">
<Accordion title="clickup/get_folders">
**Descrição:** Obtenha Pastas no ClickUp.
**Parâmetros:**
- `spaceId` (string, obrigatório): ID do Espaço - O ID do espaço que contém as pastas.
</Accordion>
<Accordion title="CLICKUP_GET_MEMBER">
<Accordion title="clickup/get_member">
**Descrição:** Obtenha informações de Membro no ClickUp.
**Parâmetros:** Nenhum obrigatório.
@@ -151,19 +151,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (ClickUp tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with ClickUp capabilities
clickup_agent = Agent(
role="Task Manager",
goal="Manage tasks and projects in ClickUp efficiently",
backstory="An AI assistant specialized in task management and productivity coordination.",
tools=[enterprise_tools]
apps=['clickup']
)
# Task to create a new task
@@ -185,19 +179,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do ClickUp
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific ClickUp tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["clickup_create_task", "clickup_update_task", "clickup_search_tasks"]
)
task_coordinator = Agent(
role="Task Coordinator",
goal="Create and manage tasks efficiently",
backstory="An AI assistant that focuses on task creation and status management.",
tools=enterprise_tools
apps=['clickup']
)
# Task to manage task workflow
@@ -219,17 +206,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_manager = Agent(
role="Project Manager",
goal="Coordinate project activities and track team productivity",
backstory="An experienced project manager who ensures projects are delivered on time.",
tools=[enterprise_tools]
apps=['clickup']
)
# Complex task involving multiple ClickUp operations
@@ -256,17 +238,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_analyst = Agent(
role="Task Analyst",
goal="Analyze task patterns and optimize team productivity",
backstory="An AI assistant that analyzes task data to improve team efficiency.",
tools=[enterprise_tools]
apps=['clickup']
)
# Task to analyze and optimize task distribution

View File

@@ -25,7 +25,7 @@ Antes de usar a integração do GitHub, assegure-se de ter:
2. Encontre **GitHub** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para gerenciamento de repositório e issues
5. Copie seu Token Enterprise nas [Configurações de Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o pacote necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="GITHUB_CREATE_ISSUE">
<Accordion title="github/create_issue">
**Descrição:** Cria uma issue no GitHub.
**Parâmetros:**
@@ -47,7 +47,7 @@ uv add crewai-tools
- `assignees` (string, opcional): Responsáveis - Especifique o login dos responsáveis no GitHub como um array de strings para esta issue. (exemplo: `["octocat"]`).
</Accordion>
<Accordion title="GITHUB_UPDATE_ISSUE">
<Accordion title="github/update_issue">
**Descrição:** Atualiza uma issue no GitHub.
**Parâmetros:**
@@ -61,7 +61,7 @@ uv add crewai-tools
- Opções: `open`, `closed`
</Accordion>
<Accordion title="GITHUB_GET_ISSUE_BY_NUMBER">
<Accordion title="github/get_issue_by_number">
**Descrição:** Obtém uma issue pelo número no GitHub.
**Parâmetros:**
@@ -70,7 +70,7 @@ uv add crewai-tools
- `issue_number` (string, obrigatório): Número da Issue - Especifique o número da issue a ser buscada.
</Accordion>
<Accordion title="GITHUB_LOCK_ISSUE">
<Accordion title="github/lock_issue">
**Descrição:** Bloqueia uma issue no GitHub.
**Parâmetros:**
@@ -81,7 +81,7 @@ uv add crewai-tools
- Opções: `off-topic`, `too heated`, `resolved`, `spam`
</Accordion>
<Accordion title="GITHUB_SEARCH_ISSUE">
<Accordion title="github/search_issue">
**Descrição:** Busca por issues no GitHub.
**Parâmetros:**
@@ -108,7 +108,7 @@ uv add crewai-tools
Campos disponíveis: `assignee`, `creator`, `mentioned`, `labels`
</Accordion>
<Accordion title="GITHUB_CREATE_RELEASE">
<Accordion title="github/create_release">
**Descrição:** Cria um release no GitHub.
**Parâmetros:**
@@ -126,7 +126,7 @@ uv add crewai-tools
- Opções: `true`, `false`
</Accordion>
<Accordion title="GITHUB_UPDATE_RELEASE">
<Accordion title="github/update_release">
**Descrição:** Atualiza um release no GitHub.
**Parâmetros:**
@@ -145,7 +145,7 @@ uv add crewai-tools
- Opções: `true`, `false`
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_ID">
<Accordion title="github/get_release_by_id">
**Descrição:** Obtém um release por ID no GitHub.
**Parâmetros:**
@@ -154,7 +154,7 @@ uv add crewai-tools
- `id` (string, obrigatório): ID do Release - Especifique o ID do release a ser recuperado.
</Accordion>
<Accordion title="GITHUB_GET_RELEASE_BY_TAG_NAME">
<Accordion title="github/get_release_by_tag_name">
**Descrição:** Obtém um release pelo nome da tag no GitHub.
**Parâmetros:**
@@ -163,7 +163,7 @@ uv add crewai-tools
- `tag_name` (string, obrigatório): Nome - Especifique o nome da tag do release a ser recuperado. (exemplo: "v1.0.0").
</Accordion>
<Accordion title="GITHUB_DELETE_RELEASE">
<Accordion title="github/delete_release">
**Descrição:** Exclui um release no GitHub.
**Parâmetros:**
@@ -179,19 +179,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (GitHub tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with GitHub capabilities
github_agent = Agent(
role="Repository Manager",
goal="Manage GitHub repositories, issues, and releases efficiently",
backstory="An AI assistant specialized in repository management and issue tracking.",
tools=[enterprise_tools]
apps=['github']
)
# Task to create a new issue
@@ -213,19 +207,12 @@ crew.kickoff()
### Filtrando Ferramentas GitHub Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific GitHub tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["github_create_issue", "github_update_issue", "github_search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Create and manage GitHub issues efficiently",
backstory="An AI assistant that focuses on issue tracking and management.",
tools=enterprise_tools
apps=['github']
)
# Task to manage issue workflow
@@ -247,17 +234,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
release_manager = Agent(
role="Release Manager",
goal="Manage software releases and versioning",
backstory="An experienced release manager who handles version control and release processes.",
tools=[enterprise_tools]
apps=['github']
)
# Task to create a new release
@@ -284,17 +266,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Track and coordinate project issues and development progress",
backstory="An AI assistant that helps coordinate development work and track project progress.",
tools=[enterprise_tools]
apps=['github']
)
# Complex task involving multiple GitHub operations

View File

@@ -25,7 +25,7 @@ Antes de usar a integração com o Gmail, certifique-se de que você possui:
2. Encontre **Gmail** na seção de Integrações de Autenticação
3. Clique em **Conectar** e conclua o fluxo OAuth
4. Conceda as permissões necessárias para o gerenciamento de e-mail e contato
5. Copie seu Token Empresarial em [Configurações de Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Empresarial em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="GMAIL_SEND_EMAIL">
<Accordion title="gmail/send_email">
**Descrição:** Envia um e-mail pelo Gmail.
**Parâmetros:**
@@ -59,7 +59,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_GET_EMAIL_BY_ID">
<Accordion title="gmail/get_email_by_id">
**Descrição:** Obtém um e-mail pelo ID no Gmail.
**Parâmetros:**
@@ -67,7 +67,7 @@ uv add crewai-tools
- `messageId` (string, obrigatório): ID da Mensagem - Especifique o ID da mensagem a ser recuperada.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_EMAIL">
<Accordion title="gmail/fetch_emails">
**Descrição:** Pesquisa e-mails no Gmail usando filtros avançados.
**Parâmetros:**
@@ -98,7 +98,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_DELETE_EMAIL">
<Accordion title="gmail/delete_email">
**Descrição:** Exclui um e-mail no Gmail.
**Parâmetros:**
@@ -106,7 +106,7 @@ uv add crewai-tools
- `messageId` (string, obrigatório): ID da Mensagem - Especifique o ID da mensagem para enviar para a lixeira.
</Accordion>
<Accordion title="GMAIL_CREATE_A_CONTACT">
<Accordion title="gmail/create_a_contact">
**Descrição:** Cria um contato no Gmail.
**Parâmetros:**
@@ -126,28 +126,28 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GMAIL_GET_CONTACT_BY_RESOURCE_NAME">
<Accordion title="gmail/get_contact_by_resource_name">
**Descrição:** Obtém um contato pelo nome do recurso no Gmail.
**Parâmetros:**
- `resourceName` (string, obrigatório): Nome do Recurso - Especifique o nome do recurso do contato a ser buscado.
</Accordion>
<Accordion title="GMAIL_SEARCH_FOR_CONTACT">
<Accordion title="gmail/search_for_contact">
**Descrição:** Pesquisa um contato no Gmail.
**Parâmetros:**
- `searchTerm` (string, obrigatório): Termo - Especifique um termo para buscar correspondências aproximadas ou exatas nos campos nome, apelido, endereços de e-mail, números de telefone ou organizações do contato.
</Accordion>
<Accordion title="GMAIL_DELETE_CONTACT">
<Accordion title="gmail/delete_contact">
**Descrição:** Exclui um contato no Gmail.
**Parâmetros:**
- `resourceName` (string, obrigatório): Nome do Recurso - Especifique o nome do recurso do contato a ser excluído.
</Accordion>
<Accordion title="GMAIL_CREATE_DRAFT">
<Accordion title="gmail/create_draft">
**Descrição:** Cria um rascunho no Gmail.
**Parâmetros:**
@@ -177,19 +177,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Gmail tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Gmail capabilities
gmail_agent = Agent(
role="Email Manager",
goal="Manage email communications and contacts efficiently",
backstory="An AI assistant specialized in email management and communication.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to send a follow-up email
@@ -211,19 +205,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Gmail
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Gmail tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["gmail_send_email", "gmail_search_for_email", "gmail_create_draft"]
)
email_coordinator = Agent(
role="Email Coordinator",
goal="Coordinate email communications and manage drafts",
backstory="An AI assistant that focuses on email coordination and draft management.",
tools=enterprise_tools
apps=['gmail']
)
# Task to prepare and send emails
@@ -245,17 +232,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
contact_manager = Agent(
role="Contact Manager",
goal="Manage and organize email contacts efficiently",
backstory="An experienced contact manager who maintains organized contact databases.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to manage contacts
@@ -281,17 +263,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
email_analyst = Agent(
role="Email Analyst",
goal="Analyze email patterns and provide insights",
backstory="An AI assistant that analyzes email data to provide actionable insights.",
tools=[enterprise_tools]
apps=['gmail']
)
# Task to analyze email patterns
@@ -317,17 +294,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Email Workflow Manager",
goal="Automate email workflows and responses",
backstory="An AI assistant that manages automated email workflows and responses.",
tools=[enterprise_tools]
apps=['gmail']
)
# Complex task involving multiple Gmail operations

View File

@@ -25,7 +25,7 @@ Antes de usar a integração com o Google Calendar, certifique-se de ter:
2. Encontre **Google Calendar** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso ao calendário e contatos
5. Copie seu Token Enterprise nas [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="GOOGLE_CALENDAR_CREATE_EVENT">
<Accordion title="google_calendar/create_event">
**Descrição:** Cria um evento no Google Calendar.
**Parâmetros:**
@@ -51,7 +51,7 @@ uv add crewai-tools
- `includeMeetLink` (boolean, opcional): Incluir link do Google Meet? Cria automaticamente um link para conferência Google Meet para este evento.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_UPDATE_EVENT">
<Accordion title="google_calendar/update_event">
**Descrição:** Atualiza um evento existente no Google Calendar.
**Parâmetros:**
@@ -65,7 +65,7 @@ uv add crewai-tools
- `eventDescription` (string, opcional): Descrição do evento.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_EVENTS">
<Accordion title="google_calendar/view_events">
**Descrição:** Lista eventos do Google Calendar.
**Parâmetros:**
@@ -74,7 +74,7 @@ uv add crewai-tools
- `before` (string, opcional): Antes Filtra eventos que terminam antes da data fornecida (Unix em milissegundos ou timestamp ISO). (exemplo: "2025-04-12T10:00:00Z ou 1712908800000").
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_EVENT_BY_ID">
<Accordion title="google_calendar/get_event_by_id">
**Descrição:** Obtém um evento específico pelo ID no Google Calendar.
**Parâmetros:**
@@ -82,7 +82,7 @@ uv add crewai-tools
- `calendar` (string, opcional): Calendário Use as Configurações de Workflow do Connect Portal para permitir que o usuário selecione em qual calendário o evento será adicionado. Padrão para o calendário principal do usuário se deixado em branco.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_DELETE_EVENT">
<Accordion title="google_calendar/delete_event">
**Descrição:** Exclui um evento do Google Calendar.
**Parâmetros:**
@@ -90,7 +90,7 @@ uv add crewai-tools
- `calendar` (string, opcional): Calendário Use as Configurações de Workflow do Connect Portal para permitir que o usuário selecione em qual calendário o evento será adicionado. Padrão para o calendário principal do usuário se deixado em branco.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_CONTACTS">
<Accordion title="google_calendar/get_contacts">
**Descrição:** Obtém contatos do Google Calendar.
**Parâmetros:**
@@ -102,14 +102,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_CONTACTS">
<Accordion title="google_calendar/search_contacts">
**Descrição:** Pesquisa contatos no Google Calendar.
**Parâmetros:**
- `query` (string, opcional): Termo de pesquisa para buscar contatos.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_DIRECTORY_PEOPLE">
<Accordion title="google_calendar/list_directory_people">
**Descrição:** Lista pessoas do diretório.
**Parâmetros:**
@@ -121,7 +121,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_DIRECTORY_PEOPLE">
<Accordion title="google_calendar/search_directory_people">
**Descrição:** Pesquisa pessoas no diretório.
**Parâmetros:**
@@ -134,7 +134,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_LIST_OTHER_CONTACTS">
<Accordion title="google_calendar/list_other_contacts">
**Descrição:** Lista outros contatos.
**Parâmetros:**
@@ -146,14 +146,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_CALENDAR_SEARCH_OTHER_CONTACTS">
<Accordion title="google_calendar/search_other_contacts">
**Descrição:** Pesquisa outros contatos.
**Parâmetros:**
- `query` (string, opcional): Termo de pesquisa para buscar contatos.
</Accordion>
<Accordion title="GOOGLE_CALENDAR_GET_AVAILABILITY">
<Accordion title="google_calendar/get_availability">
**Descrição:** Obtém informações de disponibilidade para calendários.
**Parâmetros:**
@@ -180,19 +180,15 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obter ferramentas empresariais (as ferramentas do Google Calendar serão incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Criar um agente com capacidades do Google Calendar
calendar_agent = Agent(
role="Schedule Manager",
goal="Gerenciar eventos de calendário e agendamento de maneira eficiente",
backstory="Um assistente de IA especializado em gerenciamento de agendas e coordenação de horários.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Tarefa de criação de reunião
@@ -214,19 +210,16 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Calendário
```python
from crewai_tools import CrewaiEnterpriseTools
# Obter apenas ferramentas específicas do Google Calendar
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_calendar_create_event", "google_calendar_list_events", "google_calendar_get_availability"]
actions_list=["google_calendar/create_event", "google_calendar/view_events", "google_calendar/get_availability"]
)
meeting_coordinator = Agent(
role="Meeting Coordinator",
goal="Coordenar reuniões e verificar disponibilidade",
backstory="Um assistente de IA que foca em agendamento de reuniões e gerenciamento de disponibilidade.",
tools=enterprise_tools
apps=['google_calendar']
)
# Tarefa para agendar reunião com verificação de disponibilidade
@@ -248,17 +241,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
event_manager = Agent(
role="Event Manager",
goal="Gerenciar e atualizar eventos de calendário de forma eficiente",
backstory="Um experiente gestor de eventos responsável pela logística e atualizações dos eventos.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Tarefa para gerenciar atualizações de eventos
@@ -284,17 +272,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
availability_coordinator = Agent(
role="Availability Coordinator",
goal="Coordenar disponibilidade e gerenciar contatos para agendamento",
backstory="Um assistente de IA que se especializa em gerenciamento de disponibilidade e coordenação de contatos.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Tarefa de coordenação de disponibilidade
@@ -321,17 +304,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
scheduling_automator = Agent(
role="Scheduling Automator",
goal="Automatizar workflows de agendamento e gerenciamento de calendários",
backstory="Um assistente de IA que automatiza cenários complexos de agendamento e workflows de agenda.",
tools=[enterprise_tools]
apps=['google_calendar']
)
# Tarefa de automação de agendamento complexo

View File

@@ -0,0 +1,286 @@
---
title: Integração Google Contacts
description: "Gerenciamento de contatos e diretório com integração Google Contacts para CrewAI."
icon: "address-book"
mode: "wide"
---
## Visão Geral
Permita que seus agentes gerenciem informações de contatos e diretório através do Google Contacts. Acesse contatos pessoais, pesquise pessoas no diretório, crie e atualize informações de contato, e gerencie grupos de contatos com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Google Contacts, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Google com acesso ao Google Contacts
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Google Contacts
### 1. Conecte sua Conta Google
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Google Contacts** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a contatos e diretório
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="google_contacts/get_contacts">
**Descrição:** Recuperar contatos do usuário do Google Contacts.
**Parâmetros:**
- `pageSize` (integer, opcional): Número de contatos a retornar (máx 1000). Mínimo: 1, Máximo: 1000
- `pageToken` (string, opcional): O token da página a recuperar.
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
- `sortOrder` (string, opcional): A ordem na qual as conexões devem ser classificadas. Opções: LAST_MODIFIED_ASCENDING, LAST_MODIFIED_DESCENDING, FIRST_NAME_ASCENDING, LAST_NAME_ASCENDING
</Accordion>
<Accordion title="google_contacts/search_contacts">
**Descrição:** Pesquisar por contatos usando uma string de consulta.
**Parâmetros:**
- `query` (string, obrigatório): String de consulta de pesquisa
- `readMask` (string, obrigatório): Campos a ler (ex: 'names,emailAddresses,phoneNumbers')
- `pageSize` (integer, opcional): Número de resultados a retornar. Mínimo: 1, Máximo: 30
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
- `sources` (array, opcional): As fontes para pesquisar. Opções: READ_SOURCE_TYPE_CONTACT, READ_SOURCE_TYPE_PROFILE. Padrão: READ_SOURCE_TYPE_CONTACT
</Accordion>
<Accordion title="google_contacts/list_directory_people">
**Descrição:** Listar pessoas no diretório do usuário autenticado.
**Parâmetros:**
- `sources` (array, obrigatório): Fontes de diretório para pesquisar. Opções: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE, DIRECTORY_SOURCE_TYPE_DOMAIN_CONTACT. Padrão: DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE
- `pageSize` (integer, opcional): Número de pessoas a retornar. Mínimo: 1, Máximo: 1000
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
- `readMask` (string, opcional): Campos a ler (ex: 'names,emailAddresses')
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
- `mergeSources` (array, opcional): Dados adicionais para mesclar nas respostas de pessoas do diretório. Opções: CONTACT
</Accordion>
<Accordion title="google_contacts/search_directory_people">
**Descrição:** Pesquisar por pessoas no diretório.
**Parâmetros:**
- `query` (string, obrigatório): Consulta de pesquisa
- `sources` (string, obrigatório): Fontes de diretório (use 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE')
- `pageSize` (integer, opcional): Número de resultados a retornar
- `readMask` (string, opcional): Campos a ler
</Accordion>
<Accordion title="google_contacts/list_other_contacts">
**Descrição:** Listar outros contatos (não nos contatos pessoais do usuário).
**Parâmetros:**
- `pageSize` (integer, opcional): Número de contatos a retornar. Mínimo: 1, Máximo: 1000
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
- `readMask` (string, opcional): Campos a ler
- `requestSyncToken` (boolean, opcional): Se a resposta deve incluir um token de sincronização. Padrão: false
</Accordion>
<Accordion title="google_contacts/search_other_contacts">
**Descrição:** Pesquisar outros contatos.
**Parâmetros:**
- `query` (string, obrigatório): Consulta de pesquisa
- `readMask` (string, obrigatório): Campos a ler (ex: 'names,emailAddresses')
- `pageSize` (integer, opcional): Número de resultados
</Accordion>
<Accordion title="google_contacts/get_person">
**Descrição:** Obter informações de contato de uma única pessoa por nome do recurso.
**Parâmetros:**
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a obter (ex: 'people/c123456789')
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/create_contact">
**Descrição:** Criar um novo contato no catálogo de endereços do usuário.
**Parâmetros:**
- `names` (array, opcional): Nomes da pessoa. Cada item é um objeto com `givenName` (string), `familyName` (string), `displayName` (string).
- `emailAddresses` (array, opcional): Endereços de email. Cada item é um objeto com `value` (string, endereço de email) e `type` (string, 'home', 'work', 'other', padrão 'other').
- `phoneNumbers` (array, opcional): Números de telefone. Cada item é um objeto com `value` (string, número de telefone) e `type` (string, 'home', 'work', 'mobile', 'other', padrão 'other').
- `addresses` (array, opcional): Endereços postais. Cada item é um objeto com `formattedValue` (string, endereço formatado) e `type` (string, 'home', 'work', 'other', padrão 'other').
- `organizations` (array, opcional): Organizações/empresas. Cada item é um objeto com `name` (string, nome da organização), `title` (string, cargo) e `type` (string, 'work', 'other', padrão 'work').
</Accordion>
<Accordion title="google_contacts/update_contact">
**Descrição:** Atualizar informações de um contato existente.
**Parâmetros:**
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a atualizar (ex: 'people/c123456789').
- `updatePersonFields` (string, obrigatório): Campos a atualizar (ex: 'names,emailAddresses,phoneNumbers').
- `names` (array, opcional): Nomes da pessoa. Cada item é um objeto com `givenName` (string), `familyName` (string), `displayName` (string).
- `emailAddresses` (array, opcional): Endereços de email. Cada item é um objeto com `value` (string, endereço de email) e `type` (string, 'home', 'work', 'other').
- `phoneNumbers` (array, opcional): Números de telefone. Cada item é um objeto com `value` (string, número de telefone) e `type` (string, 'home', 'work', 'mobile', 'other').
</Accordion>
<Accordion title="google_contacts/delete_contact">
**Descrição:** Excluir um contato do catálogo de endereços do usuário.
**Parâmetros:**
- `resourceName` (string, obrigatório): O nome do recurso da pessoa a excluir (ex: 'people/c123456789').
</Accordion>
<Accordion title="google_contacts/batch_get_people">
**Descrição:** Obter informações sobre várias pessoas em uma única solicitação.
**Parâmetros:**
- `resourceNames` (array, obrigatório): Nomes de recursos das pessoas a obter (máx 200 itens).
- `personFields` (string, opcional): Campos a incluir (ex: 'names,emailAddresses,phoneNumbers'). Padrão: names,emailAddresses,phoneNumbers
</Accordion>
<Accordion title="google_contacts/list_contact_groups">
**Descrição:** Listar os grupos de contatos (rótulos) do usuário.
**Parâmetros:**
- `pageSize` (integer, opcional): Número de grupos de contatos a retornar. Mínimo: 1, Máximo: 1000
- `pageToken` (string, opcional): Token especificando qual página de resultado retornar.
- `groupFields` (string, opcional): Campos a incluir (ex: 'name,memberCount,clientData'). Padrão: name,memberCount
</Accordion>
<Accordion title="google_contacts/get_contact_group">
**Descrição:** Obter um grupo de contatos específico por nome do recurso.
**Parâmetros:**
- `resourceName` (string, obrigatório): O nome do recurso do grupo de contatos (ex: 'contactGroups/myContactGroup').
- `maxMembers` (integer, opcional): Número máximo de membros a incluir. Mínimo: 0, Máximo: 20000
- `groupFields` (string, opcional): Campos a incluir (ex: 'name,memberCount,clientData'). Padrão: name,memberCount
</Accordion>
<Accordion title="google_contacts/create_contact_group">
**Descrição:** Criar um novo grupo de contatos (rótulo).
**Parâmetros:**
- `name` (string, obrigatório): O nome do grupo de contatos.
- `clientData` (array, opcional): Dados específicos do cliente. Cada item é um objeto com `key` (string) e `value` (string).
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Google Contacts
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Google Contacts
contacts_agent = Agent(
role="Gerenciador de Contatos",
goal="Gerenciar Google Contacts de forma eficiente",
backstory="Um assistente IA especializado em gerenciamento e organização de contatos.",
apps=['google_contacts'] # Todas as ações do Google Contacts estarão disponíveis
)
# Tarefa para criar um novo contato
create_contact_task = Task(
description="Criar um novo contato chamado 'João Silva' com email 'joao.silva@exemplo.com' e telefone '11-98765-4321'",
agent=contacts_agent,
expected_output="Novo contato criado com sucesso"
)
# Execute a tarefa
crew = Crew(
agents=[contacts_agent],
tasks=[create_contact_task]
)
crew.kickoff()
```
### Pesquisando e Listando Contatos
```python
from crewai import Agent, Task, Crew
# Crie um agente focado em pesquisar contatos
search_agent = Agent(
role="Pesquisador de Contatos",
goal="Encontrar e recuperar informações de contato",
backstory="Um assistente IA habilidoso em pesquisar e listar contatos.",
apps=['google_contacts/search_contacts', 'google_contacts/get_contacts']
)
# Tarefa para pesquisar contatos
search_task = Task(
description="Pesquisar por contatos chamados 'Maria' e listar seus endereços de email e números de telefone.",
agent=search_agent,
expected_output="Lista de contatos correspondentes a 'Maria' com seus detalhes de email e telefone."
)
crew = Crew(
agents=[search_agent],
tasks=[search_task]
)
crew.kickoff()
```
### Gerenciando Grupos de Contatos
```python
from crewai import Agent, Task, Crew
# Crie um agente para gerenciar grupos de contatos
group_manager = Agent(
role="Organizador de Grupos de Contatos",
goal="Organizar contatos em grupos e gerenciar membros dos grupos",
backstory="Um assistente IA especializado em criar e gerenciar grupos do Google Contacts.",
apps=['google_contacts/create_contact_group', 'google_contacts/list_contact_groups']
)
# Tarefa para criar um novo grupo de contatos
create_group_task = Task(
description="Criar um novo grupo de contatos chamado 'Equipe de Marketing' e listar todos os grupos existentes.",
agent=group_manager,
expected_output="Novo grupo de contatos 'Equipe de Marketing' criado e lista de todos os grupos retornada."
)
crew = Crew(
agents=[group_manager],
tasks=[create_group_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso a contatos e diretório.
- Verifique se a conexão OAuth inclui todos os escopos necessários para a API Google People.
**Problemas de Criação/Atualização de Contatos**
- Certifique-se de que campos obrigatórios como `email` sejam fornecidos para criação de contatos.
- Verifique se o `resourceName` está correto ao atualizar ou excluir contatos.
- Confirme se o formato dos dados para `names`, `emailAddresses`, `phoneNumbers`, etc., corresponde às especificações da API.
**Problemas de Pesquisa e Filtro**
- Certifique-se de que os parâmetros de `query` e `readMask` estejam especificados corretamente para `search_contacts` e `search_other_contacts`.
- Para pesquisas de diretório, certifique-se de que `sources` esteja definido corretamente (ex: 'DIRECTORY_SOURCE_TYPE_DOMAIN_PROFILE').
**Gerenciamento de Grupos de Contatos**
- Ao criar um grupo de contatos, certifique-se de que o `name` seja fornecido.
- Para `get_contact_group`, certifique-se de que o `resourceName` esteja correto.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Contacts.
</Card>

View File

@@ -0,0 +1,228 @@
---
title: Integração Google Docs
description: "Criação e edição de documentos com integração Google Docs para CrewAI."
icon: "file-lines"
mode: "wide"
---
## Visão Geral
Permita que seus agentes criem, editem e gerenciem documentos do Google Docs com manipulação de texto e formatação. Automatize a criação de documentos, insira e substitua texto, gerencie intervalos de conteúdo e simplifique seus fluxos de trabalho de documentos com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Google Docs, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Google com acesso ao Google Docs
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Google Docs
### 1. Conecte sua Conta Google
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Google Docs** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a documentos
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="google_docs/create_document">
**Descrição:** Criar um novo documento do Google.
**Parâmetros:**
- `title` (string, opcional): O título para o novo documento.
</Accordion>
<Accordion title="google_docs/get_document">
**Descrição:** Obter o conteúdo e metadados de um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a recuperar.
- `includeTabsContent` (boolean, opcional): Se deve incluir conteúdo de abas. Padrão: false
- `suggestionsViewMode` (string, opcional): O modo de visualização de sugestões a aplicar ao documento. Opções: DEFAULT_FOR_CURRENT_ACCESS, PREVIEW_SUGGESTIONS_ACCEPTED, PREVIEW_WITHOUT_SUGGESTIONS. Padrão: DEFAULT_FOR_CURRENT_ACCESS
</Accordion>
<Accordion title="google_docs/batch_update">
**Descrição:** Aplicar uma ou mais atualizações a um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `requests` (array, obrigatório): Uma lista de atualizações a aplicar ao documento. Cada item é um objeto representando uma solicitação.
- `writeControl` (object, opcional): Fornece controle sobre como as solicitações de escrita são executadas. Contém `requiredRevisionId` (string) e `targetRevisionId` (string).
</Accordion>
<Accordion title="google_docs/insert_text">
**Descrição:** Inserir texto em um documento do Google em um local específico.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `text` (string, obrigatório): O texto a inserir.
- `index` (integer, opcional): O índice baseado em zero onde inserir o texto. Padrão: 1
</Accordion>
<Accordion title="google_docs/replace_text">
**Descrição:** Substituir todas as instâncias de texto em um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `containsText` (string, obrigatório): O texto a encontrar e substituir.
- `replaceText` (string, obrigatório): O texto para substituir.
- `matchCase` (boolean, opcional): Se a pesquisa deve respeitar maiúsculas e minúsculas. Padrão: false
</Accordion>
<Accordion title="google_docs/delete_content_range">
**Descrição:** Excluir conteúdo de um intervalo específico em um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `startIndex` (integer, obrigatório): O índice inicial do intervalo a excluir.
- `endIndex` (integer, obrigatório): O índice final do intervalo a excluir.
</Accordion>
<Accordion title="google_docs/insert_page_break">
**Descrição:** Inserir uma quebra de página em um local específico em um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `index` (integer, opcional): O índice baseado em zero onde inserir a quebra de página. Padrão: 1
</Accordion>
<Accordion title="google_docs/create_named_range">
**Descrição:** Criar um intervalo nomeado em um documento do Google.
**Parâmetros:**
- `documentId` (string, obrigatório): O ID do documento a atualizar.
- `name` (string, obrigatório): O nome para o intervalo nomeado.
- `startIndex` (integer, obrigatório): O índice inicial do intervalo.
- `endIndex` (integer, obrigatório): O índice final do intervalo.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Google Docs
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Google Docs
docs_agent = Agent(
role="Criador de Documentos",
goal="Criar e gerenciar documentos do Google Docs de forma eficiente",
backstory="Um assistente IA especializado em criação e edição de documentos do Google Docs.",
apps=['google_docs'] # Todas as ações do Google Docs estarão disponíveis
)
# Tarefa para criar um novo documento
create_doc_task = Task(
description="Criar um novo documento do Google intitulado 'Relatório de Status do Projeto'",
agent=docs_agent,
expected_output="Novo documento do Google 'Relatório de Status do Projeto' criado com sucesso"
)
# Execute a tarefa
crew = Crew(
agents=[docs_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
### Edição de Texto e Gerenciamento de Conteúdo
```python
from crewai import Agent, Task, Crew
# Crie um agente focado em edição de texto
text_editor = Agent(
role="Editor de Documentos",
goal="Editar e atualizar conteúdo em documentos do Google Docs",
backstory="Um assistente IA habilidoso em edição precisa de texto e gerenciamento de conteúdo.",
apps=['google_docs/insert_text', 'google_docs/replace_text', 'google_docs/delete_content_range']
)
# Tarefa para editar conteúdo do documento
edit_content_task = Task(
description="No documento 'your_document_id', inserir o texto 'Resumo Executivo: ' no início, depois substituir todas as instâncias de 'TODO' por 'CONCLUÍDO'.",
agent=text_editor,
expected_output="Documento atualizado com novo texto inserido e itens TODO substituídos."
)
crew = Crew(
agents=[text_editor],
tasks=[edit_content_task]
)
crew.kickoff()
```
### Operações Avançadas de Documentos
```python
from crewai import Agent, Task, Crew
# Crie um agente para operações avançadas de documentos
document_formatter = Agent(
role="Formatador de Documentos",
goal="Aplicar formatação avançada e estrutura a documentos do Google",
backstory="Um assistente IA que lida com formatação complexa de documentos e organização.",
apps=['google_docs/batch_update', 'google_docs/insert_page_break', 'google_docs/create_named_range']
)
# Tarefa para formatar documento
format_doc_task = Task(
description="No documento 'your_document_id', inserir uma quebra de página na posição 100, criar um intervalo nomeado chamado 'Introdução' para caracteres 1-50, e aplicar atualizações de formatação em lote.",
agent=document_formatter,
expected_output="Documento formatado com quebra de página, intervalo nomeado e estilo aplicado."
)
crew = Crew(
agents=[document_formatter],
tasks=[format_doc_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Docs.
- Verifique se a conexão OAuth inclui todos os escopos necessários (`https://www.googleapis.com/auth/documents`).
**Problemas de ID do Documento**
- Verifique novamente os IDs dos documentos para correção.
- Certifique-se de que o documento existe e está acessível à sua conta.
- IDs de documentos podem ser encontrados na URL do Google Docs.
**Inserção de Texto e Operações de Intervalo**
- Ao usar `insert_text` ou `delete_content_range`, certifique-se de que as posições de índice sejam válidas.
- Lembre-se de que o Google Docs usa indexação baseada em zero.
- O documento deve ter conteúdo nas posições de índice especificadas.
**Formatação de Solicitação de Atualização em Lote**
- Ao usar `batch_update`, certifique-se de que o array `requests` esteja formatado corretamente de acordo com a documentação da API do Google Docs.
- Atualizações complexas requerem estruturas JSON específicas para cada tipo de solicitação.
**Operações de Substituição de Texto**
- Para `replace_text`, certifique-se de que o parâmetro `containsText` corresponda exatamente ao texto que você deseja substituir.
- Use o parâmetro `matchCase` para controlar a sensibilidade a maiúsculas e minúsculas.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Docs.
</Card>

View File

@@ -0,0 +1,51 @@
---
title: Integração Google Drive
description: "Gerenciamento de arquivos e pastas com integração Google Drive para CrewAI."
icon: "google"
mode: "wide"
---
## Visão Geral
Permita que seus agentes acessem e gerenciem arquivos e pastas no Google Drive. Faça upload, download, organize conteúdo, crie links de compartilhamento e simplifique seus fluxos de trabalho de armazenamento em nuvem com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Google Drive, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Google com acesso ao Google Drive
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Google Drive
### 1. Conecte sua Conta Google
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Google Drive** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a arquivos
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
Para informações detalhadas sobre parâmetros e uso, consulte a [documentação em inglês](../../../en/enterprise/integrations/google_drive).
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Drive.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Drive.
</Card>

View File

@@ -26,7 +26,7 @@ Antes de utilizar a integração com o Google Sheets, certifique-se de que você
2. Localize **Google Sheets** na seção Integrações de Autenticação
3. Clique em **Conectar** e conclua o fluxo OAuth
4. Conceda as permissões necessárias para acesso à planilha
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -37,7 +37,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="GOOGLE_SHEETS_GET_ROW">
<Accordion title="google_sheets/get_values">
**Descrição:** Obtém linhas de uma planilha Google Sheets.
**Parâmetros:**
@@ -45,7 +45,7 @@ uv add crewai-tools
- `limit` (string, opcional): Limite de linhas - Limita o número máximo de linhas retornadas.
</Accordion>
<Accordion title="GOOGLE_SHEETS_CREATE_ROW">
<Accordion title="google_sheets/append_values">
**Descrição:** Cria uma nova linha em uma planilha Google Sheets.
**Parâmetros:**
@@ -62,7 +62,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="GOOGLE_SHEETS_UPDATE_ROW">
<Accordion title="google_sheets/update_values">
**Descrição:** Atualiza linhas existentes em uma planilha Google Sheets.
**Parâmetros:**
@@ -105,19 +105,15 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha as ferramentas enterprise (ferramentas Google Sheets incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Crie um agente com capacidades para Google Sheets
sheets_agent = Agent(
role="Data Manager",
goal="Gerenciar dados de planilha e rastrear informações de maneira eficiente",
backstory="Um assistente de IA especializado em gestão de dados e operações em planilhas.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Tarefa para adicionar novos dados a uma planilha
@@ -139,19 +135,16 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Google Sheets
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha apenas ferramentas específicas do Google Sheets
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["google_sheets_get_row", "google_sheets_create_row"]
actions_list=["google_sheets/get_values", "google_sheets/update_values"]
)
data_collector = Agent(
role="Data Collector",
goal="Coletar e organizar dados em planilhas",
backstory="Um assistente de IA dedicado à coleta e organização de dados.",
tools=enterprise_tools
apps=['google_sheets']
)
# Tarefa para coletar e organizar dados
@@ -173,17 +166,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Data Analyst",
goal="Analisar dados de planilhas e gerar insights",
backstory="Um analista de dados experiente que extrai insights dos dados de planilhas.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Tarefa para analisar dados e criar relatórios
@@ -209,17 +197,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_updater = Agent(
role="Data Updater",
goal="Atualizar e manter dados de planilhas automaticamente",
backstory="Um assistente de IA que mantém a precisão dos dados e atualiza registros automaticamente.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Tarefa para atualizar dados com base em condições
@@ -246,17 +229,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_manager = Agent(
role="Data Workflow Manager",
goal="Gerenciar fluxos de dados complexos entre várias planilhas",
backstory="Um assistente de IA que orquestra operações complexas de dados entre várias planilhas.",
tools=[enterprise_tools]
apps=['google_sheets']
)
# Tarefa de workflow complexa

View File

@@ -0,0 +1,232 @@
---
title: Integração Google Slides
description: "Criação e gerenciamento de apresentações com integração Google Slides para CrewAI."
icon: "chart-bar"
mode: "wide"
---
## Visão Geral
Permita que seus agentes criem, editem e gerenciem apresentações do Google Slides. Crie apresentações, atualize conteúdo, importe dados do Google Sheets, gerencie páginas e miniaturas, e simplifique seus fluxos de trabalho de apresentações com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Google Slides, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Google com acesso ao Google Slides
- Conectado sua conta Google através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Google Slides
### 1. Conecte sua Conta Google
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Google Slides** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a apresentações, planilhas e drive
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="google_slides/create_blank_presentation">
**Descrição:** Cria uma apresentação em branco sem conteúdo.
**Parâmetros:**
- `title` (string, obrigatório): O título da apresentação.
</Accordion>
<Accordion title="google_slides/get_presentation">
**Descrição:** Recupera uma apresentação por ID.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação a ser recuperada.
- `fields` (string, opcional): Os campos a incluir na resposta. Use isso para melhorar o desempenho retornando apenas os dados necessários.
</Accordion>
<Accordion title="google_slides/batch_update_presentation">
**Descrição:** Aplica atualizações, adiciona conteúdo ou remove conteúdo de uma apresentação.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação a ser atualizada.
- `requests` (array, obrigatório): Uma lista de atualizações a aplicar à apresentação. Cada item é um objeto representando uma solicitação.
- `writeControl` (object, opcional): Fornece controle sobre como as solicitações de escrita são executadas. Contém `requiredRevisionId` (string).
</Accordion>
<Accordion title="google_slides/get_page">
**Descrição:** Recupera uma página específica por seu ID.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação.
- `pageObjectId` (string, obrigatório): O ID da página a ser recuperada.
</Accordion>
<Accordion title="google_slides/get_thumbnail">
**Descrição:** Gera uma miniatura da página.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação.
- `pageObjectId` (string, obrigatório): O ID da página para geração de miniatura.
</Accordion>
<Accordion title="google_slides/import_data_from_sheet">
**Descrição:** Importa dados de uma planilha do Google para uma apresentação.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação.
- `sheetId` (string, obrigatório): O ID da planilha do Google para importar.
- `dataRange` (string, obrigatório): O intervalo de dados a importar da planilha.
</Accordion>
<Accordion title="google_slides/upload_file_to_drive">
**Descrição:** Faz upload de um arquivo para o Google Drive associado à apresentação.
**Parâmetros:**
- `file` (string, obrigatório): Os dados do arquivo a fazer upload.
- `presentationId` (string, obrigatório): O ID da apresentação para vincular o arquivo carregado.
</Accordion>
<Accordion title="google_slides/link_file_to_presentation">
**Descrição:** Vincula um arquivo no Google Drive a uma apresentação.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação.
- `fileId` (string, obrigatório): O ID do arquivo a vincular.
</Accordion>
<Accordion title="google_slides/get_all_presentations">
**Descrição:** Lista todas as apresentações acessíveis ao usuário.
**Parâmetros:**
- `pageSize` (integer, opcional): O número de apresentações a retornar por página.
- `pageToken` (string, opcional): Um token para paginação.
</Accordion>
<Accordion title="google_slides/delete_presentation">
**Descrição:** Exclui uma apresentação por ID.
**Parâmetros:**
- `presentationId` (string, obrigatório): O ID da apresentação a ser excluída.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Google Slides
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Google Slides
slides_agent = Agent(
role="Criador de Apresentações",
goal="Criar e gerenciar apresentações do Google Slides de forma eficiente",
backstory="Um assistente IA especializado em design de apresentações e gerenciamento de conteúdo.",
apps=['google_slides'] # Todas as ações do Google Slides estarão disponíveis
)
# Tarefa para criar uma nova apresentação
create_presentation_task = Task(
description="Criar uma nova apresentação em branco intitulada 'Relatório de Vendas Trimestral'",
agent=slides_agent,
expected_output="Nova apresentação 'Relatório de Vendas Trimestral' criada com sucesso"
)
# Execute a tarefa
crew = Crew(
agents=[slides_agent],
tasks=[create_presentation_task]
)
crew.kickoff()
```
### Atualizando Conteúdo da Apresentação
```python
from crewai import Agent, Task, Crew
# Crie um agente focado em atualizar apresentações
updater_agent = Agent(
role="Atualizador de Apresentações",
goal="Atualizar e modificar apresentações existentes do Google Slides",
backstory="Um assistente IA habilidoso em fazer atualizações precisas no conteúdo de apresentações.",
apps=['google_slides/batch_update_presentation']
)
# Tarefa para atualizar uma apresentação
update_presentation_task = Task(
description="Atualizar a apresentação com ID 'your_presentation_id' para adicionar uma nova caixa de texto no primeiro slide com o conteúdo 'Destaques Principais'.",
agent=updater_agent,
expected_output="Apresentação atualizada com novo conteúdo."
)
crew = Crew(
agents=[updater_agent],
tasks=[update_presentation_task]
)
crew.kickoff()
```
### Importando Dados e Gerenciando Arquivos
```python
from crewai import Agent, Task, Crew
# Crie um agente para importação de dados e gerenciamento de arquivos
data_presenter = Agent(
role="Apresentador de Dados",
goal="Importar dados para apresentações e gerenciar arquivos vinculados",
backstory="Um assistente IA que integra dados de várias fontes em apresentações.",
apps=['google_slides/import_data_from_sheet', 'google_slides/upload_file_to_drive']
)
# Tarefa para importar dados de uma planilha
import_data_task = Task(
description="Importar dados da planilha do Google 'your_sheet_id' intervalo 'A1:C10' para a apresentação 'your_presentation_id'.",
agent=data_presenter,
expected_output="Dados importados da planilha do Google para a apresentação."
)
crew = Crew(
agents=[data_presenter],
tasks=[import_data_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Google tenha as permissões necessárias para acesso ao Google Slides e Google Drive.
- Verifique se a conexão OAuth inclui todos os escopos necessários.
**Problemas de ID de Apresentação/Página**
- Verifique novamente os IDs de apresentação e IDs de objeto de página para correção.
- Certifique-se de que a apresentação ou página existe e está acessível.
**Formatação de Solicitação de Atualização em Lote**
- Ao usar `batch_update_presentation`, certifique-se de que o array `requests` esteja formatado corretamente de acordo com a documentação da API do Google Slides.
- Atualizações complexas frequentemente requerem estruturas JSON específicas para cada tipo de solicitação (ex: `createText`, `insertShape`).
**Problemas de Upload/Vinculação de Arquivos**
- Certifique-se de que o conteúdo do `file` esteja fornecido corretamente para `upload_file_to_drive`.
- Verifique se o `fileId` está correto ao vincular arquivos a uma apresentação.
- Verifique as permissões do Google Drive para acesso a arquivos.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Google Slides.
</Card>

View File

@@ -25,7 +25,7 @@ Antes de utilizar a integração com o HubSpot, certifique-se de que você possu
2. Encontre **HubSpot** na seção de Integrações de Autenticação.
3. Clique em **Conectar** e complete o fluxo OAuth.
4. Conceda as permissões necessárias para gerenciamento de empresas e contatos.
5. Copie o seu Token Enterprise nas [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account).
5. Copie o seu Token Enterprise nas [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="HUBSPOT_CREATE_RECORD_COMPANIES">
<Accordion title="hubspot/create_company">
**Descrição:** Crie um novo registro de empresa no HubSpot.
**Parâmetros:**
@@ -101,7 +101,7 @@ uv add crewai-tools
- `founded_year` (string, opcional): Ano de fundação.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_CONTACTS">
<Accordion title="hubspot/create_contact">
**Descrição:** Crie um novo registro de contato no HubSpot.
**Parâmetros:**
@@ -200,7 +200,7 @@ uv add crewai-tools
- `hs_googleplusid` (string, opcional): googleplus ID.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_DEALS">
<Accordion title="hubspot/create_deal">
**Descrição:** Crie um novo registro de negócio (deal) no HubSpot.
**Parâmetros:**
@@ -215,7 +215,7 @@ uv add crewai-tools
- `hs_priority` (string, opcional): Prioridade do negócio. Valores disponíveis: `low`, `medium`, `high`.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/create_record_engagements">
**Descrição:** Crie um novo engajamento (ex: nota, e-mail, ligação, reunião, tarefa) no HubSpot.
**Parâmetros:**
@@ -232,7 +232,7 @@ uv add crewai-tools
- `hs_meeting_end_time` (string, opcional): Horário de término da reunião. (Utilizado para `MEETING`)
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_COMPANIES">
<Accordion title="hubspot/update_company">
**Descrição:** Atualize um registro de empresa existente no HubSpot.
**Parâmetros:**
@@ -249,7 +249,7 @@ uv add crewai-tools
- `description` (string, opcional): Descrição.
</Accordion>
<Accordion title="HUBSPOT_CREATE_RECORD_ANY">
<Accordion title="hubspot/create_record_any">
**Descrição:** Crie um registro para um tipo de objeto especificado no HubSpot.
**Parâmetros:**
@@ -257,7 +257,7 @@ uv add crewai-tools
- Parâmetros adicionais dependem do esquema do objeto personalizado.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_CONTACTS">
<Accordion title="hubspot/update_contact">
**Descrição:** Atualize um registro de contato existente no HubSpot.
**Parâmetros:**
@@ -271,7 +271,7 @@ uv add crewai-tools
- `lifecyclestage` (string, opcional): Estágio no ciclo de vida.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_DEALS">
<Accordion title="hubspot/update_deal">
**Descrição:** Atualize um registro de negócio existente no HubSpot.
**Parâmetros:**
@@ -284,7 +284,7 @@ uv add crewai-tools
- `dealtype` (string, opcional): Tipo de negócio.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/update_record_engagements">
**Descrição:** Atualize um engajamento existente no HubSpot.
**Parâmetros:**
@@ -295,7 +295,7 @@ uv add crewai-tools
- `hs_task_status` (string, opcional): Status da tarefa.
</Accordion>
<Accordion title="HUBSPOT_UPDATE_RECORD_ANY">
<Accordion title="hubspot/update_record_any">
**Descrição:** Atualize um registro para um tipo de objeto especificado no HubSpot.
**Parâmetros:**
@@ -304,28 +304,28 @@ uv add crewai-tools
- Parâmetros adicionais dependem do esquema do objeto personalizado.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_COMPANIES">
<Accordion title="hubspot/list_companies">
**Descrição:** Obtenha uma lista de registros de empresas do HubSpot.
**Parâmetros:**
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_CONTACTS">
<Accordion title="hubspot/list_contacts">
**Descrição:** Obtenha uma lista de registros de contatos do HubSpot.
**Parâmetros:**
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_DEALS">
<Accordion title="hubspot/list_deals">
**Descrição:** Obtenha uma lista de registros de negócios do HubSpot.
**Parâmetros:**
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/get_records_engagements">
**Descrição:** Obtenha uma lista de registros de engajamentos do HubSpot.
**Parâmetros:**
@@ -333,7 +333,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORDS_ANY">
<Accordion title="hubspot/get_records_any">
**Descrição:** Obtenha uma lista de registros de qualquer tipo de objeto no HubSpot.
**Parâmetros:**
@@ -341,35 +341,35 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_COMPANIES">
<Accordion title="hubspot/get_company">
**Descrição:** Obtenha um registro de empresa pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID da empresa a ser consultada.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_CONTACTS">
<Accordion title="hubspot/get_contact">
**Descrição:** Obtenha um registro de contato pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do contato a ser consultado.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_DEALS">
<Accordion title="hubspot/get_deal">
**Descrição:** Obtenha um registro de negócio pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do negócio a ser consultado.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ENGAGEMENTS">
<Accordion title="hubspot/get_record_by_id_engagements">
**Descrição:** Obtenha um registro de engajamento pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do engajamento a ser consultado.
</Accordion>
<Accordion title="HUBSPOT_GET_RECORD_BY_ID_ANY">
<Accordion title="hubspot/get_record_by_id_any">
**Descrição:** Obtenha um registro de qualquer tipo de objeto especificado pelo seu ID.
**Parâmetros:**
@@ -377,7 +377,7 @@ uv add crewai-tools
- `recordId` (string, obrigatório): ID do registro a ser consultado.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_COMPANIES">
<Accordion title="hubspot/search_companies">
**Descrição:** Pesquise registros de empresas no HubSpot utilizando uma fórmula de filtro.
**Parâmetros:**
@@ -385,7 +385,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_CONTACTS">
<Accordion title="hubspot/search_contacts">
**Descrição:** Pesquise registros de contatos no HubSpot utilizando uma fórmula de filtro.
**Parâmetros:**
@@ -393,7 +393,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_DEALS">
<Accordion title="hubspot/search_deals">
**Descrição:** Pesquise registros de negócios no HubSpot utilizando uma fórmula de filtro.
**Parâmetros:**
@@ -401,7 +401,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ENGAGEMENTS">
<Accordion title="hubspot/search_records_engagements">
**Descrição:** Pesquise registros de engajamento no HubSpot utilizando uma fórmula de filtro.
**Parâmetros:**
@@ -409,7 +409,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_SEARCH_RECORDS_ANY">
<Accordion title="hubspot/search_records_any">
**Descrição:** Pesquise registros de qualquer tipo de objeto no HubSpot.
**Parâmetros:**
@@ -418,35 +418,35 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para buscar páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_COMPANIES">
<Accordion title="hubspot/delete_record_companies">
**Descrição:** Exclua um registro de empresa pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID da empresa a ser excluída.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_CONTACTS">
<Accordion title="hubspot/delete_record_contacts">
**Descrição:** Exclua um registro de contato pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do contato a ser excluído.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_DEALS">
<Accordion title="hubspot/delete_record_deals">
**Descrição:** Exclua um registro de negócio pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do negócio a ser excluído.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ENGAGEMENTS">
<Accordion title="hubspot/delete_record_engagements">
**Descrição:** Exclua um registro de engajamento pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do engajamento a ser excluído.
</Accordion>
<Accordion title="HUBSPOT_DELETE_RECORD_ANY">
<Accordion title="hubspot/delete_record_any">
**Descrição:** Exclua um registro de qualquer tipo de objeto especificado pelo seu ID.
**Parâmetros:**
@@ -454,7 +454,7 @@ uv add crewai-tools
- `recordId` (string, obrigatório): ID do registro a ser excluído.
</Accordion>
<Accordion title="HUBSPOT_GET_CONTACTS_BY_LIST_ID">
<Accordion title="hubspot/get_contacts_by_list_id">
**Descrição:** Obtenha contatos de uma lista específica pelo seu ID.
**Parâmetros:**
@@ -462,7 +462,7 @@ uv add crewai-tools
- `paginationParameters` (object, opcional): Use `pageCursor` para páginas subsequentes.
</Accordion>
<Accordion title="HUBSPOT_DESCRIBE_ACTION_SCHEMA">
<Accordion title="hubspot/describe_action_schema">
**Descrição:** Obtenha o esquema esperado para um dado tipo de objeto e operação.
**Parâmetros:**
@@ -477,19 +477,15 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha as ferramentas enterprise (ferramentas HubSpot incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Crie um agente com capacidades HubSpot
hubspot_agent = Agent(
role="CRM Manager",
goal="Manage company and contact records in HubSpot",
backstory="An AI assistant specialized in CRM management.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task para criar nova empresa
@@ -511,19 +507,16 @@ crew.kickoff()
### Filtrando Ferramentas HubSpot Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha somente a ferramenta para criar contatos
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["hubspot_create_record_contacts"]
actions_list=["hubspot/create_contact"]
)
contact_creator = Agent(
role="Contact Creator",
goal="Create new contacts in HubSpot",
backstory="An AI assistant that focuses on creating new contact entries in the CRM.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task para criar contato
@@ -545,17 +538,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
crm_manager = Agent(
role="CRM Manager",
goal="Manage and organize HubSpot contacts efficiently.",
backstory="An experienced CRM manager who maintains an organized contact database.",
tools=[enterprise_tools]
apps=['hubspot']
)
# Task para gerenciar contatos

View File

@@ -25,7 +25,7 @@ Antes de usar a integração com o Jira, certifique-se de ter:
2. Encontre **Jira** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo do OAuth
4. Conceda as permissões necessárias para gestão de issues e projetos
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instalar o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="JIRA_CREATE_ISSUE">
<Accordion title="jira/create_issue">
**Descrição:** Cria uma issue no Jira.
**Parâmetros:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE">
<Accordion title="jira/update_issue">
**Descrição:** Atualiza uma issue no Jira.
**Parâmetros:**
@@ -71,14 +71,14 @@ uv add crewai-tools
- `additionalFields` (string, opcional): Campos Adicionais - Especifique outros campos em formato JSON.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_BY_KEY">
<Accordion title="jira/get_issue_by_key">
**Descrição:** Obtém uma issue pelo identificador no Jira.
**Parâmetros:**
- `issueKey` (string, obrigatório): Chave da Issue (exemplo: "TEST-1234").
</Accordion>
<Accordion title="JIRA_FILTER_ISSUES">
<Accordion title="jira/filter_issues">
**Descrição:** Busca issues no Jira usando filtros.
**Parâmetros:**
@@ -104,7 +104,7 @@ uv add crewai-tools
- `limit` (string, opcional): Limitar resultados - Limite máximo de issues retornados. Padrão para 10 se estiver em branco.
</Accordion>
<Accordion title="JIRA_SEARCH_BY_JQL">
<Accordion title="jira/search_by_jql">
**Descrição:** Busca issues no Jira utilizando JQL.
**Parâmetros:**
@@ -117,13 +117,13 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_UPDATE_ISSUE_ANY">
<Accordion title="jira/update_issue_any">
**Descrição:** Atualiza qualquer issue no Jira. Use DESCRIBE_ACTION_SCHEMA para obter o schema de propriedades dessa função.
**Parâmetros:** Nenhum parâmetro específico - use JIRA_DESCRIBE_ACTION_SCHEMA primeiro para obter o schema esperado.
</Accordion>
<Accordion title="JIRA_DESCRIBE_ACTION_SCHEMA">
<Accordion title="jira/describe_action_schema">
**Descrição:** Obtém o schema esperado para um tipo de issue. Use esta função caso nenhuma outra função atenda ao tipo de issue que deseja operar.
**Parâmetros:**
@@ -132,7 +132,7 @@ uv add crewai-tools
- `operation` (string, obrigatório): Tipo de Operação, por exemplo CREATE_ISSUE ou UPDATE_ISSUE.
</Accordion>
<Accordion title="JIRA_GET_PROJECTS">
<Accordion title="jira/get_projects">
**Descrição:** Obtém os projetos no Jira.
**Parâmetros:**
@@ -144,27 +144,27 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES_BY_PROJECT">
<Accordion title="jira/get_issue_types_by_project">
**Descrição:** Obtém os tipos de issues por projeto no Jira.
**Parâmetros:**
- `project` (string, obrigatório): Chave do projeto.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_TYPES">
<Accordion title="jira/get_issue_types">
**Descrição:** Obtém todos os tipos de issues no Jira.
**Parâmetros:** Nenhum obrigatório.
</Accordion>
<Accordion title="JIRA_GET_ISSUE_STATUS_BY_PROJECT">
<Accordion title="jira/get_issue_status_by_project">
**Descrição:** Obtém os status das issues de um projeto específico.
**Parâmetros:**
- `project` (string, obrigatório): Chave do projeto.
</Accordion>
<Accordion title="JIRA_GET_ALL_ASSIGNEES_BY_PROJECT">
<Accordion title="jira/get_all_assignees_by_project">
**Descrição:** Obtém os responsáveis por um projeto específico.
**Parâmetros:**
@@ -178,19 +178,15 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha as ferramentas enterprise (incluirá ferramentas do Jira)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Criação de um agente com capacidades Jira
jira_agent = Agent(
role="Issue Manager",
goal="Gerenciar issues do Jira e acompanhar o progresso do projeto de forma eficiente",
backstory="Um assistente de IA especializado em rastreamento de issues e gestão de projetos.",
tools=[enterprise_tools]
apps=['jira']
)
# Tarefa para criar um relatório de bug
@@ -212,19 +208,16 @@ crew.kickoff()
### Filtrando Ferramentas Jira Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha apenas ferramentas Jira específicas
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["jira_create_issue", "jira_update_issue", "jira_search_by_jql"]
actions_list=["jira/create_issue", "jira/update_issue", "jira/search_by_jql"]
)
issue_coordinator = Agent(
role="Issue Coordinator",
goal="Criar e gerenciar issues Jira de forma eficiente",
backstory="Um assistente de IA focado na criação e gestão de issues.",
tools=enterprise_tools
apps=['jira']
)
# Tarefa para gerenciar workflow de issues
@@ -246,17 +239,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_analyst = Agent(
role="Project Analyst",
goal="Analisar dados de projetos e gerar insights a partir do Jira",
backstory="Um analista de projetos experiente que extrai insights de dados de gestão de projetos.",
tools=[enterprise_tools]
apps=['jira']
)
# Tarefa para analisar status do projeto
@@ -283,17 +271,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
automation_manager = Agent(
role="Automation Manager",
goal="Automatizar gestão de issues e processos de workflow",
backstory="Um assistente de IA que automatiza tarefas repetitivas de gestão de issues.",
tools=[enterprise_tools]
apps=['jira']
)
# Tarefa para automatizar gestão de issues
@@ -321,17 +304,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
schema_specialist = Agent(
role="Schema Specialist",
goal="Executar operações complexas no Jira usando schemas dinâmicos",
backstory="Um assistente de IA que manipula schemas dinâmicos e tipos de issues customizadas do Jira.",
tools=[enterprise_tools]
apps=['jira']
)
# Tarefa usando operações baseadas em schema

View File

@@ -25,7 +25,7 @@ Antes de utilizar a integração com o Linear, certifique-se de que você possui
2. Encontre **Linear** na seção Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para gerenciamento de issues e projetos
5. Copie seu Token Empresarial em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Empresarial em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="LINEAR_CREATE_ISSUE">
<Accordion title="linear/create_issue">
**Descrição:** Crie uma nova issue no Linear.
**Parâmetros:**
@@ -56,7 +56,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_ISSUE">
<Accordion title="linear/update_issue">
**Descrição:** Atualize uma issue no Linear.
**Parâmetros:**
@@ -76,21 +76,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ID">
<Accordion title="linear/get_issue_by_id">
**Descrição:** Obtenha uma issue pelo ID no Linear.
**Parâmetros:**
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser buscada. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_GET_ISSUE_BY_ISSUE_IDENTIFIER">
<Accordion title="linear/get_issue_by_issue_identifier">
**Descrição:** Obtenha uma issue através do identificador da issue no Linear.
**Parâmetros:**
- `externalId` (string, obrigatório): ID Externo - Especifique o identificador legível da issue a ser buscada. (exemplo: "ABC-1").
</Accordion>
<Accordion title="LINEAR_SEARCH_ISSUE">
<Accordion title="linear/search_issue">
**Descrição:** Pesquise issues no Linear.
**Parâmetros:**
@@ -117,21 +117,21 @@ uv add crewai-tools
Operadores disponíveis: `$stringExactlyMatches`, `$stringDoesNotExactlyMatch`, `$stringIsIn`, `$stringIsNotIn`, `$stringStartsWith`, `$stringDoesNotStartWith`, `$stringEndsWith`, `$stringDoesNotEndWith`, `$stringContains`, `$stringDoesNotContain`, `$stringGreaterThan`, `$stringLessThan`, `$numberGreaterThanOrEqualTo`, `$numberLessThanOrEqualTo`, `$numberGreaterThan`, `$numberLessThan`, `$dateTimeAfter`, `$dateTimeBefore`
</Accordion>
<Accordion title="LINEAR_DELETE_ISSUE">
<Accordion title="linear/delete_issue">
**Descrição:** Exclua uma issue no Linear.
**Parâmetros:**
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser excluída. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_ARCHIVE_ISSUE">
<Accordion title="linear/archive_issue">
**Descrição:** Arquive uma issue no Linear.
**Parâmetros:**
- `issueId` (string, obrigatório): ID da Issue - Especifique o ID do registro da issue a ser arquivada. (exemplo: "90fbc706-18cd-42c9-ae66-6bd344cc8977").
</Accordion>
<Accordion title="LINEAR_CREATE_SUB_ISSUE">
<Accordion title="linear/create_sub_issue">
**Descrição:** Crie uma sub-issue no Linear.
**Parâmetros:**
@@ -147,7 +147,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_CREATE_PROJECT">
<Accordion title="linear/create_project">
**Descrição:** Crie um novo projeto no Linear.
**Parâmetros:**
@@ -169,7 +169,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_UPDATE_PROJECT">
<Accordion title="linear/update_project">
**Descrição:** Atualize um projeto no Linear.
**Parâmetros:**
@@ -185,21 +185,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="LINEAR_GET_PROJECT_BY_ID">
<Accordion title="linear/get_project_by_id">
**Descrição:** Obtenha um projeto pelo ID no Linear.
**Parâmetros:**
- `projectId` (string, obrigatório): ID do Projeto - Especifique o ID do projeto a ser buscado. (exemplo: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_DELETE_PROJECT">
<Accordion title="linear/delete_project">
**Descrição:** Exclua um projeto no Linear.
**Parâmetros:**
- `projectId` (string, obrigatório): ID do Projeto - Especifique o ID do projeto a ser excluído. (exemplo: "a6634484-6061-4ac7-9739-7dc5e52c796b").
</Accordion>
<Accordion title="LINEAR_SEARCH_TEAMS">
<Accordion title="linear/search_teams">
**Descrição:** Pesquise equipes no Linear.
**Parâmetros:**
@@ -231,19 +231,15 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha ferramentas empresariais (ferramentas do Linear serão incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Crie um agente com funcionalidades do Linear
linear_agent = Agent(
role="Development Manager",
goal="Gerenciar issues do Linear e acompanhar o progresso do desenvolvimento de forma eficiente",
backstory="Um assistente de IA especializado em gerenciamento de projetos de desenvolvimento de software.",
tools=[enterprise_tools]
apps=['linear']
)
# Tarefa para criar um relatório de bug
@@ -265,19 +261,16 @@ crew.kickoff()
### Filtrando Ferramentas Lineares Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha apenas ferramentas lineares específicas
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["linear_create_issue", "linear_update_issue", "linear_search_issue"]
actions_list=["linear/create_issue", "linear/update_issue", "linear/search_issue"]
)
issue_manager = Agent(
role="Issue Manager",
goal="Criar e gerenciar issues no Linear de forma eficiente",
backstory="Um assistente de IA focado na criação e no gerenciamento do ciclo de vida de issues.",
tools=enterprise_tools
apps=['linear']
)
# Tarefa para gerenciar fluxo de issues
@@ -299,17 +292,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
project_coordinator = Agent(
role="Project Coordinator",
goal="Coordenar projetos e equipes no Linear de forma eficiente",
backstory="Um coordenador de projetos experiente que gerencia ciclos de desenvolvimento e fluxos de trabalho de equipe.",
tools=[enterprise_tools]
apps=['linear']
)
# Tarefa para coordenar a configuração de projeto
@@ -336,17 +324,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
task_organizer = Agent(
role="Task Organizer",
goal="Organizar issues complexas em sub-tarefas gerenciáveis",
backstory="Um assistente de IA que divide trabalhos de desenvolvimento complexos em sub-tarefas organizadas.",
tools=[enterprise_tools]
apps=['linear']
)
# Tarefa para criar hierarquia de issues
@@ -373,17 +356,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
workflow_automator = Agent(
role="Workflow Automator",
goal="Automatizar processos de fluxo de trabalho de desenvolvimento no Linear",
backstory="Um assistente de IA que automatiza tarefas repetitivas de fluxo de trabalho de desenvolvimento.",
tools=[enterprise_tools]
apps=['linear']
)
# Tarefa de automação de workflow complexa

View File

@@ -0,0 +1,234 @@
---
title: Integração Microsoft Excel
description: "Gerenciamento de pastas de trabalho e dados com integração Microsoft Excel para CrewAI."
icon: "table"
mode: "wide"
---
## Visão Geral
Permita que seus agentes criem e gerenciem pastas de trabalho, planilhas, tabelas e gráficos do Excel no OneDrive ou SharePoint. Manipule intervalos de dados, crie visualizações, gerencie tabelas e simplifique seus fluxos de trabalho de planilhas com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft Excel, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft 365 com acesso ao Excel e OneDrive/SharePoint
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft Excel
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft Excel** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a arquivos e pastas de trabalho do Excel
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_excel/create_workbook">
**Descrição:** Criar uma nova pasta de trabalho do Excel no OneDrive ou SharePoint.
**Parâmetros:**
- `file_path` (string, obrigatório): Caminho onde criar a pasta de trabalho (ex: 'MinhaPastaDeTrabalho.xlsx')
- `worksheets` (array, opcional): Planilhas iniciais para criar. Cada item é um objeto com `name` (string, nome da planilha).
</Accordion>
<Accordion title="microsoft_excel/get_workbooks">
**Descrição:** Obter todas as pastas de trabalho do Excel do OneDrive ou SharePoint.
**Parâmetros:**
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
- `expand` (string, opcional): Expandir recursos relacionados inline.
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
</Accordion>
<Accordion title="microsoft_excel/get_worksheets">
**Descrição:** Obter todas as planilhas em uma pasta de trabalho do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'id,name,position').
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
- `expand` (string, opcional): Expandir recursos relacionados inline.
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
</Accordion>
<Accordion title="microsoft_excel/create_worksheet">
**Descrição:** Criar uma nova planilha em uma pasta de trabalho do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `name` (string, obrigatório): Nome da nova planilha.
</Accordion>
<Accordion title="microsoft_excel/get_range_data">
**Descrição:** Obter dados de um intervalo específico em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `range` (string, obrigatório): Endereço do intervalo (ex: 'A1:C10').
</Accordion>
<Accordion title="microsoft_excel/update_range_data">
**Descrição:** Atualizar dados em um intervalo específico em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `range` (string, obrigatório): Endereço do intervalo (ex: 'A1:C10').
- `values` (array, obrigatório): Array 2D de valores para definir no intervalo. Cada array interno representa uma linha, e elementos podem ser string, number ou integer.
</Accordion>
<Accordion title="microsoft_excel/add_table">
**Descrição:** Criar uma tabela em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `range` (string, obrigatório): Intervalo para a tabela (ex: 'A1:D10').
- `has_headers` (boolean, opcional): Se a primeira linha contém cabeçalhos. Padrão: true.
</Accordion>
<Accordion title="microsoft_excel/get_tables">
**Descrição:** Obter todas as tabelas em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
</Accordion>
<Accordion title="microsoft_excel/add_table_row">
**Descrição:** Adicionar uma nova linha a uma tabela do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `table_name` (string, obrigatório): Nome da tabela.
- `values` (array, obrigatório): Array de valores para a nova linha. Elementos podem ser string, number ou integer.
</Accordion>
<Accordion title="microsoft_excel/create_chart">
**Descrição:** Criar um gráfico em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `chart_type` (string, obrigatório): Tipo de gráfico (ex: 'ColumnClustered', 'Line', 'Pie').
- `source_data` (string, obrigatório): Intervalo de dados para o gráfico (ex: 'A1:B10').
- `series_by` (string, opcional): Como interpretar os dados ('Auto', 'Columns' ou 'Rows'). Padrão: 'Auto'.
</Accordion>
<Accordion title="microsoft_excel/get_cell">
**Descrição:** Obter o valor de uma única célula em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `row` (integer, obrigatório): Número da linha (baseado em 0).
- `column` (integer, obrigatório): Número da coluna (baseado em 0).
</Accordion>
<Accordion title="microsoft_excel/get_used_range">
**Descrição:** Obter o intervalo usado de uma planilha do Excel (contém todos os dados).
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
</Accordion>
<Accordion title="microsoft_excel/list_charts">
**Descrição:** Obter todos os gráficos em uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
</Accordion>
<Accordion title="microsoft_excel/delete_worksheet">
**Descrição:** Excluir uma planilha de uma pasta de trabalho do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha a excluir.
</Accordion>
<Accordion title="microsoft_excel/delete_table">
**Descrição:** Excluir uma tabela de uma planilha do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
- `worksheet_name` (string, obrigatório): Nome da planilha.
- `table_name` (string, obrigatório): Nome da tabela a excluir.
</Accordion>
<Accordion title="microsoft_excel/list_names">
**Descrição:** Obter todos os intervalos nomeados em uma pasta de trabalho do Excel.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do arquivo Excel.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft Excel
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft Excel
excel_agent = Agent(
role="Gerenciador de Dados Excel",
goal="Gerenciar pastas de trabalho e dados do Excel de forma eficiente",
backstory="Um assistente IA especializado em operações do Microsoft Excel e manipulação de dados.",
apps=['microsoft_excel'] # Todas as ações do Excel estarão disponíveis
)
# Tarefa para criar uma nova pasta de trabalho
create_workbook_task = Task(
description="Criar uma nova pasta de trabalho do Excel chamada 'RelatorioMensal.xlsx' com uma planilha inicial chamada 'DadosVendas'.",
agent=excel_agent,
expected_output="Nova pasta de trabalho 'RelatorioMensal.xlsx' criada com planilha 'DadosVendas'."
)
# Execute a tarefa
crew = Crew(
agents=[excel_agent],
tasks=[create_workbook_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read.All`, `Files.ReadWrite.All`).
- Verifique se a conexão OAuth inclui todos os escopos necessários.
**Problemas de Criação de Arquivos**
- Ao criar pastas de trabalho, certifique-se de que o `file_path` termine com extensão `.xlsx`.
- Verifique se você tem permissões de escrita no local de destino (OneDrive/SharePoint).
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Excel.
</Card>

View File

@@ -0,0 +1,175 @@
---
title: Integração Microsoft OneDrive
description: "Gerenciamento de arquivos e pastas com integração Microsoft OneDrive para CrewAI."
icon: "cloud"
mode: "wide"
---
## Visão Geral
Permita que seus agentes façam upload, download e gerenciem arquivos e pastas no Microsoft OneDrive. Automatize operações de arquivos, organize conteúdo, crie links de compartilhamento e simplifique seus fluxos de trabalho de armazenamento em nuvem com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft OneDrive, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft com acesso ao OneDrive
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft OneDrive
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft OneDrive** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a arquivos
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_onedrive/list_files">
**Descrição:** Listar arquivos e pastas no OneDrive.
**Parâmetros:**
- `top` (integer, opcional): Número de itens a recuperar (máx 1000). Padrão: 50.
- `orderby` (string, opcional): Ordenar por campo (ex: "name asc", "lastModifiedDateTime desc"). Padrão: "name asc".
- `filter` (string, opcional): Expressão de filtro OData.
</Accordion>
<Accordion title="microsoft_onedrive/get_file_info">
**Descrição:** Obter informações sobre um arquivo ou pasta específica.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo ou pasta.
</Accordion>
<Accordion title="microsoft_onedrive/download_file">
**Descrição:** Baixar um arquivo do OneDrive.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo a baixar.
</Accordion>
<Accordion title="microsoft_onedrive/upload_file">
**Descrição:** Fazer upload de um arquivo para o OneDrive.
**Parâmetros:**
- `file_name` (string, obrigatório): Nome do arquivo a fazer upload.
- `content` (string, obrigatório): Conteúdo do arquivo codificado em Base64.
</Accordion>
<Accordion title="microsoft_onedrive/create_folder">
**Descrição:** Criar uma nova pasta no OneDrive.
**Parâmetros:**
- `folder_name` (string, obrigatório): Nome da pasta a criar.
</Accordion>
<Accordion title="microsoft_onedrive/delete_item">
**Descrição:** Excluir um arquivo ou pasta do OneDrive.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a excluir.
</Accordion>
<Accordion title="microsoft_onedrive/copy_item">
**Descrição:** Copiar um arquivo ou pasta no OneDrive.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a copiar.
- `parent_id` (string, opcional): O ID da pasta de destino (opcional, padrão para raiz).
- `new_name` (string, opcional): Novo nome para o item copiado (opcional).
</Accordion>
<Accordion title="microsoft_onedrive/move_item">
**Descrição:** Mover um arquivo ou pasta no OneDrive.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a mover.
- `parent_id` (string, obrigatório): O ID da pasta de destino.
- `new_name` (string, opcional): Novo nome para o item (opcional).
</Accordion>
<Accordion title="microsoft_onedrive/search_files">
**Descrição:** Pesquisar arquivos e pastas no OneDrive.
**Parâmetros:**
- `query` (string, obrigatório): String de consulta de pesquisa.
- `top` (integer, opcional): Número de resultados a retornar (máx 1000). Padrão: 50.
</Accordion>
<Accordion title="microsoft_onedrive/share_item">
**Descrição:** Criar um link de compartilhamento para um arquivo ou pasta.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a compartilhar.
- `type` (string, opcional): Tipo de link de compartilhamento. Opções: view, edit, embed. Padrão: view.
- `scope` (string, opcional): Escopo do link de compartilhamento. Opções: anonymous, organization. Padrão: anonymous.
</Accordion>
<Accordion title="microsoft_onedrive/get_thumbnails">
**Descrição:** Obter miniaturas para um arquivo.
**Parâmetros:**
- `item_id` (string, obrigatório): O ID do arquivo.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft OneDrive
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft OneDrive
onedrive_agent = Agent(
role="Gerenciador de Arquivos",
goal="Gerenciar arquivos e pastas no OneDrive de forma eficiente",
backstory="Um assistente IA especializado em operações de arquivos do Microsoft OneDrive e organização.",
apps=['microsoft_onedrive'] # Todas as ações do OneDrive estarão disponíveis
)
# Tarefa para listar arquivos e criar pasta
organize_files_task = Task(
description="Listar todos os arquivos no diretório raiz do meu OneDrive e criar uma nova pasta chamada 'Documentos do Projeto'.",
agent=onedrive_agent,
expected_output="Lista de arquivos exibida e nova pasta 'Documentos do Projeto' criada."
)
# Execute a tarefa
crew = Crew(
agents=[onedrive_agent],
tasks=[organize_files_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read`, `Files.ReadWrite`).
- Verifique se a conexão OAuth inclui todos os escopos necessários.
**Problemas de Upload de Arquivos**
- Certifique-se de que `file_name` e `content` sejam fornecidos para uploads de arquivos.
- O conteúdo deve ser codificado em Base64 para arquivos binários.
- Verifique se você tem permissões de escrita no OneDrive.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft OneDrive.
</Card>

View File

@@ -0,0 +1,161 @@
---
title: Integração Microsoft Outlook
description: "Gerenciamento de email, calendário e contatos com integração Microsoft Outlook para CrewAI."
icon: "envelope"
mode: "wide"
---
## Visão Geral
Permita que seus agentes acessem e gerenciem emails, eventos de calendário e contatos do Outlook. Envie emails, recupere mensagens, gerencie eventos de calendário e organize contatos com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft Outlook, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft com acesso ao Outlook
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft Outlook
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft Outlook** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a email, calendário e contatos
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_outlook/get_messages">
**Descrição:** Obter mensagens de email da caixa de correio do usuário.
**Parâmetros:**
- `top` (integer, opcional): Número de mensagens a recuperar (máx 1000). Padrão: 10.
- `filter` (string, opcional): Expressão de filtro OData (ex: "isRead eq false").
- `search` (string, opcional): String de consulta de pesquisa.
- `orderby` (string, opcional): Ordenar por campo (ex: "receivedDateTime desc"). Padrão: "receivedDateTime desc".
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
- `expand` (string, opcional): Expandir recursos relacionados inline.
</Accordion>
<Accordion title="microsoft_outlook/send_email">
**Descrição:** Enviar uma mensagem de email.
**Parâmetros:**
- `to_recipients` (array, obrigatório): Array de endereços de email dos destinatários.
- `cc_recipients` (array, opcional): Array de endereços de email dos destinatários em cópia.
- `bcc_recipients` (array, opcional): Array de endereços de email dos destinatários em cópia oculta.
- `subject` (string, obrigatório): Assunto do email.
- `body` (string, obrigatório): Conteúdo do corpo do email.
- `body_type` (string, opcional): Tipo de conteúdo do corpo. Opções: Text, HTML. Padrão: HTML.
- `importance` (string, opcional): Nível de importância da mensagem. Opções: low, normal, high. Padrão: normal.
- `reply_to` (array, opcional): Array de endereços de email para resposta.
- `save_to_sent_items` (boolean, opcional): Se deve salvar a mensagem na pasta Itens Enviados. Padrão: true.
</Accordion>
<Accordion title="microsoft_outlook/get_calendar_events">
**Descrição:** Obter eventos de calendário do calendário do usuário.
**Parâmetros:**
- `top` (integer, opcional): Número de eventos a recuperar (máx 1000). Padrão: 10.
- `skip` (integer, opcional): Número de eventos a pular. Padrão: 0.
- `filter` (string, opcional): Expressão de filtro OData (ex: "start/dateTime ge '2024-01-01T00:00:00Z'").
- `orderby` (string, opcional): Ordenar por campo (ex: "start/dateTime asc"). Padrão: "start/dateTime asc".
</Accordion>
<Accordion title="microsoft_outlook/create_calendar_event">
**Descrição:** Criar um novo evento de calendário.
**Parâmetros:**
- `subject` (string, obrigatório): Assunto/título do evento.
- `body` (string, opcional): Corpo/descrição do evento.
- `start_datetime` (string, obrigatório): Data e hora de início no formato ISO 8601 (ex: '2024-01-20T10:00:00').
- `end_datetime` (string, obrigatório): Data e hora de término no formato ISO 8601.
- `timezone` (string, opcional): Fuso horário (ex: 'Pacific Standard Time'). Padrão: UTC.
- `location` (string, opcional): Local do evento.
- `attendees` (array, opcional): Array de endereços de email dos participantes.
</Accordion>
<Accordion title="microsoft_outlook/get_contacts">
**Descrição:** Obter contatos do catálogo de endereços do usuário.
**Parâmetros:**
- `top` (integer, opcional): Número de contatos a recuperar (máx 1000). Padrão: 10.
- `skip` (integer, opcional): Número de contatos a pular. Padrão: 0.
- `filter` (string, opcional): Expressão de filtro OData.
- `orderby` (string, opcional): Ordenar por campo (ex: "displayName asc"). Padrão: "displayName asc".
</Accordion>
<Accordion title="microsoft_outlook/create_contact">
**Descrição:** Criar um novo contato no catálogo de endereços do usuário.
**Parâmetros:**
- `displayName` (string, obrigatório): Nome de exibição do contato.
- `givenName` (string, opcional): Primeiro nome do contato.
- `surname` (string, opcional): Sobrenome do contato.
- `emailAddresses` (array, opcional): Array de endereços de email. Cada item é um objeto com `address` (string) e `name` (string).
- `businessPhones` (array, opcional): Array de números de telefone comerciais.
- `homePhones` (array, opcional): Array de números de telefone residenciais.
- `jobTitle` (string, opcional): Cargo do contato.
- `companyName` (string, opcional): Nome da empresa do contato.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft Outlook
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft Outlook
outlook_agent = Agent(
role="Assistente de Email",
goal="Gerenciar emails, eventos de calendário e contatos de forma eficiente",
backstory="Um assistente IA especializado em operações do Microsoft Outlook e gerenciamento de comunicação.",
apps=['microsoft_outlook'] # Todas as ações do Outlook estarão disponíveis
)
# Tarefa para enviar um email
send_email_task = Task(
description="Enviar um email para 'colega@exemplo.com' com assunto 'Atualização do Projeto' e corpo 'Olá, aqui está a última atualização do projeto. Atenciosamente.'",
agent=outlook_agent,
expected_output="Email enviado com sucesso para colega@exemplo.com"
)
# Execute a tarefa
crew = Crew(
agents=[outlook_agent],
tasks=[send_email_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a email, calendário e contatos.
- Escopos necessários incluem: `Mail.Read`, `Mail.Send`, `Calendars.Read`, `Calendars.ReadWrite`, `Contacts.Read`, `Contacts.ReadWrite`.
**Problemas de Envio de Email**
- Certifique-se de que `to_recipients`, `subject` e `body` sejam fornecidos para `send_email`.
- Verifique se os endereços de email estão formatados corretamente.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Outlook.
</Card>

View File

@@ -0,0 +1,185 @@
---
title: Integração Microsoft SharePoint
description: "Gerenciamento de sites, listas e documentos com integração Microsoft SharePoint para CrewAI."
icon: "folder-tree"
mode: "wide"
---
## Visão Geral
Permita que seus agentes acessem e gerenciem sites, listas e bibliotecas de documentos do SharePoint. Recupere informações do site, gerencie itens de lista, faça upload e organize arquivos, e simplifique seus fluxos de trabalho do SharePoint com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft SharePoint, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft com acesso ao SharePoint
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft SharePoint
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft SharePoint** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a sites e arquivos do SharePoint
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_sharepoint/get_sites">
**Descrição:** Obter todos os sites do SharePoint aos quais o usuário tem acesso.
**Parâmetros:**
- `search` (string, opcional): Consulta de pesquisa para filtrar sites.
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'displayName,id,webUrl').
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
- `expand` (string, opcional): Expandir recursos relacionados inline.
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
- `skip` (integer, opcional): Número de itens a pular (mín 0).
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas (ex: 'displayName desc').
</Accordion>
<Accordion title="microsoft_sharepoint/get_site">
**Descrição:** Obter informações sobre um site específico do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `select` (string, opcional): Selecionar propriedades específicas para retornar (ex: 'displayName,id,webUrl,drives').
- `expand` (string, opcional): Expandir recursos relacionados inline (ex: 'drives,lists').
</Accordion>
<Accordion title="microsoft_sharepoint/get_site_lists">
**Descrição:** Obter todas as listas em um site do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
</Accordion>
<Accordion title="microsoft_sharepoint/get_list">
**Descrição:** Obter informações sobre uma lista específica.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `list_id` (string, obrigatório): O ID da lista.
</Accordion>
<Accordion title="microsoft_sharepoint/get_list_items">
**Descrição:** Obter itens de uma lista do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `list_id` (string, obrigatório): O ID da lista.
- `expand` (string, opcional): Expandir dados relacionados (ex: 'fields').
</Accordion>
<Accordion title="microsoft_sharepoint/create_list_item">
**Descrição:** Criar um novo item em uma lista do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `list_id` (string, obrigatório): O ID da lista.
- `fields` (object, obrigatório): Os valores de campo para o novo item.
</Accordion>
<Accordion title="microsoft_sharepoint/update_list_item">
**Descrição:** Atualizar um item em uma lista do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `list_id` (string, obrigatório): O ID da lista.
- `item_id` (string, obrigatório): O ID do item a atualizar.
- `fields` (object, obrigatório): Os valores de campo a atualizar.
</Accordion>
<Accordion title="microsoft_sharepoint/delete_list_item">
**Descrição:** Excluir um item de uma lista do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `list_id` (string, obrigatório): O ID da lista.
- `item_id` (string, obrigatório): O ID do item a excluir.
</Accordion>
<Accordion title="microsoft_sharepoint/upload_file_to_library">
**Descrição:** Fazer upload de um arquivo para uma biblioteca de documentos do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `file_path` (string, obrigatório): O caminho onde fazer upload do arquivo (ex: 'pasta/nomeDoArquivo.txt').
- `content` (string, obrigatório): O conteúdo do arquivo a fazer upload.
</Accordion>
<Accordion title="microsoft_sharepoint/get_drive_items">
**Descrição:** Obter arquivos e pastas de uma biblioteca de documentos do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
</Accordion>
<Accordion title="microsoft_sharepoint/delete_drive_item">
**Descrição:** Excluir um arquivo ou pasta da biblioteca de documentos do SharePoint.
**Parâmetros:**
- `site_id` (string, obrigatório): O ID do site do SharePoint.
- `item_id` (string, obrigatório): O ID do arquivo ou pasta a excluir.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft SharePoint
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft SharePoint
sharepoint_agent = Agent(
role="Gerenciador SharePoint",
goal="Gerenciar sites, listas e documentos do SharePoint de forma eficiente",
backstory="Um assistente IA especializado em administração do Microsoft SharePoint e gerenciamento de conteúdo.",
apps=['microsoft_sharepoint'] # Todas as ações do SharePoint estarão disponíveis
)
# Tarefa para obter todos os sites
get_sites_task = Task(
description="Listar todos os sites do SharePoint aos quais tenho acesso.",
agent=sharepoint_agent,
expected_output="Uma lista de sites do SharePoint com seus nomes de exibição e URLs."
)
# Execute a tarefa
crew = Crew(
agents=[sharepoint_agent],
tasks=[get_sites_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso ao SharePoint (ex: `Sites.Read.All`, `Sites.ReadWrite.All`).
- Verifique se a conexão OAuth inclui todos os escopos necessários.
**Problemas de ID de Site/Lista/Item**
- Verifique novamente os IDs de site, lista e item para correção.
- Certifique-se de que os recursos referenciados existem e estão acessíveis.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft SharePoint.
</Card>

View File

@@ -0,0 +1,136 @@
---
title: Integração Microsoft Teams
description: "Colaboração em equipe e comunicação com integração Microsoft Teams para CrewAI."
icon: "users"
mode: "wide"
---
## Visão Geral
Permita que seus agentes acessem dados do Teams, enviem mensagens, criem reuniões e gerenciem canais. Automatize a comunicação da equipe, agende reuniões, recupere mensagens e simplifique seus fluxos de trabalho de colaboração com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft Teams, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft com acesso ao Teams
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft Teams
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft Teams** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso ao Teams
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_teams/get_teams">
**Descrição:** Obter todas as equipes das quais o usuário é membro.
**Parâmetros:**
- Nenhum parâmetro necessário.
</Accordion>
<Accordion title="microsoft_teams/get_channels">
**Descrição:** Obter canais em uma equipe específica.
**Parâmetros:**
- `team_id` (string, obrigatório): O ID da equipe.
</Accordion>
<Accordion title="microsoft_teams/send_message">
**Descrição:** Enviar uma mensagem para um canal do Teams.
**Parâmetros:**
- `team_id` (string, obrigatório): O ID da equipe.
- `channel_id` (string, obrigatório): O ID do canal.
- `message` (string, obrigatório): O conteúdo da mensagem.
- `content_type` (string, opcional): Tipo de conteúdo (html ou text). Opções: html, text. Padrão: text.
</Accordion>
<Accordion title="microsoft_teams/get_messages">
**Descrição:** Obter mensagens de um canal do Teams.
**Parâmetros:**
- `team_id` (string, obrigatório): O ID da equipe.
- `channel_id` (string, obrigatório): O ID do canal.
- `top` (integer, opcional): Número de mensagens a recuperar (máx 50). Padrão: 20.
</Accordion>
<Accordion title="microsoft_teams/create_meeting">
**Descrição:** Criar uma reunião do Teams.
**Parâmetros:**
- `subject` (string, obrigatório): Assunto/título da reunião.
- `startDateTime` (string, obrigatório): Hora de início da reunião (formato ISO 8601 com fuso horário).
- `endDateTime` (string, obrigatório): Hora de término da reunião (formato ISO 8601 com fuso horário).
</Accordion>
<Accordion title="microsoft_teams/search_online_meetings_by_join_url">
**Descrição:** Pesquisar reuniões online por URL de participação na web.
**Parâmetros:**
- `join_web_url` (string, obrigatório): A URL de participação na web da reunião a pesquisar.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft Teams
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft Teams
teams_agent = Agent(
role="Coordenador do Teams",
goal="Gerenciar comunicação e reuniões do Teams de forma eficiente",
backstory="Um assistente IA especializado em operações do Microsoft Teams e colaboração em equipe.",
apps=['microsoft_teams'] # Todas as ações do Teams estarão disponíveis
)
# Tarefa para listar equipes e canais
explore_teams_task = Task(
description="Listar todas as equipes das quais sou membro e depois obter os canais da primeira equipe.",
agent=teams_agent,
expected_output="Lista de equipes e canais exibida."
)
# Execute a tarefa
crew = Crew(
agents=[teams_agent],
tasks=[explore_teams_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso ao Teams.
- Escopos necessários incluem: `Team.ReadBasic.All`, `Channel.ReadBasic.All`, `ChannelMessage.Send`, `ChannelMessage.Read.All`, `OnlineMeetings.ReadWrite`, `OnlineMeetings.Read`.
**Acesso a Equipes e Canais**
- Certifique-se de que você é membro das equipes que está tentando acessar.
- Verifique novamente os IDs de equipe e canal para correção.
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Teams.
</Card>

View File

@@ -0,0 +1,127 @@
---
title: Integração Microsoft Word
description: "Criação e gerenciamento de documentos com integração Microsoft Word para CrewAI."
icon: "file-word"
mode: "wide"
---
## Visão Geral
Permita que seus agentes criem, leiam e gerenciem documentos do Word e arquivos de texto no OneDrive ou SharePoint. Automatize a criação de documentos, recupere conteúdo, gerencie propriedades de documentos e simplifique seus fluxos de trabalho de documentos com automação alimentada por IA.
## Pré-requisitos
Antes de usar a integração Microsoft Word, certifique-se de ter:
- Uma conta [CrewAI AMP](https://app.crewai.com) com assinatura ativa
- Uma conta Microsoft com acesso ao Word e OneDrive/SharePoint
- Conectado sua conta Microsoft através da [página de Integrações](https://app.crewai.com/crewai_plus/connectors)
## Configurando a Integração Microsoft Word
### 1. Conecte sua Conta Microsoft
1. Navegue para [Integrações CrewAI AMP](https://app.crewai.com/crewai_plus/connectors)
2. Encontre **Microsoft Word** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo OAuth
4. Conceda as permissões necessárias para acesso a arquivos
5. Copie seu Token Enterprise das [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
```bash
uv add crewai-tools
```
## Ações Disponíveis
<AccordionGroup>
<Accordion title="microsoft_word/get_documents">
**Descrição:** Obter todos os documentos do Word do OneDrive ou SharePoint.
**Parâmetros:**
- `select` (string, opcional): Selecionar propriedades específicas para retornar.
- `filter` (string, opcional): Filtrar resultados usando sintaxe OData.
- `expand` (string, opcional): Expandir recursos relacionados inline.
- `top` (integer, opcional): Número de itens a retornar (mín 1, máx 999).
- `orderby` (string, opcional): Ordenar resultados por propriedades especificadas.
</Accordion>
<Accordion title="microsoft_word/create_text_document">
**Descrição:** Criar um documento de texto (.txt) com conteúdo. RECOMENDADO para criação de conteúdo programático que precisa ser legível e editável.
**Parâmetros:**
- `file_name` (string, obrigatório): Nome do documento de texto (deve terminar com .txt).
- `content` (string, opcional): Conteúdo de texto para o documento. Padrão: "Este é um novo documento de texto criado via API."
</Accordion>
<Accordion title="microsoft_word/get_document_content">
**Descrição:** Obter o conteúdo de um documento (funciona melhor com arquivos de texto).
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do documento.
</Accordion>
<Accordion title="microsoft_word/get_document_properties">
**Descrição:** Obter propriedades e metadados de um documento.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do documento.
</Accordion>
<Accordion title="microsoft_word/delete_document">
**Descrição:** Excluir um documento.
**Parâmetros:**
- `file_id` (string, obrigatório): O ID do documento a excluir.
</Accordion>
</AccordionGroup>
## Exemplos de Uso
### Configuração Básica do Agente Microsoft Word
```python
from crewai import Agent, Task, Crew
# Crie um agente com capacidades do Microsoft Word
word_agent = Agent(
role="Gerenciador de Documentos",
goal="Gerenciar documentos do Word e arquivos de texto de forma eficiente",
backstory="Um assistente IA especializado em operações de documentos do Microsoft Word e gerenciamento de conteúdo.",
apps=['microsoft_word'] # Todas as ações do Word estarão disponíveis
)
# Tarefa para criar um novo documento de texto
create_doc_task = Task(
description="Criar um novo documento de texto chamado 'notas_reuniao.txt' com conteúdo 'Notas da Reunião de Janeiro de 2024: Pontos-chave de discussão e itens de ação.'",
agent=word_agent,
expected_output="Novo documento de texto 'notas_reuniao.txt' criado com sucesso."
)
# Execute a tarefa
crew = Crew(
agents=[word_agent],
tasks=[create_doc_task]
)
crew.kickoff()
```
## Solução de Problemas
### Problemas Comuns
**Erros de Autenticação**
- Certifique-se de que sua conta Microsoft tenha as permissões necessárias para acesso a arquivos (ex: `Files.Read.All`, `Files.ReadWrite.All`).
- Verifique se a conexão OAuth inclui todos os escopos necessários.
**Problemas de Criação de Arquivos**
- Ao criar documentos de texto, certifique-se de que o `file_name` termine com extensão `.txt`.
- Verifique se você tem permissões de escrita no local de destino (OneDrive/SharePoint).
### Obtendo Ajuda
<Card title="Precisa de Ajuda?" icon="headset" href="mailto:support@crewai.com">
Entre em contato com nossa equipe de suporte para assistência com configuração ou solução de problemas da integração Microsoft Word.
</Card>

View File

@@ -25,7 +25,7 @@ Antes de usar a integração com o Notion, certifique-se de que você tem:
2. Procure por **Notion** na seção de Integrações de Autenticação
3. Clique em **Conectar** e complete o fluxo de OAuth
4. Conceda as permissões necessárias para gerenciamento de páginas e bancos de dados
5. Copie seu Token Enterprise em [Configurações da Conta](https://app.crewai.com/crewai_plus/settings/account)
5. Copie seu Token Enterprise em [Configurações de Integração](https://app.crewai.com/crewai_plus/settings/integrations)
### 2. Instale o Pacote Necessário
@@ -36,7 +36,7 @@ uv add crewai-tools
## Ações Disponíveis
<AccordionGroup>
<Accordion title="NOTION_CREATE_PAGE">
<Accordion title="notion/create_page">
**Descrição:** Cria uma página no Notion.
**Parâmetros:**
@@ -93,7 +93,7 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_UPDATE_PAGE">
<Accordion title="notion/update_page">
**Descrição:** Atualiza uma página no Notion.
**Parâmetros:**
@@ -127,21 +127,21 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_GET_PAGE_BY_ID">
<Accordion title="notion/get_page_by_id">
**Descrição:** Busca uma página pelo ID no Notion.
**Parâmetros:**
- `pageId` (string, obrigatório): Page ID - Especifique o ID da Página a ser buscada. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_ARCHIVE_PAGE">
<Accordion title="notion/archive_page">
**Descrição:** Arquiva uma página no Notion.
**Parâmetros:**
- `pageId` (string, obrigatório): Page ID - Especifique o ID da Página a ser arquivada. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_SEARCH_PAGES">
<Accordion title="notion/search_pages">
**Descrição:** Pesquisa páginas no Notion utilizando filtros.
**Parâmetros:**
@@ -166,14 +166,14 @@ uv add crewai-tools
Campos disponíveis: `query`, `filter.value`, `direction`, `page_size`
</Accordion>
<Accordion title="NOTION_GET_PAGE_CONTENT">
<Accordion title="notion/get_page_content">
**Descrição:** Obtém o conteúdo (blocos) de uma página no Notion.
**Parâmetros:**
- `blockId` (string, obrigatório): Page ID - Especifique o ID de um Bloco ou Página para receber todos os seus blocos filhos na ordem correta. (exemplo: "59833787-2cf9-4fdf-8782-e53db20768a5").
</Accordion>
<Accordion title="NOTION_UPDATE_BLOCK">
<Accordion title="notion/update_block">
**Descrição:** Atualiza um bloco no Notion.
**Parâmetros:**
@@ -260,14 +260,14 @@ uv add crewai-tools
```
</Accordion>
<Accordion title="NOTION_GET_BLOCK_BY_ID">
<Accordion title="notion/get_block_by_id">
**Descrição:** Busca um bloco pelo ID no Notion.
**Parâmetros:**
- `blockId` (string, obrigatório): Block ID - Especifique o ID do Bloco a ser buscado. (exemplo: "9bc30ad4-9373-46a5-84ab-0a7845ee52e6").
</Accordion>
<Accordion title="NOTION_DELETE_BLOCK">
<Accordion title="notion/delete_block">
**Descrição:** Exclui um bloco no Notion.
**Parâmetros:**
@@ -281,19 +281,13 @@ uv add crewai-tools
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Notion tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Notion capabilities
notion_agent = Agent(
role="Documentation Manager",
goal="Manage documentation and knowledge base in Notion efficiently",
backstory="An AI assistant specialized in content management and documentation.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to create a meeting notes page
@@ -315,19 +309,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Notion
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Notion tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["notion_create_page", "notion_update_block", "notion_search_pages"]
)
content_manager = Agent(
role="Content Manager",
goal="Create and manage content pages efficiently",
backstory="An AI assistant that focuses on content creation and management.",
tools=enterprise_tools
apps=['notion']
)
# Task to manage content workflow
@@ -349,17 +336,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
knowledge_curator = Agent(
role="Knowledge Curator",
goal="Curate and organize knowledge base content in Notion",
backstory="An experienced knowledge manager who organizes and maintains comprehensive documentation.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to curate knowledge base
@@ -386,17 +368,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
content_organizer = Agent(
role="Content Organizer",
goal="Organize and structure content blocks for optimal readability",
backstory="An AI assistant that specializes in content structure and user experience.",
tools=[enterprise_tools]
apps=['notion']
)
# Task to organize content structure
@@ -424,17 +401,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
doc_automator = Agent(
role="Documentation Automator",
goal="Automate documentation workflows and maintenance",
backstory="An AI assistant that automates repetitive documentation tasks.",
tools=[enterprise_tools]
apps=['notion']
)
# Complex documentation automation task

View File

@@ -22,7 +22,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Gerenciamento de Registros**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_RECORD_CONTACT">
<Accordion title="salesforce/create_record_contact">
**Descrição:** Crie um novo registro de Contato no Salesforce.
**Parâmetros:**
@@ -35,7 +35,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_LEAD">
<Accordion title="salesforce/create_record_lead">
**Descrição:** Crie um novo registro de Lead no Salesforce.
**Parâmetros:**
@@ -51,7 +51,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/create_record_opportunity">
**Descrição:** Crie um novo registro de Oportunidade no Salesforce.
**Parâmetros:**
@@ -66,7 +66,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_TASK">
<Accordion title="salesforce/create_record_task">
**Descrição:** Crie um novo registro de Tarefa no Salesforce.
**Parâmetros:**
@@ -84,7 +84,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ACCOUNT">
<Accordion title="salesforce/create_record_account">
**Descrição:** Crie um novo registro de Conta no Salesforce.
**Parâmetros:**
@@ -96,7 +96,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta
</Accordion>
<Accordion title="SALESFORCE_CREATE_RECORD_ANY">
<Accordion title="salesforce/create_record_any">
**Descrição:** Crie um registro de qualquer tipo de objeto no Salesforce.
**Nota:** Esta é uma ferramenta flexível para criar registros de tipos de objetos personalizados ou desconhecidos.
@@ -106,7 +106,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Atualização de Registros**
<AccordionGroup>
<Accordion title="SALESFORCE_UPDATE_RECORD_CONTACT">
<Accordion title="salesforce/update_record_contact">
**Descrição:** Atualize um registro de Contato existente no Salesforce.
**Parâmetros:**
@@ -120,7 +120,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Contato
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_LEAD">
<Accordion title="salesforce/update_record_lead">
**Descrição:** Atualize um registro de Lead existente no Salesforce.
**Parâmetros:**
@@ -137,7 +137,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Lead
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_OPPORTUNITY">
<Accordion title="salesforce/update_record_opportunity">
**Descrição:** Atualize um registro de Oportunidade existente no Salesforce.
**Parâmetros:**
@@ -153,7 +153,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Oportunidade
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_TASK">
<Accordion title="salesforce/update_record_task">
**Descrição:** Atualize um registro de Tarefa existente no Salesforce.
**Parâmetros:**
@@ -171,7 +171,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Tarefa
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ACCOUNT">
<Accordion title="salesforce/update_record_account">
**Descrição:** Atualize um registro de Conta existente no Salesforce.
**Parâmetros:**
@@ -184,7 +184,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `additionalFields` (object, opcional): Campos adicionais no formato JSON para campos personalizados de Conta
</Accordion>
<Accordion title="SALESFORCE_UPDATE_RECORD_ANY">
<Accordion title="salesforce/update_record_any">
**Descrição:** Atualize um registro de qualquer tipo de objeto no Salesforce.
**Nota:** Esta é uma ferramenta flexível para atualizar registros de tipos de objetos personalizados ou desconhecidos.
@@ -194,42 +194,42 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Recuperação de Registros**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_CONTACT">
<Accordion title="salesforce/get_record_by_id_contact">
**Descrição:** Obtenha um registro de Contato pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do registro do Contato
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_LEAD">
<Accordion title="salesforce/get_record_by_id_lead">
**Descrição:** Obtenha um registro de Lead pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do registro do Lead
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_id_opportunity">
**Descrição:** Obtenha um registro de Oportunidade pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do registro da Oportunidade
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_TASK">
<Accordion title="salesforce/get_record_by_id_task">
**Descrição:** Obtenha um registro de Tarefa pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do registro da Tarefa
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_id_account">
**Descrição:** Obtenha um registro de Conta pelo seu ID.
**Parâmetros:**
- `recordId` (string, obrigatório): ID do registro da Conta
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_ID_ANY">
<Accordion title="salesforce/get_record_by_id_any">
**Descrição:** Obtenha um registro de qualquer tipo de objeto pelo seu ID.
**Parâmetros:**
@@ -241,7 +241,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Busca de Registros**
<AccordionGroup>
<Accordion title="SALESFORCE_SEARCH_RECORDS_CONTACT">
<Accordion title="salesforce/search_records_contact">
**Descrição:** Pesquise registros de Contato com filtragem avançada.
**Parâmetros:**
@@ -252,7 +252,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_LEAD">
<Accordion title="salesforce/search_records_lead">
**Descrição:** Pesquise registros de Lead com filtragem avançada.
**Parâmetros:**
@@ -263,7 +263,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_OPPORTUNITY">
<Accordion title="salesforce/search_records_opportunity">
**Descrição:** Pesquise registros de Oportunidade com filtragem avançada.
**Parâmetros:**
@@ -274,7 +274,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_TASK">
<Accordion title="salesforce/search_records_task">
**Descrição:** Pesquise registros de Tarefa com filtragem avançada.
**Parâmetros:**
@@ -285,7 +285,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ACCOUNT">
<Accordion title="salesforce/search_records_account">
**Descrição:** Pesquise registros de Conta com filtragem avançada.
**Parâmetros:**
@@ -296,7 +296,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_SEARCH_RECORDS_ANY">
<Accordion title="salesforce/search_records_any">
**Descrição:** Pesquise registros de qualquer tipo de objeto.
**Parâmetros:**
@@ -310,7 +310,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Recuperação por List View**
<AccordionGroup>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_CONTACT">
<Accordion title="salesforce/get_record_by_view_id_contact">
**Descrição:** Obtenha registros de Contato de um List View específico.
**Parâmetros:**
@@ -318,7 +318,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_LEAD">
<Accordion title="salesforce/get_record_by_view_id_lead">
**Descrição:** Obtenha registros de Lead de um List View específico.
**Parâmetros:**
@@ -326,7 +326,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_OPPORTUNITY">
<Accordion title="salesforce/get_record_by_view_id_opportunity">
**Descrição:** Obtenha registros de Oportunidade de um List View específico.
**Parâmetros:**
@@ -334,7 +334,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_TASK">
<Accordion title="salesforce/get_record_by_view_id_task">
**Descrição:** Obtenha registros de Tarefa de um List View específico.
**Parâmetros:**
@@ -342,7 +342,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ACCOUNT">
<Accordion title="salesforce/get_record_by_view_id_account">
**Descrição:** Obtenha registros de Conta de um List View específico.
**Parâmetros:**
@@ -350,7 +350,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `paginationParameters` (object, opcional): Configurações de paginação com pageCursor
</Accordion>
<Accordion title="SALESFORCE_GET_RECORD_BY_VIEW_ID_ANY">
<Accordion title="salesforce/get_record_by_view_id_any">
**Descrição:** Obtenha registros de qualquer tipo de objeto a partir de um List View específico.
**Parâmetros:**
@@ -363,7 +363,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Campos Personalizados**
<AccordionGroup>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_CONTACT">
<Accordion title="salesforce/create_custom_field_contact">
**Descrição:** Crie campos personalizados para objetos de Contato.
**Parâmetros:**
@@ -379,7 +379,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `defaultFieldValue` (string, opcional): Valor padrão do campo
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_LEAD">
<Accordion title="salesforce/create_custom_field_lead">
**Descrição:** Crie campos personalizados para objetos de Lead.
**Parâmetros:**
@@ -395,7 +395,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `defaultFieldValue` (string, opcional): Valor padrão do campo
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_OPPORTUNITY">
<Accordion title="salesforce/create_custom_field_opportunity">
**Descrição:** Crie campos personalizados para objetos de Oportunidade.
**Parâmetros:**
@@ -411,7 +411,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `defaultFieldValue` (string, opcional): Valor padrão do campo
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_TASK">
<Accordion title="salesforce/create_custom_field_task">
**Descrição:** Crie campos personalizados para objetos de Tarefa.
**Parâmetros:**
@@ -427,7 +427,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `defaultFieldValue` (string, opcional): Valor padrão do campo
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ACCOUNT">
<Accordion title="salesforce/create_custom_field_account">
**Descrição:** Crie campos personalizados para objetos de Conta.
**Parâmetros:**
@@ -443,7 +443,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `defaultFieldValue` (string, opcional): Valor padrão do campo
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_FIELD_ANY">
<Accordion title="salesforce/create_custom_field_any">
**Descrição:** Crie campos personalizados para qualquer tipo de objeto.
**Nota:** Esta é uma ferramenta flexível para criar campos personalizados para tipos de objetos personalizados ou desconhecidos.
@@ -453,14 +453,14 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
### **Operações Avançadas**
<AccordionGroup>
<Accordion title="SALESFORCE_WRITE_SOQL_QUERY">
<Accordion title="salesforce/write_soql_query">
**Descrição:** Execute consultas SOQL personalizadas em seus dados do Salesforce.
**Parâmetros:**
- `query` (string, obrigatório): Consulta SOQL (ex.: "SELECT Id, Name FROM Account WHERE Name = 'Exemplo'")
</Accordion>
<Accordion title="SALESFORCE_CREATE_CUSTOM_OBJECT">
<Accordion title="salesforce/create_custom_object">
**Descrição:** Crie um novo objeto personalizado no Salesforce.
**Parâmetros:**
@@ -470,7 +470,7 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
- `recordName` (string, obrigatório): Nome do registro exibido em layouts e buscas (ex.: "Nome da Conta")
</Accordion>
<Accordion title="SALESFORCE_DESCRIBE_ACTION_SCHEMA">
<Accordion title="salesforce/describe_action_schema">
**Descrição:** Obtenha o schema esperado para operações em tipos de objetos específicos.
**Parâmetros:**
@@ -487,19 +487,15 @@ Antes de usar a integração Salesforce, certifique-se de que você possui:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha ferramentas enterprise (ferramentas Salesforce serão incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Crie um agente com capacidades Salesforce
salesforce_agent = Agent(
role="CRM Manager",
goal="Manage customer relationships and sales processes efficiently",
backstory="An AI assistant specialized in CRM operations and sales automation.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Task to create a new lead
@@ -521,19 +517,16 @@ crew.kickoff()
### Filtrando Ferramentas Salesforce Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha apenas ferramentas Salesforce específicas
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["salesforce_create_record_lead", "salesforce_update_record_opportunity", "salesforce_search_records_contact"]
actions_list=["salesforce/create_record_lead", "salesforce/update_record_opportunity", "salesforce/search_records_contact"]
)
sales_manager = Agent(
role="Sales Manager",
goal="Manage leads and opportunities in the sales pipeline",
backstory="An experienced sales manager who handles lead qualification and opportunity management.",
tools=enterprise_tools
apps=['salesforce']
)
# Task to manage sales pipeline
@@ -555,17 +548,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
account_manager = Agent(
role="Account Manager",
goal="Manage customer accounts and maintain strong relationships",
backstory="An AI assistant that specializes in account management and customer relationship building.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Task to manage customer accounts
@@ -591,17 +579,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
data_analyst = Agent(
role="Sales Data Analyst",
goal="Generate insights from Salesforce data using SOQL queries",
backstory="An analytical AI that excels at extracting meaningful insights from CRM data.",
tools=[enterprise_tools]
apps=['salesforce']
)
# Complex task involving SOQL queries and data analysis

View File

@@ -22,7 +22,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
### **Gerenciamento de Clientes**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_CUSTOMERS">
<Accordion title="shopify/get_customers">
**Descrição:** Recupera uma lista de clientes da sua loja Shopify.
**Parâmetros:**
@@ -34,7 +34,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `limit` (string, opcional): Número máximo de clientes a retornar (padrão 250)
</Accordion>
<Accordion title="SHOPIFY_SEARCH_CUSTOMERS">
<Accordion title="shopify/search_customers">
**Descrição:** Pesquise por clientes usando critérios de filtragem avançados.
**Parâmetros:**
@@ -42,7 +42,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `limit` (string, opcional): Número máximo de clientes a retornar (padrão 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_CUSTOMER">
<Accordion title="shopify/create_customer">
**Descrição:** Crie um novo cliente em sua loja Shopify.
**Parâmetros:**
@@ -63,7 +63,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `metafields` (object, opcional): Metacampos adicionais em formato JSON
</Accordion>
<Accordion title="SHOPIFY_UPDATE_CUSTOMER">
<Accordion title="shopify/update_customer">
**Descrição:** Atualize um cliente existente em sua loja Shopify.
**Parâmetros:**
@@ -89,7 +89,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
### **Gestão de Pedidos**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_ORDERS">
<Accordion title="shopify/get_orders">
**Descrição:** Recupera uma lista de pedidos da sua loja Shopify.
**Parâmetros:**
@@ -101,7 +101,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `limit` (string, opcional): Número máximo de pedidos a retornar (padrão 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_ORDER">
<Accordion title="shopify/create_order">
**Descrição:** Crie um novo pedido em sua loja Shopify.
**Parâmetros:**
@@ -114,7 +114,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `note` (string, opcional): Observação do pedido
</Accordion>
<Accordion title="SHOPIFY_UPDATE_ORDER">
<Accordion title="shopify/update_order">
**Descrição:** Atualize um pedido existente em sua loja Shopify.
**Parâmetros:**
@@ -128,7 +128,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `note` (string, opcional): Observação do pedido
</Accordion>
<Accordion title="SHOPIFY_GET_ABANDONED_CARTS">
<Accordion title="shopify/get_abandoned_carts">
**Descrição:** Recupera carrinhos abandonados da sua loja Shopify.
**Parâmetros:**
@@ -144,7 +144,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
### **Gestão de Produtos (REST API)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS">
<Accordion title="shopify/get_products">
**Descrição:** Recupera uma lista de produtos da sua loja Shopify utilizando a REST API.
**Parâmetros:**
@@ -160,7 +160,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `limit` (string, opcional): Número máximo de produtos a retornar (padrão 250)
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT">
<Accordion title="shopify/create_product">
**Descrição:** Crie um novo produto em sua loja Shopify utilizando a REST API.
**Parâmetros:**
@@ -176,7 +176,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `publishToPointToSale` (boolean, opcional): Se deve publicar no ponto de venda
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT">
<Accordion title="shopify/update_product">
**Descrição:** Atualize um produto existente em sua loja Shopify utilizando a REST API.
**Parâmetros:**
@@ -197,14 +197,14 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
### **Gestão de Produtos (GraphQL)**
<AccordionGroup>
<Accordion title="SHOPIFY_GET_PRODUCTS_GRAPHQL">
<Accordion title="shopify/get_products_graphql">
**Descrição:** Recupere produtos utilizando filtros avançados do GraphQL.
**Parâmetros:**
- `productFilterFormula` (object, opcional): Filtro avançado em forma normal disjuntiva com suporte a campos como id, title, vendor, status, handle, tag, created_at, updated_at, published_at
</Accordion>
<Accordion title="SHOPIFY_CREATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/create_product_graphql">
**Descrição:** Crie um novo produto utilizando a API GraphQL com suporte aprimorado a mídias.
**Parâmetros:**
@@ -217,7 +217,7 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
- `additionalFields` (object, opcional): Campos adicionais do produto como status, requiresSellingPlan, giftCard
</Accordion>
<Accordion title="SHOPIFY_UPDATE_PRODUCT_GRAPHQL">
<Accordion title="shopify/update_product_graphql">
**Descrição:** Atualize um produto existente utilizando a API GraphQL com suporte aprimorado a mídias.
**Parâmetros:**
@@ -238,19 +238,13 @@ Antes de utilizar a integração com o Shopify, certifique-se de que você possu
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Shopify tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Shopify capabilities
shopify_agent = Agent(
role="E-commerce Manager",
goal="Manage online store operations and customer relationships efficiently",
backstory="An AI assistant specialized in e-commerce operations and online store management.",
tools=[enterprise_tools]
apps=['shopify']
)
# Task to create a new customer
@@ -272,19 +266,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Shopify
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Shopify tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["shopify_create_customer", "shopify_create_order", "shopify_get_products"]
)
store_manager = Agent(
role="Store Manager",
goal="Manage customer orders and product catalog",
backstory="An experienced store manager who handles customer relationships and inventory management.",
tools=enterprise_tools
apps=['shopify']
)
# Task to manage store operations
@@ -306,17 +293,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
product_manager = Agent(
role="Product Manager",
goal="Manage product catalog and inventory with advanced GraphQL capabilities",
backstory="An AI assistant that specializes in product management and catalog optimization.",
tools=[enterprise_tools]
apps=['shopify']
)
# Task to manage product catalog
@@ -343,17 +325,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="E-commerce Analyst",
goal="Analyze customer behavior and order patterns to optimize store performance",
backstory="An analytical AI that excels at extracting insights from e-commerce data.",
tools=[enterprise_tools]
apps=['shopify']
)
# Complex task involving multiple operations

View File

@@ -22,21 +22,21 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
### **Gerenciamento de Usuários**
<AccordionGroup>
<Accordion title="SLACK_LIST_MEMBERS">
<Accordion title="slack/list_members">
**Descrição:** Lista todos os membros de um canal do Slack.
**Parâmetros:**
- Nenhum parâmetro necessário recupera todos os membros do canal
</Accordion>
<Accordion title="SLACK_GET_USER_BY_EMAIL">
<Accordion title="slack/get_user_by_email">
**Descrição:** Encontre um usuário no seu workspace do Slack pelo endereço de e-mail.
**Parâmetros:**
- `email` (string, obrigatório): O endereço de e-mail de um usuário do workspace
</Accordion>
<Accordion title="SLACK_GET_USERS_BY_NAME">
<Accordion title="slack/get_users_by_name">
**Descrição:** Pesquise usuários pelo nome ou nome de exibição.
**Parâmetros:**
@@ -50,7 +50,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
### **Gerenciamento de Canais**
<AccordionGroup>
<Accordion title="SLACK_LIST_CHANNELS">
<Accordion title="slack/list_channels">
**Descrição:** Lista todos os canais do seu workspace no Slack.
**Parâmetros:**
@@ -61,7 +61,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
### **Mensagens**
<AccordionGroup>
<Accordion title="SLACK_SEND_MESSAGE">
<Accordion title="slack/send_message">
**Descrição:** Envie uma mensagem para um canal do Slack.
**Parâmetros:**
@@ -73,7 +73,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
- `authenticatedUser` (boolean, opcional): Se verdadeiro, a mensagem aparecerá como enviada pelo seu usuário autenticado do Slack ao invés do aplicativo (por padrão é falso)
</Accordion>
<Accordion title="SLACK_SEND_DIRECT_MESSAGE">
<Accordion title="slack/send_direct_message">
**Descrição:** Envie uma mensagem direta para um usuário específico no Slack.
**Parâmetros:**
@@ -89,7 +89,7 @@ Antes de usar a integração com o Slack, certifique-se de que você tenha:
### **Pesquisa & Descoberta**
<AccordionGroup>
<Accordion title="SLACK_SEARCH_MESSAGES">
<Accordion title="slack/search_messages">
**Descrição:** Procure por mensagens em todo o seu workspace do Slack.
**Parâmetros:**
@@ -150,19 +150,13 @@ O Block Kit do Slack permite criar mensagens ricas e interativas. Veja alguns ex
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Slack tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Slack capabilities
slack_agent = Agent(
role="Team Communication Manager",
goal="Facilitate team communication and coordinate collaboration efficiently",
backstory="An AI assistant specialized in team communication and workspace coordination.",
tools=[enterprise_tools]
apps=['slack']
)
# Task to send project updates
@@ -184,19 +178,12 @@ crew.kickoff()
### Filtrando Ferramentas Específicas do Slack
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Slack tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["slack_send_message", "slack_send_direct_message", "slack_search_messages"]
)
communication_manager = Agent(
role="Communication Coordinator",
goal="Manage team communications and ensure important messages reach the right people",
backstory="An experienced communication coordinator who handles team messaging and notifications.",
tools=enterprise_tools
apps=['slack']
)
# Task to coordinate team communication
@@ -218,17 +205,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
notification_agent = Agent(
role="Notification Manager",
goal="Create rich, interactive notifications and manage workspace communication",
backstory="An AI assistant that specializes in creating engaging team notifications and updates.",
tools=[enterprise_tools]
apps=['slack']
)
# Task to send rich notifications
@@ -254,17 +236,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
analytics_agent = Agent(
role="Communication Analyst",
goal="Analyze team communication patterns and extract insights from conversations",
backstory="An analytical AI that excels at understanding team dynamics through communication data.",
tools=[enterprise_tools]
apps=['slack']
)
# Complex task involving search and analysis

View File

@@ -22,7 +22,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
### **Gerenciamento de Clientes**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_CUSTOMER">
<Accordion title="stripe/create_customer">
**Descrição:** Crie um novo cliente em sua conta Stripe.
**Parâmetros:**
@@ -32,14 +32,14 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
- `metadataCreateCustomer` (objeto, opcional): Metadados adicionais como pares chave-valor (exemplo: `{"field1": 1, "field2": 2}`)
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMER_BY_ID">
<Accordion title="stripe/get_customer_by_id">
**Descrição:** Recupera um cliente específico pelo ID do cliente Stripe.
**Parâmetros:**
- `idGetCustomer` (string, obrigatório): O ID do cliente Stripe a ser recuperado
</Accordion>
<Accordion title="STRIPE_GET_CUSTOMERS">
<Accordion title="stripe/get_customers">
**Descrição:** Recupera uma lista de clientes com filtragem opcional.
**Parâmetros:**
@@ -49,7 +49,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
- `limitGetCustomers` (string, opcional): Número máximo de clientes a retornar (padrão: 10)
</Accordion>
<Accordion title="STRIPE_UPDATE_CUSTOMER">
<Accordion title="stripe/update_customer">
**Descrição:** Atualiza as informações de um cliente existente.
**Parâmetros:**
@@ -64,7 +64,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
### **Gerenciamento de Assinaturas**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_SUBSCRIPTION">
<Accordion title="stripe/create_subscription">
**Descrição:** Cria uma nova assinatura para um cliente.
**Parâmetros:**
@@ -73,7 +73,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
- `metadataCreateSubscription` (objeto, opcional): Metadados adicionais para a assinatura
</Accordion>
<Accordion title="STRIPE_GET_SUBSCRIPTIONS">
<Accordion title="stripe/get_subscriptions">
**Descrição:** Recupera assinaturas com filtragem opcional.
**Parâmetros:**
@@ -86,7 +86,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
### **Gerenciamento de Produtos**
<AccordionGroup>
<Accordion title="STRIPE_CREATE_PRODUCT">
<Accordion title="stripe/create_product">
**Descrição:** Cria um novo produto no seu catálogo Stripe.
**Parâmetros:**
@@ -95,14 +95,14 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
- `metadataProduct` (objeto, opcional): Metadados adicionais do produto como pares chave-valor
</Accordion>
<Accordion title="STRIPE_GET_PRODUCT_BY_ID">
<Accordion title="stripe/get_product_by_id">
**Descrição:** Recupera um produto específico pelo ID do produto Stripe.
**Parâmetros:**
- `productId` (string, obrigatório): O ID do produto Stripe a ser recuperado
</Accordion>
<Accordion title="STRIPE_GET_PRODUCTS">
<Accordion title="stripe/get_products">
**Descrição:** Recupera uma lista de produtos com filtragem opcional.
**Parâmetros:**
@@ -115,7 +115,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
### **Operações Financeiras**
<AccordionGroup>
<Accordion title="STRIPE_GET_BALANCE_TRANSACTIONS">
<Accordion title="stripe/get_balance_transactions">
**Descrição:** Recupera transações de saldo da sua conta Stripe.
**Parâmetros:**
@@ -124,7 +124,7 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
- `pageCursor` (string, opcional): Cursor da página para paginação
</Accordion>
<Accordion title="STRIPE_GET_PLANS">
<Accordion title="stripe/get_plans">
**Descrição:** Recupera planos de assinatura da sua conta Stripe.
**Parâmetros:**
@@ -140,19 +140,13 @@ Antes de usar a integração com o Stripe, certifique-se de que você tem:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Get enterprise tools (Stripe tools will be included)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Create an agent with Stripe capabilities
stripe_agent = Agent(
role="Payment Manager",
goal="Manage customer payments, subscriptions, and billing operations efficiently",
backstory="An AI assistant specialized in payment processing and subscription management.",
tools=[enterprise_tools]
apps=['stripe']
)
# Task to create a new customer
@@ -174,19 +168,12 @@ crew.kickoff()
### Filtrando Ferramentas Stripe Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Get only specific Stripe tools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["stripe_create_customer", "stripe_create_subscription", "stripe_get_balance_transactions"]
)
billing_manager = Agent(
role="Billing Manager",
goal="Handle customer billing, subscriptions, and payment processing",
backstory="An experienced billing manager who handles subscription lifecycle and payment operations.",
tools=enterprise_tools
apps=['stripe']
)
# Task to manage billing operations
@@ -208,17 +195,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
subscription_manager = Agent(
role="Subscription Manager",
goal="Manage customer subscriptions and optimize recurring revenue",
backstory="An AI assistant that specializes in subscription lifecycle management and customer retention.",
tools=[enterprise_tools]
apps=['stripe']
)
# Task to manage subscription operations
@@ -245,17 +227,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
financial_analyst = Agent(
role="Financial Analyst",
goal="Analyze payment data and generate financial insights",
backstory="An analytical AI that excels at extracting insights from payment and subscription data.",
tools=[enterprise_tools]
apps=['stripe']
)
# Complex task involving financial analysis

View File

@@ -22,7 +22,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
### **Gerenciamento de Tickets**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_TICKET">
<Accordion title="zendesk/create_ticket">
**Descrição:** Crie um novo ticket de suporte no Zendesk.
**Parâmetros:**
@@ -40,7 +40,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `ticketCustomFields` (object, opcional): Valores de campos personalizados em formato JSON
</Accordion>
<Accordion title="ZENDESK_UPDATE_TICKET">
<Accordion title="zendesk/update_ticket">
**Descrição:** Atualize um ticket de suporte existente no Zendesk.
**Parâmetros:**
@@ -58,14 +58,14 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `ticketCustomFields` (object, opcional): Valores atualizados dos campos personalizados
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_BY_ID">
<Accordion title="zendesk/get_ticket_by_id">
**Descrição:** Recupere um ticket específico pelo ID.
**Parâmetros:**
- `ticketId` (string, obrigatório): ID do ticket a ser recuperado (ex.: "35436")
</Accordion>
<Accordion title="ZENDESK_ADD_COMMENT_TO_TICKET">
<Accordion title="zendesk/add_comment_to_ticket">
**Descrição:** Adicione um comentário ou nota interna a um ticket existente.
**Parâmetros:**
@@ -75,7 +75,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `isPublic` (boolean, opcional): Verdadeiro para comentários públicos, falso para notas internas
</Accordion>
<Accordion title="ZENDESK_SEARCH_TICKETS">
<Accordion title="zendesk/search_tickets">
**Descrição:** Busque tickets usando diversos filtros e critérios.
**Parâmetros:**
@@ -100,7 +100,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
### **Gerenciamento de Usuários**
<AccordionGroup>
<Accordion title="ZENDESK_CREATE_USER">
<Accordion title="zendesk/create_user">
**Descrição:** Crie um novo usuário no Zendesk.
**Parâmetros:**
@@ -113,7 +113,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `notes` (string, opcional): Notas internas sobre o usuário
</Accordion>
<Accordion title="ZENDESK_UPDATE_USER">
<Accordion title="zendesk/update_user">
**Descrição:** Atualize informações de um usuário existente.
**Parâmetros:**
@@ -127,14 +127,14 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `notes` (string, opcional): Novas notas internas
</Accordion>
<Accordion title="ZENDESK_GET_USER_BY_ID">
<Accordion title="zendesk/get_user_by_id">
**Descrição:** Recupere um usuário específico pelo ID.
**Parâmetros:**
- `userId` (string, obrigatório): ID do usuário a ser recuperado
</Accordion>
<Accordion title="ZENDESK_SEARCH_USERS">
<Accordion title="zendesk/search_users">
**Descrição:** Busque usuários utilizando vários critérios.
**Parâmetros:**
@@ -150,7 +150,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
### **Ferramentas Administrativas**
<AccordionGroup>
<Accordion title="ZENDESK_GET_TICKET_FIELDS">
<Accordion title="zendesk/get_ticket_fields">
**Descrição:** Recupere todos os campos padrão e personalizados disponíveis para tickets.
**Parâmetros:**
@@ -158,7 +158,7 @@ Antes de usar a integração com o Zendesk, certifique-se de que você possui:
- `pageCursor` (string, opcional): Cursor de página para paginação
</Accordion>
<Accordion title="ZENDESK_GET_TICKET_AUDITS">
<Accordion title="zendesk/get_ticket_audits">
**Descrição:** Obtenha registros de auditoria (histórico somente leitura) dos tickets.
**Parâmetros:**
@@ -205,19 +205,15 @@ Progresso padrão de status dos tickets:
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
# Obtenha as ferramentas enterprise (as ferramentas Zendesk serão incluídas)
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
# Crie um agente com capacidades Zendesk
zendesk_agent = Agent(
role="Gerente de Suporte",
goal="Gerenciar tickets de suporte ao cliente e oferecer excelente atendimento",
backstory="Um assistente de IA especializado em operações de suporte ao cliente e gerenciamento de tickets.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Tarefa para criar um novo ticket de suporte
@@ -239,19 +235,16 @@ crew.kickoff()
### Filtrando Ferramentas Zendesk Específicas
```python
from crewai_tools import CrewaiEnterpriseTools
# Obtenha apenas ferramentas Zendesk específicas
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token",
actions_list=["zendesk_create_ticket", "zendesk_update_ticket", "zendesk_add_comment_to_ticket"]
actions_list=["zendesk/create_ticket", "zendesk/update_ticket", "zendesk/add_comment_to_ticket"]
)
support_agent = Agent(
role="Agente de Suporte ao Cliente",
goal="Atender consultas de clientes e resolver issues de suporte de forma eficiente",
backstory="Um agente de suporte experiente que se especializa em resolução de tickets e comunicação com clientes.",
tools=enterprise_tools
apps=['zendesk']
)
# Tarefa para gerenciar o fluxo de suporte
@@ -273,17 +266,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
ticket_manager = Agent(
role="Gerente de Tickets",
goal="Gerenciar fluxos de tickets de suporte e garantir resolução tempestiva",
backstory="Um assistente de IA que se especializa em triagem de tickets de suporte e otimização de fluxos de trabalho.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Tarefa para gerenciar o ciclo de vida do ticket
@@ -310,17 +298,12 @@ crew.kickoff()
```python
from crewai import Agent, Task, Crew
from crewai_tools import CrewaiEnterpriseTools
enterprise_tools = CrewaiEnterpriseTools(
enterprise_token="your_enterprise_token"
)
support_analyst = Agent(
role="Analista de Suporte",
goal="Analisar métricas de suporte e gerar insights para desempenho da equipe",
backstory="Um IA analítico que se destaca na extração de insights a partir de dados de suporte e padrões de tickets.",
tools=[enterprise_tools]
apps=['zendesk']
)
# Tarefa complexa envolvendo análise e geração de relatórios

View File

@@ -0,0 +1,335 @@
## Building CrewAI Tools
This guide shows you how to build highquality CrewAI tools that match the patterns in this repository and are ready to be merged. It focuses on: architecture, conventions, environment variables, dependencies, testing, documentation, and a complete example.
### Who this is for
- Contributors creating new tools under `crewai_tools/tools/*`
- Maintainers reviewing PRs for consistency and DX
---
## Quickstart checklist
1. Create a new folder under `crewai_tools/tools/<your_tool_name>/` with a `README.md` and a `<your_tool_name>.py`.
2. Implement a class that ends with `Tool` and subclasses `BaseTool` (or `RagTool` when appropriate).
3. Define a Pydantic `args_schema` with explicit field descriptions and validation.
4. Declare `env_vars` and `package_dependencies` in the class when needed.
5. Lazily initialize clients in `__init__` or `_run` and handle missing credentials with clear errors.
6. Implement `_run(...) -> str | dict` and, if needed, `_arun(...)`.
7. Add tests under `tests/tools/` (unit, no real network calls; mock or record safely).
8. Add a concise tool `README.md` with usage and required env vars.
9. If you add optional dependencies, register them in `pyproject.toml` under `[project.optional-dependencies]` and reference that extra in your tool docs.
10. Run `uv run pytest` and `pre-commit run -a` locally; ensure green.
---
## Tool anatomy and conventions
### BaseTool pattern
All tools follow this structure:
```python
from typing import Any, List, Optional, Type
import os
from pydantic import BaseModel, Field
from crewai.tools import BaseTool, EnvVar
class MyToolInput(BaseModel):
"""Input schema for MyTool."""
query: str = Field(..., description="Your input description here")
limit: int = Field(5, ge=1, le=50, description="Max items to return")
class MyTool(BaseTool):
name: str = "My Tool"
description: str = "Explain succinctly what this tool does and when to use it."
args_schema: Type[BaseModel] = MyToolInput
# Only include when applicable
env_vars: List[EnvVar] = [
EnvVar(name="MY_API_KEY", description="API key for My service", required=True),
]
package_dependencies: List[str] = ["my-sdk"]
def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs)
# Lazy import to keep base install light
try:
import my_sdk # noqa: F401
except Exception as exc:
raise ImportError(
"Missing optional dependency 'my-sdk'. Install with: \n"
" uv add crewai-tools --extra my-sdk\n"
"or\n"
" pip install my-sdk\n"
) from exc
if "MY_API_KEY" not in os.environ:
raise ValueError("Environment variable MY_API_KEY is required for MyTool")
def _run(self, query: str, limit: int = 5, **_: Any) -> str:
"""Synchronous execution. Return a concise string or JSON string."""
# Implement your logic here; do not print. Return the content.
# Handle errors gracefully, return clear messages.
return f"Processed {query} with limit={limit}"
async def _arun(self, *args: Any, **kwargs: Any) -> str:
"""Optional async counterpart if your client supports it."""
# Prefer delegating to _run when the client is thread-safe
return self._run(*args, **kwargs)
```
Key points:
- Class name must end with `Tool` to be autodiscovered by our tooling.
- Use `args_schema` for inputs; always include `description` and validation.
- Validate env vars early and fail with actionable errors.
- Keep outputs deterministic and compact; favor `str` (possibly JSONencoded) or small dicts converted to strings.
- Avoid printing; return the final string.
### Error handling
- Wrap network and I/O with try/except and return a helpful message. See `BraveSearchTool` and others for patterns.
- Validate required inputs and environment configuration with clear messages.
- Keep exceptions userfriendly; do not leak stack traces.
### Rate limiting and retries
- If the upstream API enforces request pacing, implement minimal rate limiting (see `BraveSearchTool`).
- Consider idempotency and backoff for transient errors where appropriate.
### Async support
- Implement `_arun` only if your library has a true async client or your sync calls are threadsafe.
- Otherwise, delegate `_arun` to `_run` as in multiple existing tools.
### Returning values
- Return a string (or JSON string) thats ready to display in an agent transcript.
- If returning structured data, keep it small and humanreadable. Use stable keys and ordering.
---
## RAG tools and adapters
If your tool is a knowledge source, consider extending `RagTool` and/or creating an adapter.
- `RagTool` exposes `add(...)` and a `query(question: str) -> str` contract through an `Adapter`.
- See `crewai_tools/tools/rag/rag_tool.py` and adapters like `embedchain_adapter.py` and `lancedb_adapter.py`.
Minimal adapter example:
```python
from typing import Any
from pydantic import BaseModel
from crewai_tools.tools.rag.rag_tool import Adapter, RagTool
class MemoryAdapter(Adapter):
store: list[str] = []
def add(self, text: str, **_: Any) -> None:
self.store.append(text)
def query(self, question: str) -> str:
# naive demo: return all text containing any word from the question
tokens = set(question.lower().split())
hits = [t for t in self.store if tokens & set(t.lower().split())]
return "\n".join(hits) if hits else "No relevant content found."
class MemoryRagTool(RagTool):
name: str = "Inmemory RAG"
description: str = "Toy RAG that stores text in memory and returns matches."
adapter: Adapter = MemoryAdapter()
```
When using external vector DBs (MongoDB, Qdrant, Weaviate), study the existing tools to follow indexing, embedding, and query configuration patterns closely.
---
## Toolkits (multiple related tools)
Some integrations expose a toolkit (a group of tools) rather than a single class. See Bedrock `browser_toolkit.py` and `code_interpreter_toolkit.py`.
Guidelines:
- Provide small, focused `BaseTool` classes for each operation (e.g., `navigate`, `click`, `extract_text`).
- Offer a helper `create_<name>_toolkit(...) -> Tuple[ToolkitClass, List[BaseTool]]` to create tools and manage resources.
- If you open external resources (browsers, interpreters), support cleanup methods and optionally context manager usage.
---
## Environment variables and dependencies
### env_vars
- Declare as `env_vars: List[EnvVar]` with `name`, `description`, `required`, and optional `default`.
- Validate presence in `__init__` or on first `_run` call.
### Dependencies
- List runtime packages in `package_dependencies` on the class.
- If they are genuinely optional, add an extra under `[project.optional-dependencies]` in `pyproject.toml` (e.g., `tavily-python`, `serpapi`, `scrapfly-sdk`).
- Use lazy imports to avoid hard deps for users who dont need the tool.
---
## Testing
Place tests under `tests/tools/` and follow these rules:
- Do not hit real external services in CI. Use mocks, fakes, or recorded fixtures where allowed.
- Validate input validation, env var handling, error messages, and happy path output formatting.
- Keep tests fast and deterministic.
Example skeleton (`tests/tools/my_tool_test.py`):
```python
import os
import pytest
from crewai_tools.tools.my_tool.my_tool import MyTool
def test_requires_env_var(monkeypatch):
monkeypatch.delenv("MY_API_KEY", raising=False)
with pytest.raises(ValueError):
MyTool()
def test_happy_path(monkeypatch):
monkeypatch.setenv("MY_API_KEY", "test")
tool = MyTool()
result = tool.run(query="hello", limit=2)
assert "hello" in result
```
Run locally:
```bash
uv run pytest
pre-commit run -a
```
---
## Documentation
Each tool must include a `README.md` in its folder with:
- What it does and when to use it
- Required env vars and optional extras (with install snippet)
- Minimal usage example
Update the root `README.md` only if the tool introduces a new category or notable capability.
---
## Discovery and specs
Our internal tooling discovers classes whose names end with `Tool`. Keep your class exported from the module path under `crewai_tools/tools/...` to be picked up by scripts like `generate_tool_specs.py`.
---
## Full example: “Weather Search Tool”
This example demonstrates: `args_schema`, `env_vars`, `package_dependencies`, lazy imports, validation, and robust error handling.
```python
# file: crewai_tools/tools/weather_tool/weather_tool.py
from typing import Any, List, Optional, Type
import os
import requests
from pydantic import BaseModel, Field
from crewai.tools import BaseTool, EnvVar
class WeatherToolInput(BaseModel):
"""Input schema for WeatherTool."""
city: str = Field(..., description="City name, e.g., 'Berlin'")
country: Optional[str] = Field(None, description="ISO country code, e.g., 'DE'")
units: str = Field(
default="metric",
description="Units system: 'metric' or 'imperial'",
pattern=r"^(metric|imperial)$",
)
class WeatherTool(BaseTool):
name: str = "Weather Search"
description: str = (
"Look up current weather for a city using a public weather API."
)
args_schema: Type[BaseModel] = WeatherToolInput
env_vars: List[EnvVar] = [
EnvVar(
name="WEATHER_API_KEY",
description="API key for the weather service",
required=True,
),
]
package_dependencies: List[str] = ["requests"]
base_url: str = "https://api.openweathermap.org/data/2.5/weather"
def __init__(self, **kwargs: Any) -> None:
super().__init__(**kwargs)
if "WEATHER_API_KEY" not in os.environ:
raise ValueError("WEATHER_API_KEY is required for WeatherTool")
def _run(self, city: str, country: Optional[str] = None, units: str = "metric") -> str:
try:
q = f"{city},{country}" if country else city
params = {
"q": q,
"units": units,
"appid": os.environ["WEATHER_API_KEY"],
}
resp = requests.get(self.base_url, params=params, timeout=10)
resp.raise_for_status()
data = resp.json()
main = data.get("weather", [{}])[0].get("main", "Unknown")
desc = data.get("weather", [{}])[0].get("description", "")
temp = data.get("main", {}).get("temp")
feels = data.get("main", {}).get("feels_like")
city_name = data.get("name", city)
return (
f"Weather in {city_name}: {main} ({desc}). "
f"Temperature: {temp}°, feels like {feels}°."
)
except requests.Timeout:
return "Weather service timed out. Please try again later."
except requests.HTTPError as e:
return f"Weather service error: {e.response.status_code} {e.response.text[:120]}"
except Exception as e:
return f"Unexpected error fetching weather: {e}"
```
Folder layout:
```
crewai_tools/tools/weather_tool/
├─ weather_tool.py
└─ README.md
```
And `README.md` should document env vars and usage.
---
## PR checklist
- [ ] Tool lives under `crewai_tools/tools/<name>/`
- [ ] Class ends with `Tool` and subclasses `BaseTool` (or `RagTool`)
- [ ] Precise `args_schema` with descriptions and validation
- [ ] `env_vars` declared (if any) and validated
- [ ] `package_dependencies` and optional extras added in `pyproject.toml` (if any)
- [ ] Clear error handling; no prints
- [ ] Unit tests added (`tests/tools/`), fast and deterministic
- [ ] Tool `README.md` with usage and env vars
- [ ] `pre-commit` and `pytest` pass locally
---
## Tips for great DX
- Keep responses short and useful—agents quote your tool output directly.
- Validate early; fail fast with actionable guidance.
- Prefer lazy imports; minimize default install surface.
- Mirror patterns from similar tools in this repo for a consistent developer experience.
Happy building!

229
lib/crewai-tools/README.md Normal file
View File

@@ -0,0 +1,229 @@
<div align="center">
![Logo of crewAI, two people rowing on a boat](./assets/crewai_logo.png)
<div align="left">
# CrewAI Tools
Empower your CrewAI agents with powerful, customizable tools to elevate their capabilities and tackle sophisticated, real-world tasks.
CrewAI Tools provide the essential functionality to extend your agents, helping you rapidly enhance your automations with reliable, ready-to-use tools or custom-built solutions tailored precisely to your needs.
---
## Quick Links
[Homepage](https://www.crewai.com/) | [Documentation](https://docs.crewai.com/) | [Examples](https://github.com/crewAIInc/crewAI-examples) | [Community](https://community.crewai.com/)
---
## Available Tools
CrewAI provides an extensive collection of powerful tools ready to enhance your agents:
- **File Management**: `FileReadTool`, `FileWriteTool`
- **Web Scraping**: `ScrapeWebsiteTool`, `SeleniumScrapingTool`
- **Database Integrations**: `MySQLSearchTool`
- **Vector Database Integrations**: `MongoDBVectorSearchTool`, `QdrantVectorSearchTool`, `WeaviateVectorSearchTool`
- **API Integrations**: `SerperApiTool`, `EXASearchTool`
- **AI-powered Tools**: `DallETool`, `VisionTool`, `StagehandTool`
And many more robust tools to simplify your agent integrations.
---
## Creating Custom Tools
CrewAI offers two straightforward approaches to creating custom tools:
### Subclassing `BaseTool`
Define your tool by subclassing:
```python
from crewai.tools import BaseTool
class MyCustomTool(BaseTool):
name: str = "Tool Name"
description: str = "Detailed description here."
def _run(self, *args, **kwargs):
# Your tool logic here
```
### Using the `tool` Decorator
Quickly create lightweight tools using decorators:
```python
from crewai import tool
@tool("Tool Name")
def my_custom_function(input):
# Tool logic here
return output
```
---
## CrewAI Tools and MCP
CrewAI Tools supports the Model Context Protocol (MCP). It gives you access to thousands of tools from the hundreds of MCP servers out there built by the community.
Before you start using MCP with CrewAI tools, you need to install the `mcp` extra dependencies:
```bash
pip install crewai-tools[mcp]
# or
uv add crewai-tools --extra mcp
```
To quickly get started with MCP in CrewAI you have 2 options:
### Option 1: Fully managed connection
In this scenario we use a contextmanager (`with` statement) to start and stop the the connection with the MCP server.
This is done in the background and you only get to interact with the CrewAI tools corresponding to the MCP server's tools.
For an STDIO based MCP server:
```python
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter
serverparams = StdioServerParameters(
command="uvx",
args=["--quiet", "pubmedmcp@0.1.3"],
env={"UV_PYTHON": "3.12", **os.environ},
)
with MCPServerAdapter(serverparams) as tools:
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
agent = Agent(..., tools=tools)
task = Task(...)
crew = Crew(..., agents=[agent], tasks=[task])
crew.kickoff(...)
```
For an SSE based MCP server:
```python
serverparams = {"url": "http://localhost:8000/sse"}
with MCPServerAdapter(serverparams) as tools:
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
agent = Agent(..., tools=tools)
task = Task(...)
crew = Crew(..., agents=[agent], tasks=[task])
crew.kickoff(...)
```
### Option 2: More control over the MCP connection
If you need more control over the MCP connection, you can instanciate the MCPServerAdapter into an `mcp_server_adapter` object which can be used to manage the connection with the MCP server and access the available tools.
**important**: in this case you need to call `mcp_server_adapter.stop()` to make sure the connection is correctly stopped. We recommend that you use a `try ... finally` block run to make sure the `.stop()` is called even in case of errors.
Here is the same example for an STDIO MCP Server:
```python
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter
serverparams = StdioServerParameters(
command="uvx",
args=["--quiet", "pubmedmcp@0.1.3"],
env={"UV_PYTHON": "3.12", **os.environ},
)
try:
mcp_server_adapter = MCPServerAdapter(serverparams)
tools = mcp_server_adapter.tools
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
agent = Agent(..., tools=tools)
task = Task(...)
crew = Crew(..., agents=[agent], tasks=[task])
crew.kickoff(...)
# ** important ** don't forget to stop the connection
finally:
mcp_server_adapter.stop()
```
And finally the same thing but for an SSE MCP Server:
```python
from mcp import StdioServerParameters
from crewai_tools import MCPServerAdapter
serverparams = {"url": "http://localhost:8000/sse"}
try:
mcp_server_adapter = MCPServerAdapter(serverparams)
tools = mcp_server_adapter.tools
# tools is now a list of CrewAI Tools matching 1:1 with the MCP server's tools
agent = Agent(..., tools=tools)
task = Task(...)
crew = Crew(..., agents=[agent], tasks=[task])
crew.kickoff(...)
# ** important ** don't forget to stop the connection
finally:
mcp_server_adapter.stop()
```
### Considerations & Limitations
#### Staying Safe with MCP
Always make sure that you trust the MCP Server before using it. Using an STDIO server will execute code on your machine. Using SSE is still not a silver bullet with many injection possible into your application from a malicious MCP server.
#### Limitations
* At this time we only support tools from MCP Server not other type of primitives like prompts, resources...
* We only return the first text output returned by the MCP Server tool using `.content[0].text`
---
## Why Use CrewAI Tools?
- **Simplicity & Flexibility**: Easy-to-use yet powerful enough for complex workflows.
- **Rapid Integration**: Seamlessly incorporate external services, APIs, and databases.
- **Enterprise Ready**: Built for stability, performance, and consistent results.
---
## Contribution Guidelines
We welcome contributions from the community!
1. Fork and clone the repository.
2. Create a new branch (`git checkout -b feature/my-feature`).
3. Commit your changes (`git commit -m 'Add my feature'`).
4. Push your branch (`git push origin feature/my-feature`).
5. Open a pull request.
---
## Developer Quickstart
```shell
pip install crewai[tools]
```
### Development Setup
- Install dependencies: `uv sync`
- Run tests: `uv run pytest`
- Run static type checking: `uv run pyright`
- Set up pre-commit hooks: `pre-commit install`
---
## Support and Community
Join our rapidly growing community and receive real-time support:
- [Discourse](https://community.crewai.com/)
- [Open an Issue](https://github.com/crewAIInc/crewAI/issues)
Build smarter, faster, and more powerful AI solutions—powered by CrewAI Tools.

View File

@@ -0,0 +1,156 @@
#!/usr/bin/env python3
from collections.abc import Mapping
import inspect
import json
from pathlib import Path
from typing import Any, cast
from crewai.tools.base_tool import BaseTool, EnvVar
from crewai_tools import tools
from pydantic import BaseModel
from pydantic.json_schema import GenerateJsonSchema
from pydantic_core import PydanticOmit
class SchemaGenerator(GenerateJsonSchema):
def handle_invalid_for_json_schema(self, schema, error_info):
raise PydanticOmit
class ToolSpecExtractor:
def __init__(self) -> None:
self.tools_spec: list[dict[str, Any]] = []
self.processed_tools: set[str] = set()
def extract_all_tools(self) -> list[dict[str, Any]]:
for name in dir(tools):
if name.endswith("Tool") and name not in self.processed_tools:
obj = getattr(tools, name, None)
if inspect.isclass(obj) and issubclass(obj, BaseTool):
self.extract_tool_info(obj)
self.processed_tools.add(name)
return self.tools_spec
def extract_tool_info(self, tool_class: type[BaseTool]) -> None:
try:
core_schema = tool_class.__pydantic_core_schema__
if not core_schema:
return
schema = self._unwrap_schema(core_schema)
fields = schema.get("schema", {}).get("fields", {})
tool_info = {
"name": tool_class.__name__,
"humanized_name": self._extract_field_default(
fields.get("name"), fallback=tool_class.__name__
),
"description": str(
self._extract_field_default(fields.get("description"))
).strip(),
"run_params_schema": self._extract_params(fields.get("args_schema")),
"init_params_schema": self._extract_init_params(tool_class),
"env_vars": self._extract_env_vars(fields.get("env_vars")),
"package_dependencies": self._extract_field_default(
fields.get("package_dependencies"), fallback=[]
),
}
self.tools_spec.append(tool_info)
except Exception: # noqa: S110
pass
@staticmethod
def _unwrap_schema(schema: Mapping[str, Any] | dict[str, Any]) -> dict[str, Any]:
result: dict[str, Any] = dict(schema)
while (
result.get("type") in {"function-after", "default"} and "schema" in result
):
result = dict(result["schema"])
return result
@staticmethod
def _extract_field_default(
field: dict | None, fallback: str | list[Any] = ""
) -> str | list[Any] | int:
if not field:
return fallback
schema = field.get("schema", {})
default = schema.get("default")
return default if isinstance(default, (list, str, int)) else fallback
@staticmethod
def _extract_params(args_schema_field: dict | None) -> dict[str, Any]:
if not args_schema_field:
return {}
args_schema_class = args_schema_field.get("schema", {}).get("default")
if not (
inspect.isclass(args_schema_class)
and issubclass(args_schema_class, BaseModel)
):
return {}
# Cast to type[BaseModel] after runtime check
schema_class = cast(type[BaseModel], args_schema_class)
try:
return schema_class.model_json_schema(schema_generator=SchemaGenerator)
except Exception:
return {}
@staticmethod
def _extract_env_vars(env_vars_field: dict | None) -> list[dict[str, Any]]:
if not env_vars_field:
return []
return [
{
"name": env_var.name,
"description": env_var.description,
"required": env_var.required,
"default": env_var.default,
}
for env_var in env_vars_field.get("schema", {}).get("default", [])
if isinstance(env_var, EnvVar)
]
@staticmethod
def _extract_init_params(tool_class: type[BaseTool]) -> dict[str, Any]:
ignored_init_params = [
"name",
"description",
"env_vars",
"args_schema",
"description_updated",
"cache_function",
"result_as_answer",
"max_usage_count",
"current_usage_count",
"package_dependencies",
]
json_schema = tool_class.model_json_schema(
schema_generator=SchemaGenerator, mode="serialization"
)
json_schema["properties"] = {
key: value
for key, value in json_schema["properties"].items()
if key not in ignored_init_params
}
return json_schema
def save_to_json(self, output_path: str) -> None:
with open(output_path, "w", encoding="utf-8") as f:
json.dump({"tools": self.tools_spec}, f, indent=2, sort_keys=True)
if __name__ == "__main__":
output_file = Path(__file__).parent / "tool.specs.json"
extractor = ToolSpecExtractor()
extractor.extract_all_tools()
extractor.save_to_json(str(output_file))

View File

@@ -0,0 +1,153 @@
[project]
name = "crewai-tools"
dynamic = ["version"]
description = "Set of tools for the crewAI framework"
readme = "README.md"
authors = [
{ name = "João Moura", email = "joaomdmoura@gmail.com" },
]
requires-python = ">=3.10, <3.14"
dependencies = [
"lancedb>=0.5.4",
"pytube>=15.0.0",
"requests>=2.32.5",
"docker>=7.1.0",
"crewai==1.0.0a4",
"lancedb>=0.5.4",
"tiktoken>=0.8.0",
"stagehand>=0.4.1",
"beautifulsoup4>=4.13.4",
"pypdf>=5.9.0",
"python-docx>=1.2.0",
"youtube-transcript-api>=1.2.2",
]
[project.urls]
Homepage = "https://crewai.com"
Repository = "https://github.com/crewAIInc/crewAI"
Documentation = "https://docs.crewai.com"
[project.optional-dependencies]
scrapfly-sdk = [
"scrapfly-sdk>=0.8.19",
]
sqlalchemy = [
"sqlalchemy>=2.0.35",
]
multion = [
"multion>=1.1.0",
]
firecrawl-py = [
"firecrawl-py>=1.8.0",
]
composio-core = [
"composio-core>=0.6.11.post1",
]
browserbase = [
"browserbase>=1.0.5",
]
weaviate-client = [
"weaviate-client>=4.10.2",
]
patronus = [
"patronus>=0.0.16",
]
serpapi = [
"serpapi>=0.1.5",
]
beautifulsoup4 = [
"beautifulsoup4>=4.12.3",
]
selenium = [
"selenium>=4.27.1",
]
spider-client = [
"spider-client>=0.1.25",
]
scrapegraph-py = [
"scrapegraph-py>=1.9.0",
]
linkup-sdk = [
"linkup-sdk>=0.2.2",
]
tavily-python = [
"tavily-python>=0.5.4",
]
hyperbrowser = [
"hyperbrowser>=0.18.0",
]
snowflake = [
"cryptography>=43.0.3",
"snowflake-connector-python>=3.12.4",
"snowflake-sqlalchemy>=1.7.3",
]
singlestore = [
"singlestoredb>=1.12.4",
"SQLAlchemy>=2.0.40",
]
exa-py = [
"exa-py>=1.8.7",
]
qdrant-client = [
"qdrant-client>=1.12.1",
]
apify = [
"langchain-apify>=0.1.2,<1.0.0",
]
databricks-sdk = [
"databricks-sdk>=0.46.0",
]
couchbase = [
"couchbase>=4.3.5",
]
mcp = [
"mcp>=1.6.0",
"mcpadapt>=0.1.9",
]
stagehand = [
"stagehand>=0.4.1",
]
github = [
"gitpython==3.1.38",
"PyGithub==1.59.1",
]
rag = [
"python-docx>=1.1.0",
"lxml>=5.3.0,<5.4.0", # Pin to avoid etree import issues in 5.4.0
]
xml = [
"unstructured[local-inference, all-docs]>=0.17.2"
]
oxylabs = [
"oxylabs==2.0.0"
]
mongodb = [
"pymongo>=4.13"
]
mysql = [
"pymysql>=1.1.1"
]
postgresql = [
"psycopg2-binary>=2.9.10"
]
bedrock = [
"beautifulsoup4>=4.13.4",
"bedrock-agentcore>=0.1.0",
"playwright>=1.52.0",
"nest-asyncio>=1.6.0",
]
contextual = [
"contextual-client>=0.1.0",
"nest-asyncio>=1.6.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.version]
path = "src/crewai_tools/__init__.py"

View File

@@ -0,0 +1,294 @@
from crewai_tools.adapters.enterprise_adapter import EnterpriseActionTool
from crewai_tools.adapters.mcp_adapter import MCPServerAdapter
from crewai_tools.adapters.zapier_adapter import ZapierActionTool
from crewai_tools.aws.bedrock.agents.invoke_agent_tool import BedrockInvokeAgentTool
from crewai_tools.aws.bedrock.knowledge_base.retriever_tool import (
BedrockKBRetrieverTool,
)
from crewai_tools.aws.s3.reader_tool import S3ReaderTool
from crewai_tools.aws.s3.writer_tool import S3WriterTool
from crewai_tools.tools.ai_mind_tool.ai_mind_tool import AIMindTool
from crewai_tools.tools.apify_actors_tool.apify_actors_tool import ApifyActorsTool
from crewai_tools.tools.arxiv_paper_tool.arxiv_paper_tool import ArxivPaperTool
from crewai_tools.tools.brave_search_tool.brave_search_tool import BraveSearchTool
from crewai_tools.tools.brightdata_tool.brightdata_dataset import (
BrightDataDatasetTool,
)
from crewai_tools.tools.brightdata_tool.brightdata_serp import BrightDataSearchTool
from crewai_tools.tools.brightdata_tool.brightdata_unlocker import (
BrightDataWebUnlockerTool,
)
from crewai_tools.tools.browserbase_load_tool.browserbase_load_tool import (
BrowserbaseLoadTool,
)
from crewai_tools.tools.code_docs_search_tool.code_docs_search_tool import (
CodeDocsSearchTool,
)
from crewai_tools.tools.code_interpreter_tool.code_interpreter_tool import (
CodeInterpreterTool,
)
from crewai_tools.tools.composio_tool.composio_tool import ComposioTool
from crewai_tools.tools.contextualai_create_agent_tool.contextual_create_agent_tool import (
ContextualAICreateAgentTool,
)
from crewai_tools.tools.contextualai_parse_tool.contextual_parse_tool import (
ContextualAIParseTool,
)
from crewai_tools.tools.contextualai_query_tool.contextual_query_tool import (
ContextualAIQueryTool,
)
from crewai_tools.tools.contextualai_rerank_tool.contextual_rerank_tool import (
ContextualAIRerankTool,
)
from crewai_tools.tools.couchbase_tool.couchbase_tool import (
CouchbaseFTSVectorSearchTool,
)
from crewai_tools.tools.crewai_enterprise_tools.crewai_enterprise_tools import (
CrewaiEnterpriseTools,
)
from crewai_tools.tools.crewai_platform_tools.crewai_platform_tools import (
CrewaiPlatformTools,
)
from crewai_tools.tools.csv_search_tool.csv_search_tool import CSVSearchTool
from crewai_tools.tools.dalle_tool.dalle_tool import DallETool
from crewai_tools.tools.databricks_query_tool.databricks_query_tool import (
DatabricksQueryTool,
)
from crewai_tools.tools.directory_read_tool.directory_read_tool import (
DirectoryReadTool,
)
from crewai_tools.tools.directory_search_tool.directory_search_tool import (
DirectorySearchTool,
)
from crewai_tools.tools.docx_search_tool.docx_search_tool import DOCXSearchTool
from crewai_tools.tools.exa_tools.exa_search_tool import EXASearchTool
from crewai_tools.tools.file_read_tool.file_read_tool import FileReadTool
from crewai_tools.tools.file_writer_tool.file_writer_tool import FileWriterTool
from crewai_tools.tools.files_compressor_tool.files_compressor_tool import (
FileCompressorTool,
)
from crewai_tools.tools.firecrawl_crawl_website_tool.firecrawl_crawl_website_tool import (
FirecrawlCrawlWebsiteTool,
)
from crewai_tools.tools.firecrawl_scrape_website_tool.firecrawl_scrape_website_tool import (
FirecrawlScrapeWebsiteTool,
)
from crewai_tools.tools.firecrawl_search_tool.firecrawl_search_tool import (
FirecrawlSearchTool,
)
from crewai_tools.tools.generate_crewai_automation_tool.generate_crewai_automation_tool import (
GenerateCrewaiAutomationTool,
)
from crewai_tools.tools.github_search_tool.github_search_tool import GithubSearchTool
from crewai_tools.tools.hyperbrowser_load_tool.hyperbrowser_load_tool import (
HyperbrowserLoadTool,
)
from crewai_tools.tools.invoke_crewai_automation_tool.invoke_crewai_automation_tool import (
InvokeCrewAIAutomationTool,
)
from crewai_tools.tools.jina_scrape_website_tool.jina_scrape_website_tool import (
JinaScrapeWebsiteTool,
)
from crewai_tools.tools.json_search_tool.json_search_tool import JSONSearchTool
from crewai_tools.tools.linkup.linkup_search_tool import LinkupSearchTool
from crewai_tools.tools.llamaindex_tool.llamaindex_tool import LlamaIndexTool
from crewai_tools.tools.mdx_search_tool.mdx_search_tool import MDXSearchTool
from crewai_tools.tools.mongodb_vector_search_tool.vector_search import (
MongoDBVectorSearchConfig,
MongoDBVectorSearchTool,
)
from crewai_tools.tools.multion_tool.multion_tool import MultiOnTool
from crewai_tools.tools.mysql_search_tool.mysql_search_tool import MySQLSearchTool
from crewai_tools.tools.nl2sql.nl2sql_tool import NL2SQLTool
from crewai_tools.tools.ocr_tool.ocr_tool import OCRTool
from crewai_tools.tools.oxylabs_amazon_product_scraper_tool.oxylabs_amazon_product_scraper_tool import (
OxylabsAmazonProductScraperTool,
)
from crewai_tools.tools.oxylabs_amazon_search_scraper_tool.oxylabs_amazon_search_scraper_tool import (
OxylabsAmazonSearchScraperTool,
)
from crewai_tools.tools.oxylabs_google_search_scraper_tool.oxylabs_google_search_scraper_tool import (
OxylabsGoogleSearchScraperTool,
)
from crewai_tools.tools.oxylabs_universal_scraper_tool.oxylabs_universal_scraper_tool import (
OxylabsUniversalScraperTool,
)
from crewai_tools.tools.parallel_tools.parallel_search_tool import ParallelSearchTool
from crewai_tools.tools.patronus_eval_tool.patronus_eval_tool import PatronusEvalTool
from crewai_tools.tools.patronus_eval_tool.patronus_local_evaluator_tool import (
PatronusLocalEvaluatorTool,
)
from crewai_tools.tools.patronus_eval_tool.patronus_predefined_criteria_eval_tool import (
PatronusPredefinedCriteriaEvalTool,
)
from crewai_tools.tools.pdf_search_tool.pdf_search_tool import PDFSearchTool
from crewai_tools.tools.qdrant_vector_search_tool.qdrant_search_tool import (
QdrantVectorSearchTool,
)
from crewai_tools.tools.rag.rag_tool import RagTool
from crewai_tools.tools.scrape_element_from_website.scrape_element_from_website import (
ScrapeElementFromWebsiteTool,
)
from crewai_tools.tools.scrape_website_tool.scrape_website_tool import (
ScrapeWebsiteTool,
)
from crewai_tools.tools.scrapegraph_scrape_tool.scrapegraph_scrape_tool import (
ScrapegraphScrapeTool,
ScrapegraphScrapeToolSchema,
)
from crewai_tools.tools.scrapfly_scrape_website_tool.scrapfly_scrape_website_tool import (
ScrapflyScrapeWebsiteTool,
)
from crewai_tools.tools.selenium_scraping_tool.selenium_scraping_tool import (
SeleniumScrapingTool,
)
from crewai_tools.tools.serpapi_tool.serpapi_google_search_tool import (
SerpApiGoogleSearchTool,
)
from crewai_tools.tools.serpapi_tool.serpapi_google_shopping_tool import (
SerpApiGoogleShoppingTool,
)
from crewai_tools.tools.serper_dev_tool.serper_dev_tool import SerperDevTool
from crewai_tools.tools.serper_scrape_website_tool.serper_scrape_website_tool import (
SerperScrapeWebsiteTool,
)
from crewai_tools.tools.serply_api_tool.serply_job_search_tool import (
SerplyJobSearchTool,
)
from crewai_tools.tools.serply_api_tool.serply_news_search_tool import (
SerplyNewsSearchTool,
)
from crewai_tools.tools.serply_api_tool.serply_scholar_search_tool import (
SerplyScholarSearchTool,
)
from crewai_tools.tools.serply_api_tool.serply_web_search_tool import (
SerplyWebSearchTool,
)
from crewai_tools.tools.serply_api_tool.serply_webpage_to_markdown_tool import (
SerplyWebpageToMarkdownTool,
)
from crewai_tools.tools.singlestore_search_tool.singlestore_search_tool import (
SingleStoreSearchTool,
)
from crewai_tools.tools.snowflake_search_tool.snowflake_search_tool import (
SnowflakeConfig,
SnowflakeSearchTool,
)
from crewai_tools.tools.spider_tool.spider_tool import SpiderTool
from crewai_tools.tools.stagehand_tool.stagehand_tool import StagehandTool
from crewai_tools.tools.tavily_extractor_tool.tavily_extractor_tool import (
TavilyExtractorTool,
)
from crewai_tools.tools.tavily_search_tool.tavily_search_tool import TavilySearchTool
from crewai_tools.tools.txt_search_tool.txt_search_tool import TXTSearchTool
from crewai_tools.tools.vision_tool.vision_tool import VisionTool
from crewai_tools.tools.weaviate_tool.vector_search import WeaviateVectorSearchTool
from crewai_tools.tools.website_search.website_search_tool import WebsiteSearchTool
from crewai_tools.tools.xml_search_tool.xml_search_tool import XMLSearchTool
from crewai_tools.tools.youtube_channel_search_tool.youtube_channel_search_tool import (
YoutubeChannelSearchTool,
)
from crewai_tools.tools.youtube_video_search_tool.youtube_video_search_tool import (
YoutubeVideoSearchTool,
)
from crewai_tools.tools.zapier_action_tool.zapier_action_tool import ZapierActionTools
__all__ = [
"AIMindTool",
"ApifyActorsTool",
"ArxivPaperTool",
"BedrockInvokeAgentTool",
"BedrockKBRetrieverTool",
"BraveSearchTool",
"BrightDataDatasetTool",
"BrightDataSearchTool",
"BrightDataWebUnlockerTool",
"BrowserbaseLoadTool",
"CSVSearchTool",
"CodeDocsSearchTool",
"CodeInterpreterTool",
"ComposioTool",
"ContextualAICreateAgentTool",
"ContextualAIParseTool",
"ContextualAIQueryTool",
"ContextualAIRerankTool",
"CouchbaseFTSVectorSearchTool",
"CrewaiEnterpriseTools",
"CrewaiPlatformTools",
"DOCXSearchTool",
"DallETool",
"DatabricksQueryTool",
"DirectoryReadTool",
"DirectorySearchTool",
"EXASearchTool",
"EnterpriseActionTool",
"FileCompressorTool",
"FileReadTool",
"FileWriterTool",
"FirecrawlCrawlWebsiteTool",
"FirecrawlScrapeWebsiteTool",
"FirecrawlSearchTool",
"GenerateCrewaiAutomationTool",
"GithubSearchTool",
"HyperbrowserLoadTool",
"InvokeCrewAIAutomationTool",
"JSONSearchTool",
"JinaScrapeWebsiteTool",
"LinkupSearchTool",
"LlamaIndexTool",
"MCPServerAdapter",
"MDXSearchTool",
"MongoDBVectorSearchConfig",
"MongoDBVectorSearchTool",
"MultiOnTool",
"MySQLSearchTool",
"NL2SQLTool",
"OCRTool",
"OxylabsAmazonProductScraperTool",
"OxylabsAmazonSearchScraperTool",
"OxylabsGoogleSearchScraperTool",
"OxylabsUniversalScraperTool",
"PDFSearchTool",
"ParallelSearchTool",
"PatronusEvalTool",
"PatronusLocalEvaluatorTool",
"PatronusPredefinedCriteriaEvalTool",
"QdrantVectorSearchTool",
"RagTool",
"S3ReaderTool",
"S3WriterTool",
"ScrapeElementFromWebsiteTool",
"ScrapeWebsiteTool",
"ScrapegraphScrapeTool",
"ScrapegraphScrapeToolSchema",
"ScrapflyScrapeWebsiteTool",
"SeleniumScrapingTool",
"SerpApiGoogleSearchTool",
"SerpApiGoogleShoppingTool",
"SerperDevTool",
"SerperScrapeWebsiteTool",
"SerplyJobSearchTool",
"SerplyNewsSearchTool",
"SerplyScholarSearchTool",
"SerplyWebSearchTool",
"SerplyWebpageToMarkdownTool",
"SingleStoreSearchTool",
"SnowflakeConfig",
"SnowflakeSearchTool",
"SpiderTool",
"StagehandTool",
"TXTSearchTool",
"TavilyExtractorTool",
"TavilySearchTool",
"VisionTool",
"WeaviateVectorSearchTool",
"WebsiteSearchTool",
"XMLSearchTool",
"YoutubeChannelSearchTool",
"YoutubeVideoSearchTool",
"ZapierActionTool",
"ZapierActionTools",
]
__version__ = "1.0.0a4"

View File

@@ -0,0 +1,269 @@
"""Adapter for CrewAI's native RAG system."""
import hashlib
from pathlib import Path
from typing import Any, TypeAlias, TypedDict
from crewai.rag.config.types import RagConfigType
from crewai.rag.config.utils import get_rag_client
from crewai.rag.core.base_client import BaseClient
from crewai.rag.factory import create_client
from crewai.rag.types import BaseRecord, SearchResult
from pydantic import PrivateAttr
from typing_extensions import Unpack
from crewai_tools.rag.data_types import DataType
from crewai_tools.rag.misc import sanitize_metadata_for_chromadb
from crewai_tools.tools.rag.rag_tool import Adapter
ContentItem: TypeAlias = str | Path | dict[str, Any]
class AddDocumentParams(TypedDict, total=False):
"""Parameters for adding documents to the RAG system."""
data_type: DataType
metadata: dict[str, Any]
website: str
url: str
file_path: str | Path
github_url: str
youtube_url: str
directory_path: str | Path
class CrewAIRagAdapter(Adapter):
"""Adapter that uses CrewAI's native RAG system.
Supports custom vector database configuration through the config parameter.
"""
collection_name: str = "default"
summarize: bool = False
similarity_threshold: float = 0.6
limit: int = 5
config: RagConfigType | None = None
_client: BaseClient | None = PrivateAttr(default=None)
def model_post_init(self, __context: Any) -> None:
"""Initialize the CrewAI RAG client after model initialization."""
if self.config is not None:
self._client = create_client(self.config)
else:
self._client = get_rag_client()
self._client.get_or_create_collection(collection_name=self.collection_name)
def query(
self,
question: str,
similarity_threshold: float | None = None,
limit: int | None = None,
) -> str:
"""Query the knowledge base with a question.
Args:
question: The question to ask
similarity_threshold: Minimum similarity score for results (default: 0.6)
limit: Maximum number of results to return (default: 5)
Returns:
Relevant content from the knowledge base
"""
search_limit = limit if limit is not None else self.limit
search_threshold = (
similarity_threshold
if similarity_threshold is not None
else self.similarity_threshold
)
results: list[SearchResult] = self._client.search(
collection_name=self.collection_name,
query=question,
limit=search_limit,
score_threshold=search_threshold,
)
if not results:
return "No relevant content found."
contents: list[str] = []
for result in results:
content: str = result.get("content", "")
if content:
contents.append(content)
return "\n\n".join(contents)
def add(self, *args: ContentItem, **kwargs: Unpack[AddDocumentParams]) -> None:
"""Add content to the knowledge base.
This method handles various input types and converts them to documents
for the vector database. It supports the data_type parameter for
compatibility with existing tools.
Args:
*args: Content items to add (strings, paths, or document dicts)
**kwargs: Additional parameters including data_type, metadata, etc.
"""
import os
from crewai_tools.rag.base_loader import LoaderResult
from crewai_tools.rag.data_types import DataType, DataTypes
from crewai_tools.rag.source_content import SourceContent
documents: list[BaseRecord] = []
data_type: DataType | None = kwargs.get("data_type")
base_metadata: dict[str, Any] = kwargs.get("metadata", {})
for arg in args:
source_ref: str
if isinstance(arg, dict):
source_ref = str(arg.get("source", arg.get("content", "")))
else:
source_ref = str(arg)
if not data_type:
data_type = DataTypes.from_content(source_ref)
if data_type == DataType.DIRECTORY:
if not os.path.isdir(source_ref):
raise ValueError(f"Directory does not exist: {source_ref}")
# Define binary and non-text file extensions to skip
binary_extensions = {
".pyc",
".pyo",
".png",
".jpg",
".jpeg",
".gif",
".bmp",
".ico",
".svg",
".webp",
".pdf",
".zip",
".tar",
".gz",
".bz2",
".7z",
".rar",
".exe",
".dll",
".so",
".dylib",
".bin",
".dat",
".db",
".sqlite",
".class",
".jar",
".war",
".ear",
}
for root, dirs, files in os.walk(source_ref):
dirs[:] = [d for d in dirs if not d.startswith(".")]
for filename in files:
if filename.startswith("."):
continue
# Skip binary files based on extension
file_ext = os.path.splitext(filename)[1].lower()
if file_ext in binary_extensions:
continue
# Skip __pycache__ directories
if "__pycache__" in root:
continue
file_path: str = os.path.join(root, filename)
try:
file_data_type: DataType = DataTypes.from_content(file_path)
file_loader = file_data_type.get_loader()
file_chunker = file_data_type.get_chunker()
file_source = SourceContent(file_path)
file_result: LoaderResult = file_loader.load(file_source)
file_chunks = file_chunker.chunk(file_result.content)
for chunk_idx, file_chunk in enumerate(file_chunks):
file_metadata: dict[str, Any] = base_metadata.copy()
file_metadata.update(file_result.metadata)
file_metadata["data_type"] = str(file_data_type)
file_metadata["file_path"] = file_path
file_metadata["chunk_index"] = chunk_idx
file_metadata["total_chunks"] = len(file_chunks)
if isinstance(arg, dict):
file_metadata.update(arg.get("metadata", {}))
chunk_id = hashlib.sha256(
f"{file_result.doc_id}_{chunk_idx}_{file_chunk}".encode()
).hexdigest()
documents.append(
{
"doc_id": chunk_id,
"content": file_chunk,
"metadata": sanitize_metadata_for_chromadb(
file_metadata
),
}
)
except Exception: # noqa: S112
# Silently skip files that can't be processed
continue
else:
metadata: dict[str, Any] = base_metadata.copy()
if data_type in [
DataType.PDF_FILE,
DataType.TEXT_FILE,
DataType.DOCX,
DataType.CSV,
DataType.JSON,
DataType.XML,
DataType.MDX,
]:
if not os.path.isfile(source_ref):
raise FileNotFoundError(f"File does not exist: {source_ref}")
loader = data_type.get_loader()
chunker = data_type.get_chunker()
source_content = SourceContent(source_ref)
loader_result: LoaderResult = loader.load(source_content)
chunks = chunker.chunk(loader_result.content)
for i, chunk in enumerate(chunks):
chunk_metadata: dict[str, Any] = metadata.copy()
chunk_metadata.update(loader_result.metadata)
chunk_metadata["data_type"] = str(data_type)
chunk_metadata["chunk_index"] = i
chunk_metadata["total_chunks"] = len(chunks)
chunk_metadata["source"] = source_ref
if isinstance(arg, dict):
chunk_metadata.update(arg.get("metadata", {}))
chunk_id = hashlib.sha256(
f"{loader_result.doc_id}_{i}_{chunk}".encode()
).hexdigest()
documents.append(
{
"doc_id": chunk_id,
"content": chunk,
"metadata": sanitize_metadata_for_chromadb(chunk_metadata),
}
)
if documents:
self._client.add_documents(
collection_name=self.collection_name, documents=documents
)

View File

@@ -0,0 +1,428 @@
import json
import os
import re
from typing import Any, Literal, Optional, Union, cast, get_origin
import warnings
from crewai.tools import BaseTool
from pydantic import Field, create_model
import requests
def get_enterprise_api_base_url() -> str:
"""Get the enterprise API base URL from environment or use default."""
base_url = os.getenv("CREWAI_PLUS_URL", "https://app.crewai.com")
return f"{base_url}/crewai_plus/api/v1/integrations"
ENTERPRISE_API_BASE_URL = get_enterprise_api_base_url()
class EnterpriseActionTool(BaseTool):
"""A tool that executes a specific enterprise action."""
enterprise_action_token: str = Field(
default="", description="The enterprise action token"
)
action_name: str = Field(default="", description="The name of the action")
action_schema: dict[str, Any] = Field(
default={}, description="The schema of the action"
)
enterprise_api_base_url: str = Field(
default=ENTERPRISE_API_BASE_URL, description="The base API URL"
)
def __init__(
self,
name: str,
description: str,
enterprise_action_token: str,
action_name: str,
action_schema: dict[str, Any],
enterprise_api_base_url: str | None = None,
):
self._model_registry = {}
self._base_name = self._sanitize_name(name)
schema_props, required = self._extract_schema_info(action_schema)
# Define field definitions for the model
field_definitions = {}
for param_name, param_details in schema_props.items():
param_desc = param_details.get("description", "")
is_required = param_name in required
try:
field_type = self._process_schema_type(
param_details, self._sanitize_name(param_name).title()
)
except Exception:
field_type = str
# Create field definition based on requirement
field_definitions[param_name] = self._create_field_definition(
field_type, is_required, param_desc
)
# Create the model
if field_definitions:
try:
args_schema = create_model(
f"{self._base_name}Schema", **field_definitions
)
except Exception:
args_schema = create_model(
f"{self._base_name}Schema",
input_text=(str, Field(description="Input for the action")),
)
else:
# Fallback for empty schema
args_schema = create_model(
f"{self._base_name}Schema",
input_text=(str, Field(description="Input for the action")),
)
super().__init__(name=name, description=description, args_schema=args_schema)
self.enterprise_action_token = enterprise_action_token
self.action_name = action_name
self.action_schema = action_schema
self.enterprise_api_base_url = (
enterprise_api_base_url or get_enterprise_api_base_url()
)
def _sanitize_name(self, name: str) -> str:
"""Sanitize names to create proper Python class names."""
sanitized = re.sub(r"[^a-zA-Z0-9_]", "", name)
parts = sanitized.split("_")
return "".join(word.capitalize() for word in parts if word)
def _extract_schema_info(
self, action_schema: dict[str, Any]
) -> tuple[dict[str, Any], list[str]]:
"""Extract schema properties and required fields from action schema."""
schema_props = (
action_schema.get("function", {})
.get("parameters", {})
.get("properties", {})
)
required = (
action_schema.get("function", {}).get("parameters", {}).get("required", [])
)
return schema_props, required
def _process_schema_type(self, schema: dict[str, Any], type_name: str) -> type[Any]:
"""Process a JSON schema and return appropriate Python type."""
if "anyOf" in schema:
any_of_types = schema["anyOf"]
is_nullable = any(t.get("type") == "null" for t in any_of_types)
non_null_types = [t for t in any_of_types if t.get("type") != "null"]
if non_null_types:
base_type = self._process_schema_type(non_null_types[0], type_name)
return Optional[base_type] if is_nullable else base_type # noqa: UP045
return cast(type[Any], Optional[str]) # noqa: UP045
if "oneOf" in schema:
return self._process_schema_type(schema["oneOf"][0], type_name)
if "allOf" in schema:
return self._process_schema_type(schema["allOf"][0], type_name)
json_type = schema.get("type", "string")
if "enum" in schema:
enum_values = schema["enum"]
if not enum_values:
return self._map_json_type_to_python(json_type)
return Literal[tuple(enum_values)] # type: ignore[return-value]
if json_type == "array":
items_schema = schema.get("items", {"type": "string"})
item_type = self._process_schema_type(items_schema, f"{type_name}Item")
return list[item_type]
if json_type == "object":
return self._create_nested_model(schema, type_name)
return self._map_json_type_to_python(json_type)
def _create_nested_model(
self, schema: dict[str, Any], model_name: str
) -> type[Any]:
"""Create a nested Pydantic model for complex objects."""
full_model_name = f"{self._base_name}{model_name}"
if full_model_name in self._model_registry:
return self._model_registry[full_model_name]
properties = schema.get("properties", {})
required_fields = schema.get("required", [])
if not properties:
return dict
field_definitions = {}
for prop_name, prop_schema in properties.items():
prop_desc = prop_schema.get("description", "")
is_required = prop_name in required_fields
try:
prop_type = self._process_schema_type(
prop_schema, f"{model_name}{self._sanitize_name(prop_name).title()}"
)
except Exception:
prop_type = str
field_definitions[prop_name] = self._create_field_definition(
prop_type, is_required, prop_desc
)
try:
nested_model = create_model(full_model_name, **field_definitions)
self._model_registry[full_model_name] = nested_model
return nested_model
except Exception:
return dict
def _create_field_definition(
self, field_type: type[Any], is_required: bool, description: str
) -> tuple:
"""Create Pydantic field definition based on type and requirement."""
if is_required:
return (field_type, Field(description=description))
if get_origin(field_type) is Union:
return (field_type, Field(default=None, description=description))
return (
Optional[field_type], # noqa: UP045
Field(default=None, description=description),
)
def _map_json_type_to_python(self, json_type: str) -> type[Any]:
"""Map basic JSON schema types to Python types."""
type_mapping = {
"string": str,
"integer": int,
"number": float,
"boolean": bool,
"array": list,
"object": dict,
"null": type(None),
}
return type_mapping.get(json_type, str)
def _get_required_nullable_fields(self) -> list[str]:
"""Get a list of required nullable fields from the action schema."""
schema_props, required = self._extract_schema_info(self.action_schema)
required_nullable_fields = []
for param_name in required:
param_details = schema_props.get(param_name, {})
if self._is_nullable_type(param_details):
required_nullable_fields.append(param_name)
return required_nullable_fields
def _is_nullable_type(self, schema: dict[str, Any]) -> bool:
"""Check if a schema represents a nullable type."""
if "anyOf" in schema:
return any(t.get("type") == "null" for t in schema["anyOf"])
return schema.get("type") == "null"
def _run(self, **kwargs) -> str:
"""Execute the specific enterprise action with validated parameters."""
try:
cleaned_kwargs = {}
for key, value in kwargs.items():
if value is not None:
cleaned_kwargs[key] = value # noqa: PERF403
required_nullable_fields = self._get_required_nullable_fields()
for field_name in required_nullable_fields:
if field_name not in cleaned_kwargs:
cleaned_kwargs[field_name] = None
api_url = (
f"{self.enterprise_api_base_url}/actions/{self.action_name}/execute"
)
headers = {
"Authorization": f"Bearer {self.enterprise_action_token}",
"Content-Type": "application/json",
}
payload = cleaned_kwargs
response = requests.post(
url=api_url, headers=headers, json=payload, timeout=60
)
data = response.json()
if not response.ok:
error_message = data.get("error", {}).get("message", json.dumps(data))
return f"API request failed: {error_message}"
return json.dumps(data, indent=2)
except Exception as e:
return f"Error executing action {self.action_name}: {e!s}"
class EnterpriseActionKitToolAdapter:
"""Adapter that creates BaseTool instances for enterprise actions."""
def __init__(
self,
enterprise_action_token: str,
enterprise_api_base_url: str | None = None,
):
"""Initialize the adapter with an enterprise action token."""
self._set_enterprise_action_token(enterprise_action_token)
self._actions_schema = {}
self._tools = None
self.enterprise_api_base_url = (
enterprise_api_base_url or get_enterprise_api_base_url()
)
def tools(self) -> list[BaseTool]:
"""Get the list of tools created from enterprise actions."""
if self._tools is None:
self._fetch_actions()
self._create_tools()
return self._tools or []
def _fetch_actions(self):
"""Fetch available actions from the API."""
try:
actions_url = f"{self.enterprise_api_base_url}/actions"
headers = {"Authorization": f"Bearer {self.enterprise_action_token}"}
response = requests.get(actions_url, headers=headers, timeout=30)
response.raise_for_status()
raw_data = response.json()
if "actions" not in raw_data:
return
parsed_schema = {}
action_categories = raw_data["actions"]
for action_list in action_categories.values():
if isinstance(action_list, list):
for action in action_list:
action_name = action.get("name")
if action_name:
action_schema = {
"function": {
"name": action_name,
"description": action.get(
"description", f"Execute {action_name}"
),
"parameters": action.get("parameters", {}),
}
}
parsed_schema[action_name] = action_schema
self._actions_schema = parsed_schema
except Exception:
import traceback
traceback.print_exc()
def _generate_detailed_description(
self, schema: dict[str, Any], indent: int = 0
) -> list[str]:
"""Generate detailed description for nested schema structures."""
descriptions = []
indent_str = " " * indent
schema_type = schema.get("type", "string")
if schema_type == "object":
properties = schema.get("properties", {})
required_fields = schema.get("required", [])
if properties:
descriptions.append(f"{indent_str}Object with properties:")
for prop_name, prop_schema in properties.items():
prop_desc = prop_schema.get("description", "")
is_required = prop_name in required_fields
req_str = " (required)" if is_required else " (optional)"
descriptions.append(
f"{indent_str} - {prop_name}: {prop_desc}{req_str}"
)
if prop_schema.get("type") == "object":
descriptions.extend(
self._generate_detailed_description(prop_schema, indent + 2)
)
elif prop_schema.get("type") == "array":
items_schema = prop_schema.get("items", {})
if items_schema.get("type") == "object":
descriptions.append(f"{indent_str} Array of objects:")
descriptions.extend(
self._generate_detailed_description(
items_schema, indent + 3
)
)
elif "enum" in items_schema:
descriptions.append(
f"{indent_str} Array of enum values: {items_schema['enum']}"
)
elif "enum" in prop_schema:
descriptions.append(
f"{indent_str} Enum values: {prop_schema['enum']}"
)
return descriptions
def _create_tools(self):
"""Create BaseTool instances for each action."""
tools = []
for action_name, action_schema in self._actions_schema.items():
function_details = action_schema.get("function", {})
description = function_details.get("description", f"Execute {action_name}")
parameters = function_details.get("parameters", {})
param_descriptions = []
if parameters.get("properties"):
param_descriptions.append("\nDetailed Parameter Structure:")
param_descriptions.extend(
self._generate_detailed_description(parameters)
)
full_description = description + "\n".join(param_descriptions)
tool = EnterpriseActionTool(
name=action_name.lower().replace(" ", "_"),
description=full_description,
action_name=action_name,
action_schema=action_schema,
enterprise_action_token=self.enterprise_action_token,
enterprise_api_base_url=self.enterprise_api_base_url,
)
tools.append(tool)
self._tools = tools
def _set_enterprise_action_token(self, enterprise_action_token: str | None):
if enterprise_action_token and not enterprise_action_token.startswith("PK_"):
warnings.warn(
"Legacy token detected, please consider using the new Enterprise Action Auth token. Check out our docs for more information https://docs.crewai.com/en/enterprise/features/integrations.",
DeprecationWarning,
stacklevel=2,
)
token = enterprise_action_token or os.environ.get(
"CREWAI_ENTERPRISE_TOOLS_TOKEN"
)
self.enterprise_action_token = token
def __enter__(self):
return self.tools()
def __exit__(self, exc_type, exc_val, exc_tb):
pass

View File

@@ -0,0 +1,56 @@
from collections.abc import Callable
from pathlib import Path
from typing import Any
from lancedb import DBConnection as LanceDBConnection, connect as lancedb_connect
from lancedb.table import Table as LanceDBTable
from openai import Client as OpenAIClient
from pydantic import Field, PrivateAttr
from crewai_tools.tools.rag.rag_tool import Adapter
def _default_embedding_function():
client = OpenAIClient()
def _embedding_function(input):
rs = client.embeddings.create(input=input, model="text-embedding-ada-002")
return [record.embedding for record in rs.data]
return _embedding_function
class LanceDBAdapter(Adapter):
uri: str | Path
table_name: str
embedding_function: Callable = Field(default_factory=_default_embedding_function)
top_k: int = 3
vector_column_name: str = "vector"
text_column_name: str = "text"
_db: LanceDBConnection = PrivateAttr()
_table: LanceDBTable = PrivateAttr()
def model_post_init(self, __context: Any) -> None:
self._db = lancedb_connect(self.uri)
self._table = self._db.open_table(self.table_name)
super().model_post_init(__context)
def query(self, question: str) -> str:
query = self.embedding_function([question])[0]
results = (
self._table.search(query, vector_column_name=self.vector_column_name)
.limit(self.top_k)
.select([self.text_column_name])
.to_list()
)
values = [result[self.text_column_name] for result in results]
return "\n".join(values)
def add(
self,
*args: Any,
**kwargs: Any,
) -> None:
self._table.add(*args, **kwargs)

View File

@@ -0,0 +1,163 @@
"""MCPServer for CrewAI."""
from __future__ import annotations
import logging
from typing import TYPE_CHECKING, Any
from crewai.tools import BaseTool
from crewai_tools.adapters.tool_collection import ToolCollection
logger = logging.getLogger(__name__)
if TYPE_CHECKING:
from mcp import StdioServerParameters
from mcpadapt.core import MCPAdapt
from mcpadapt.crewai_adapter import CrewAIAdapter
try:
from mcp import StdioServerParameters
from mcpadapt.core import MCPAdapt
from mcpadapt.crewai_adapter import CrewAIAdapter
MCP_AVAILABLE = True
except ImportError:
MCP_AVAILABLE = False
class MCPServerAdapter:
"""Manages the lifecycle of an MCP server and make its tools available to CrewAI.
Note: tools can only be accessed after the server has been started with the
`start()` method.
Attributes:
tools: The CrewAI tools available from the MCP server.
Usage:
# context manager + stdio
with MCPServerAdapter(...) as tools:
# tools is now available
# context manager + sse
with MCPServerAdapter({"url": "http://localhost:8000/sse"}) as tools:
# tools is now available
# context manager with filtered tools
with MCPServerAdapter(..., "tool1", "tool2") as filtered_tools:
# only tool1 and tool2 are available
# context manager with custom connect timeout (60 seconds)
with MCPServerAdapter(..., connect_timeout=60) as tools:
# tools is now available with longer timeout
# manually stop mcp server
try:
mcp_server = MCPServerAdapter(...)
tools = mcp_server.tools # all tools
# or with filtered tools and custom timeout
mcp_server = MCPServerAdapter(..., "tool1", "tool2", connect_timeout=45)
filtered_tools = mcp_server.tools # only tool1 and tool2
...
finally:
mcp_server.stop()
# Best practice is ensure cleanup is done after use.
mcp_server.stop() # run after crew().kickoff()
"""
def __init__(
self,
serverparams: StdioServerParameters | dict[str, Any],
*tool_names: str,
connect_timeout: int = 30,
) -> None:
"""Initialize the MCP Server.
Args:
serverparams: The parameters for the MCP server it supports either a
`StdioServerParameters` or a `dict` respectively for STDIO and SSE.
*tool_names: Optional names of tools to filter. If provided, only tools with
matching names will be available.
connect_timeout: Connection timeout in seconds to the MCP server (default is 30s).
"""
super().__init__()
self._adapter = None
self._tools = None
self._tool_names = list(tool_names) if tool_names else None
if not MCP_AVAILABLE:
import click
if click.confirm(
"You are missing the 'mcp' package. Would you like to install it?"
):
import subprocess
try:
subprocess.run(["uv", "add", "mcp crewai-tools[mcp]"], check=True) # noqa: S607
except subprocess.CalledProcessError as e:
raise ImportError("Failed to install mcp package") from e
else:
raise ImportError(
"`mcp` package not found, please run `uv add crewai-tools[mcp]`"
)
try:
self._serverparams = serverparams
self._adapter = MCPAdapt(
self._serverparams, CrewAIAdapter(), connect_timeout
)
self.start()
except Exception as e:
if self._adapter is not None:
try:
self.stop()
except Exception as stop_e:
logger.error(f"Error during stop cleanup: {stop_e}")
raise RuntimeError(f"Failed to initialize MCP Adapter: {e}") from e
def start(self):
"""Start the MCP server and initialize the tools."""
self._tools = self._adapter.__enter__()
def stop(self):
"""Stop the MCP server."""
self._adapter.__exit__(None, None, None)
@property
def tools(self) -> ToolCollection[BaseTool]:
"""The CrewAI tools available from the MCP server.
Raises:
ValueError: If the MCP server is not started.
Returns:
The CrewAI tools available from the MCP server.
"""
if self._tools is None:
raise ValueError(
"MCP server not started, run `mcp_server.start()` first before accessing `tools`"
)
tools_collection = ToolCollection(self._tools)
if self._tool_names:
return tools_collection.filter_by_names(self._tool_names)
return tools_collection
def __enter__(self):
"""Enter the context manager. Note that `__init__()` already starts the MCP server.
So tools should already be available.
"""
return self.tools
def __exit__(self, exc_type, exc_value, traceback):
"""Exit the context manager."""
return self._adapter.__exit__(exc_type, exc_value, traceback)

View File

@@ -0,0 +1,38 @@
from typing import Any
from crewai_tools.rag.core import RAG
from crewai_tools.tools.rag.rag_tool import Adapter
class RAGAdapter(Adapter):
def __init__(
self,
collection_name: str = "crewai_knowledge_base",
persist_directory: str | None = None,
embedding_model: str = "text-embedding-3-small",
top_k: int = 5,
embedding_api_key: str | None = None,
**embedding_kwargs,
):
super().__init__()
# Prepare embedding configuration
embedding_config = {"api_key": embedding_api_key, **embedding_kwargs}
self._adapter = RAG(
collection_name=collection_name,
persist_directory=persist_directory,
embedding_model=embedding_model,
top_k=top_k,
embedding_config=embedding_config,
)
def query(self, question: str) -> str:
return self._adapter.query(question)
def add(
self,
*args: Any,
**kwargs: Any,
) -> None:
self._adapter.add(*args, **kwargs)

Some files were not shown because too many files have changed in this diff Show More