Adversus
Adversus is a competitive intelligence platform. It helps businesses monitor and analyze their competitors' strategies, marketing efforts, and overall market presence. This allows product managers and marketing teams to make data-driven decisions.
Official docs: https://www.adversus.io/api-documentation
Adversus Overview
- Case
- Case Note
- Contact
- Task
- User
- Template
- Document
- Billing Rate
- Expense
- Invoice
- Payment
- Time Entry
- Product and Service
- Trust Request
- Phone Number
- Address
- Firm Setting
- Integration
- Role
- Permission
- Note
- Journal Entry
- Account
- Tax Rate
- Vendor
- Client Request
- Lead
- Referral
- Activity
- Marketing Campaign
- Form
- Form Submission
- Automation
- Tag
- Checklist
- Checklist Template
- Court
- Judge
- Opposing Party
- Settlement
- Medical Record
- Insurance Policy
- Property
- Vehicle
- Will
- Trust
- Power of Attorney
- Healthcare Directive
- Contract
- Intellectual Property
- Financial Account
- Safe Deposit Box
- Digital Asset
- Pet
- Personal Property
- Life Insurance Policy
- Retirement Account
- Document Template
- Email Template
- SMS Template
- Report
- Dashboard
- Workflow
- Workflow Template
- Stage
- Stage Template
- Custom Field
- Custom Field Template
- Relationship
- Relationship Type
- Matter Type
- Task Template
- Event
- Event Template
- User Group
- Goal
- Key Result
- Scorecard
- Survey
- Survey Template
- Question
- Question Template
- Answer
- Answer Template
- Clause
- Clause Library
- Fee Schedule
- Fee
- Tax
- Discount
- Credit
- Escrow Account
- Escrow Transaction
- User Subscription
- Plan
- Add-on
- Coupon
- Integration Setting
- Notification
- Audit Log
- Data Import
- Data Export
- Firm User
- Firm
- Office
- Department
- Practice Area
- Source
- Language
- Country
- State
- City
- Zip Code
- Area Code
- Phone Type
- Email Type
- Address Type
- Note Type
- Task Status
- Task Priority
- Event Type
- Relationship Status
- Payment Type
- Invoice Status
- Case Status
- Lead Status
- Referral Status
- Trust Request Status
- Client Request Status
- Marketing Campaign Status
- Form Status
- Automation Status
- Checklist Status
- Workflow Status
- Stage Status
- Goal Status
- Key Result Status
- Survey Status
- Question Type
- Answer Type
- Custom Field Type
- Document Category
- Email Category
- SMS Category
- Report Category
- Dashboard Category
- Workflow Category
- Stage Category
- Task Category
- Event Category
- Goal Category
- Key Result Category
- Survey Category
- Question Category
- Answer Category
- Clause Category
- Fee Category
- Tax Category
- Discount Category
- Credit Category
- Escrow Account Category
- User Subscription Category
- Plan Category
- Add-on Category
- Coupon Category
- Integration Setting Category
- Notification Category
- Activity Type
- Activity Category
- Product and Service Category
- Template Category
- Document Template Category
- Email Template Category
- SMS Template Category
- Report Template Category
- Dashboard Template Category
- Workflow Template Category
- Stage Template Category
- Task Template Category
- Event Template Category
- Goal Template Category
- Key Result Template Category
- Survey Template Category
- Question Template Category
- Answer Template Category
- Clause Template Category
- Fee Template Category
- Tax Template Category
- Discount Template Category
- Credit Template Category
- Escrow Account Template Category
- User Subscription Template Category
- Plan Template Category
- Add-on Template Category
- Coupon Template Category
- Integration Setting Template Category
- Notification Template Category
Use action names and parameters as needed.
Working with Adversus
This skill uses the Membrane CLI to interact with Adversus. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing.
Install the CLI
Install the Membrane CLI so you can run membrane from the terminal:
npm install -g @membranehq/cli@latest
Authentication
membrane login --tenant --clientName=<agentType>
This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available.
Headless environments: The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with:
membrane login complete <code>
Add --json to any command for machine-readable JSON output.
Agent Types : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness
Connecting to Adversus
Use membrane connection ensure to find or create a connection by app URL or domain:
membrane connection ensure "https://adversus.io" --json
The user completes authentication in the browser. The output contains the new connection id.
This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically.
If the returned connection has state: "READY", skip to Step 2.
1b. Wait for the connection to be ready
If the connection is in BUILDING state, poll until it's ready:
npx @membranehq/cli connection get <id> --wait --json
The --wait flag long-polls (up to --timeout seconds, default 30) until the state changes. Keep polling until state is no longer BUILDING.
The resulting state tells you what to do next:
READY— connection is fully set up. Skip to Step 2.CLIENT_ACTION_REQUIRED— the user or agent needs to do something. TheclientActionobject describes the required action:clientAction.type— the kind of action needed:"connect"— user needs to authenticate (OAuth, API key, etc.). This covers initial authentication and re-authentication for disconnected connections."provide-input"— more information is needed (e.g. which app to connect to).clientAction.description— human-readable explanation of what's needed.clientAction.uiUrl(optional) — URL to a pre-built UI where the user can complete the action. Show this to the user when present.clientAction.agentInstructions(optional) — instructions for the AI agent on how to proceed programmatically.
After the user completes the action (e.g. authenticates in the browser), poll again with membrane connection get <id> --json to check if the state moved to READY.
CONFIGURATION_ERRORorSETUP_FAILED— something went wrong. Check theerrorfield for details.
Searching for actions
Search using a natural language description of what you want to do:
membrane action list --connectionId=CONNECTION_ID --intent "QUERY" --limit 10 --json
You should always search for actions in the context of a specific connection.
Each result includes id, name, description, inputSchema (what parameters the action accepts), and outputSchema (what it returns).
Popular actions
| Name | Key | Description | | --- | --- | --- | | Add Activity to