PollyHub

Trello Connector

Flagged

Access Trello boards with managed OAuth. Create, read, update, and manage boards, lists, and cards. Use when the user wants to create a Trello card, list boards, move cards between lists, update card details, or manage Trello boards.

Security warnings detected

  • [_meta.json] Possible base64-encoded blob detected
  • [SKILL.md] External URL reference detected (not on allowlist)
  • [SKILL.md] Runtime config literal detected: connection_id

SKILL.md

---
name: trello-connector
description: "Access Trello boards with managed OAuth. Create, read, update, and manage boards, lists, and cards. Use when the user wants to create a Trello card, list boards, move cards between lists, update card details, or manage Trello boards."
metadata:
  polly:
    polly_managed_connector: true
    auth:
      - env: TRELLO_ACCESS_TOKEN
        type: oauth2
        integration_id: trello
        description: Trello OAuth access
        scopes:
          - read
          - write
          - account
    primaryEnv: TRELLO_ACCESS_TOKEN
    requires:
      env:
        - NANGO_SECRET_KEY
        - NANGO_SERVER_URL
---

# Trello Connector

Access Trello through the Trello REST API using the Nango proxy.

## First-Time Setup

If Trello is not connected yet, run:

`manage_auth(action="connect", integration_id="trello", auth_env="TRELLO_ACCESS_TOKEN")`

## Auth & Security

- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- All API calls go through the **Nango proxy** — never call `api.trello.com` directly
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails (401/403), reconnect with:
  `manage_auth(action="connect", integration_id="trello", auth_env="TRELLO_ACCESS_TOKEN")`

## Nango Proxy

Trello uses OAuth 1.0a which requires a consumer key stored server-side in Nango. Route all requests through the Nango proxy — Nango signs requests on your behalf.

**Required env vars (always available in Polly runtime):**
- `$NANGO_SERVER_URL` — Nango server base URL
- `$NANGO_SECRET_KEY` — Nango API key for proxy auth
- `$TRELLO_ACCESS_TOKEN` — JSON payload; parse to get `connection_id`

**Get Connection ID at runtime:**

```python
import json, os
token_data = json.loads(os.environ["TRELLO_ACCESS_TOKEN"])
# Connection ID is the Nango connection UUID for this user's Trello auth
# Resolve it via Nango connections API:
import subprocess
nango_url = os.environ["NANGO_SERVER_URL"]
nango_key = os.environ["NANGO_SECRET_KEY"]
r = subprocess.run([
    "curl", "-s",
    "-H", f"Authorization: Bearer {nango_key}",
    f"{nango_url}/connection"
], capture_output=True, text=True)
connections = json.loads(r.stdout).get("connections", [])
conn = next((c for c in connections if c["provider"] == "trello"), None)
connection_id = conn["connection_id"] if conn else None
```

**Proxy request pattern:**

```bash
curl -s -X GET \
  -H "Authorization: Bearer $NANGO_SECRET_KEY" \
  -H "Connection-Id: <connection_id>" \
  -H "Provider-Config-Key: trello" \
  -H "Nango-Proxy-Base-Url-Override: https://api.trello.com" \
  "$NANGO_SERVER_URL/proxy/1/<path>"
```

## Common Operations (Read-Only)

**Get current user:**
```
GET /proxy/1/members/me?fields=username,fullName,email
```

**List boards:**
```
GET /proxy/1/members/me/boards?fields=name,id,url,closed
```

**Get board lists:**
```
GET /proxy/1/boards/<boardId>/lists?fields=name,id
```

**Get board cards:**
```
GET /proxy/1/boards/<boardId>/cards?fields=name,id,idList,due,desc,url
```

**Get card details:**
```
GET /proxy/1/cards/<cardId>
```

**Get card comments:**
```
GET /proxy/1/cards/<cardId>/actions?filter=commentCard
```

**Search:**
```
GET /proxy/1/search?query=<term>&modelTypes=cards,boards
```

## Common Operations (Write)

**Create a card:**
```bash
curl -s -X POST \
  -H "Authorization: Bearer $NANGO_SECRET_KEY" \
  -H "Connection-Id: <connection_id>" \
  -H "Provider-Config-Key: trello" \
  -H "Nango-Proxy-Base-Url-Override: https://api.trello.com" \
  -H "Content-Type: application/json" \
  -d '{"idList":"<listId>","name":"Card name","desc":"Description"}' \
  "$NANGO_SERVER_URL/proxy/1/cards"
```

**Move a card to another list:**
```bash
curl -s -X PUT \
  -H "Authorization: Bearer $NANGO_SECRET_KEY" \
  -H "Connection-Id: <connection_id>" \
  -H "Provider-Config-Key: trello" \
  -H "Nango-Proxy-Base-Url-Override: https://api.trello.com" \
  -H "Content-Type: application/json" \
  -d '{"idList":"<targetListId>"}' \
  "$NANGO_SERVER_URL/proxy/1/cards/<cardId>"
```

**Update a card:**
```bash
curl -s -X PUT \
  -H "Authorization: Bearer $NANGO_SECRET_KEY" \
  -H "Connection-Id: <connection_id>" \
  -H "Provider-Config-Key: trello" \
  -H "Nango-Proxy-Base-Url-Override: https://api.trello.com" \
  -H "Content-Type: application/json" \
  -d '{"name":"Updated name","desc":"Updated desc"}' \
  "$NANGO_SERVER_URL/proxy/1/cards/<cardId>"
```

## Rules

- Always use the Nango proxy — never call `api.trello.com` directly
- Resolve the Connection ID dynamically at runtime using the Nango connections API
- Use `members/me` for the authenticated user's own boards
- For pagination, use `limit`, `before`, and `since` query parameters
- On API errors, surface status + response body clearly
- On 401/403, reconnect via `manage_auth`
Authorstella
Downloads7
Versions4
Published1d ago
Auth Requirements
TRELLO_ACCESS_TOKENoauth2

integration: trello

Version History

v1.2.1latest

Fix: Replace broken {appKey} placeholder with Nango proxy pattern. Add NANGO_SECRET_KEY and NANGO_SERVER_URL env var declarations. Add Connection ID resolution instructions.

Apr 9, 2026

Flagged.zip
v1.2.0

Fix auth pattern and ID handling

Apr 9, 2026

Flagged.zip
v1.1.0

Add polly_managed_connector flag and connector-skill tag

Apr 9, 2026

Clean.zip
v1.0.0

Initial release of v0.8 Tier 3 connectors

Apr 9, 2026

Clean.zip

SHA-256 (latest)

4c5124dfbc4220149b289a7d9f26c4e7e71f3acdeef433d9651d9d8af9f2f07d