CRM · Beta
EveryAction
API integration
Ship CRM features without building the integration. Full EveryAction API access via Proxy and 20+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Built for specific customer use cases. Issues are resolved quickly.
Talk to usUse Cases
Why integrate with EveryAction
Common scenarios for SaaS companies building EveryAction integrations for their customers.
Sync online donations and recurring commitments into donor records
Fundraising and checkout platforms can push one-time contributions and recurring commitments directly into EveryAction, tagged with source codes so nonprofits can attribute revenue to specific campaigns without manual entry.
Write P2P texting and advocacy responses back as survey answers
SMS, petition, and advocacy platforms can identify supporters via people search and post responses as survey questions or activist codes, giving organizers a real-time view of sentiment inside their existing CRM.
Load predictive scores and voter file appends at scale
Analytics and data vendors can ship millions of updated scores or Early Vote records into EveryAction using asynchronous bulk file loading jobs, avoiding per-record API calls and keeping field lists fresh.
Power event RSVPs and volunteer signups from external tools
Event, ticketing, and volunteer management SaaS can create EveryAction events and register attendees when supporters RSVP externally, keeping the organizing team's CRM as the single source of truth.
Enable labor organizing workflows tied to worksites and employers
Union-focused apps can maintain employers, worksites, work areas, shift types, and bargaining unit job classes in EveryAction as reps map shop floors in the field.
What You Can Build
Ship these features with Truto + EveryAction
Concrete product features your team can ship faster by leveraging Truto’s EveryAction integration instead of building from scratch.
Contribution and commitment push
Create processed contributions and recurring commitments in EveryAction with source codes and designations attached for ROI tracking.
Supporter dedupe and match
Use people search to find or reconcile contacts by vanId, name, email, phone, or DOB before writing new records or actions.
Survey question and activist code writeback
Capture responses from your product (texts, forms, calls) and post them as survey question responses or activist code applications on the matched supporter.
Event creation and management
Programmatically create EveryAction events from your ticketing or RSVP flow so attendance data lands where organizers already work.
Bulk score and Early Vote uploads
Kick off file loading jobs and bulk import jobs to move large CSVs of scores, contacts, or AV/EV data into EveryAction asynchronously.
Labor organizing data management
Maintain worksites, work areas, employers, shift types, and bargaining unit job classes for union clients tracking worksite-level organizing.
SuperAI
EveryAction AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_every_action_api_key_profiles
List API key profiles via the EveryAction introspection endpoint, which returns information about the API key currently in use. Returns: databaseName, hasMyVoters, hasMyCampaign, committeeName, apiKeyTypeName, keyReference, userFirstName, userLastName, username, userId.
every_action_people_search
Search for a person in EveryAction using a match candidate such as name, date of birth, phone, or email. Returns: vanId, firstName, lastName, middleName, party, employer, occupation, sex, dateOfBirth, person, customProperties. Providing a valid vanId overrides other search criteria.
get_single_every_action_activist_code_by_id
Get a specific Activist Code in EveryAction by its id. Returns: activistCodeId, type, name, mediumName, shortName, description, scriptQuestion, status. Required: id (either an integer or a VAN encoded identifier such as EID28CG).
create_a_every_action_bulk_import_job
Create a bulk import job in EveryAction by specifying a zipped, delimited file URL and the actions to perform on its data. Supports creating and/or updating Contacts, Contributions, ActivistCodes, and ContactsActivistCodes. Returns: jobId, file, actions. Required: description, file, actions. The zipped file must be no more than 20 MB and the source URL must use SFTP, FTPS, or HTTPS.
create_a_every_action_commitment
Create a Recurring Commitment record in EveryAction and process or initiate the first installment contribution with payment details in the request body. Returns: commitmentId, contributionId. Required: contact, designation, gatewayId, startDate, frequency, amount, paymentMethod. Amount must be $0.01–$999,999.99; an Idempotency-Key header is required.
list_all_every_action_contributions
List recent contributions in EveryAction filtered by vanId. Returns: contactsContributionId, vanId, donorName, donorNameFirstLast, designationId, designationName, dateReceived, amount, amountRemaining, amountRefunded, period, cycle, sourceCodeId, sourceCodeName, sourceCodeDescription, sourceCodeStaticPath, type. Required: vanId.
create_a_every_action_contribution
Create and process a contribution payment in EveryAction with the provided payment information. Returns the integer ID of the created contribution. Required: contact, designation, gatewayId, amount, paymentMethod. Amount must be between $0.01 and $999,999.99 inclusive.
list_all_every_action_disbursements
List recent disbursements in EveryAction filtered by vanId. Returns: contactsDisbursementId, vanId, designationId, date, amount, purpose, period, cycle, sourceCodeName, sourceCodeDescription, sourceCodeStaticPath. Required: vanId. Default page size of 6.
list_all_every_action_early_vote_fields
List early vote fields in EveryAction with optional status filtering. Returns: earlyVoteFieldId, name, type, status, values. The statuses parameter accepts a comma-delimited list of Active and Inactive. Defaults to Active,Inactive.
get_single_every_action_early_vote_field_by_id
Get a single early vote field by id in EveryAction. Returns: earlyVoteFieldId, name, type, status, values, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id.
delete_a_every_action_employer_by_id
Delete the relationship or link between an Employer and a BargainingUnit in EveryAction by proxy id. This only removes the relation between them, not the entities themselves. Returns an empty 200 response on success. Required: employer_id, id.
create_a_every_action_event
Create a new Event in EveryAction. Returns the integer ID of the newly created Event in the response body. Required: event.
create_a_every_action_file_loading_job
Create a file-loading job in EveryAction by specifying a zipped CSV source file and the action(s) to perform on it. Returns: jobId, listeners, file, actions. Required: description, file (including fileName, sourceUrl, and columns), and actions. Supports Score Load, AV/EV Data File, Saved List Load, and Phones File action types.
list_all_every_action_folders
List all Map Regions in an EveryAction folder. Returns: mapRegionId, name, description, dateCreated, dateRefreshed, mapRoutes. Required: folder_id.
get_single_every_action_folder_by_id
Get a specific Map Region in an EveryAction folder by id. Returns: mapRegionId, name, description, dateCreated, dateRefreshed, mapRoutes, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: folder_id, id.
every_action_folders_refresh
Refresh all Map Regions in an EveryAction folder. Returns an empty object on success. Required: folder_id.
every_action_folders_refresh_item
Refresh a specific Map Region in an EveryAction folder. Returns an empty object on success. Required: folder_id, map_region_id.
list_all_every_action_minivan_exports
List all available MiniVAN Exports in EveryAction. Returns: minivanExportId, name, dateCreated, createdBy, canvassers, eventSignups, databaseMode.
list_all_every_action_printed_lists
List all available Printed Lists in EveryAction, with optional filters by generation date, creator, folder, or turf. Returns: number, name, eventSignups, listSize, folders, dateCreated, createdBy.
list_all_every_action_scores
List committee access details for a specific Score in EveryAction. Returns: scoreId, scoreName, ownerCommittee, committeesWithAccess. Required: score_id.
create_a_every_action_survey_question
Create a new Survey Question in EveryAction. Returns an empty object on success. Required: type, cycle, name, nameOtherLanguage, mediumName, mediumNameOtherLanguage, shortName, shortNameOtherLanguage, scriptQuestion, scriptQuestionOtherLanguage, status, scope, and responses.
update_a_every_action_survey_question_by_id
Update an existing Survey Question in EveryAction by id. Returns an empty object on success. Required: id, surveyQuestionId, type, cycle, name, nameOtherLanguage, mediumName, mediumNameOtherLanguage, shortName, shortNameOtherLanguage, scriptQuestion, scriptQuestionOtherLanguage, status, and responses.
create_a_every_action_voter_registration_batch
Add registrants to a Voter Registration Batch in EveryAction. Returns an array of per-registrant result objects with alternateId, vanId, result, and errors. Required: batch_id. Up to 25 registrants per request; the body must be a bare JSON array without a wrapping key.
update_a_every_action_worksite_by_id
Update an existing Worksite in EveryAction. Returns: worksiteId, name, isPreferred, address, employer, workAreas, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id, isPreferred.
delete_a_every_action_worksite_by_id
Delete an existing Worksite in EveryAction by id. Returns an empty 200 response on success. Required: id.
delete_a_every_action_employer_bargaining_unit_job_class_by_id
Delete the relationship or link between an Employer, BargainingUnit, and JobClass in EveryAction. This removes only the association between the three entities, not the entities themselves. Returns an empty 200 response on success. Required: employer_id, bargaining_unit_id, id.
delete_a_every_action_employer_shift_type_by_id
Delete the relationship between an Employer and a ShiftType in EveryAction. This removes the link without modifying either the Employer or the ShiftType itself. Returns an empty 200 response on success. Required: employer_id, id.
update_a_every_action_work_area_by_id
Update an existing WorkArea in EveryAction. Returns: workAreaId, name, openapi, info, servers, components, security, paths, x-readme, x-readme-fauxas. Required: id, worksite_id.
delete_a_every_action_work_area_by_id
Delete an existing WorkArea in EveryAction. Returns an empty 204 response on success. Required: id, worksite_id.
Why Truto
Why use Truto’s MCP server for EveryAction
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with EveryAction in under an hour. No boilerplate, no maintenance burden.
Link your customer’s EveryAction account
Use Truto’s frontend SDK to connect your customer’s EveryAction account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call EveryAction
Truto’s Proxy API is a 1-to-1 mapping of the EveryAction API. You call us, we call EveryAction, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate EveryAction’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about EveryAction on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How does authentication work for EveryAction?
EveryAction uses API key authentication scoped to a specific committee or database profile. Truto handles credential storage and injection per end user, and you can list the available API key profiles for a connected account to route requests to the correct database.
How do we avoid creating duplicate supporter records?
Use the people search endpoint first to match on vanId (the canonical identifier) or a combination of name, email, phone, and date of birth. Only fall back to record creation flows when no confident match is returned.
What's the best way to load large volumes of data?
For anything over a few thousand records — score updates, contact appends, Early Vote data — use the file loading job or bulk import job endpoints rather than per-record calls. These are asynchronous and designed for high-volume ingestion.
Can we track marketing attribution on donations we push in?
Yes. When creating contributions or commitments, you can attach source codes and designations so the nonprofit can attribute revenue to specific campaigns, ads, or appeals directly inside EveryAction reporting.
Does the integration support labor union data models?
Yes. The available endpoints cover worksites, work areas, employers, shift types, and employer bargaining unit job classes, including update and delete operations for maintaining accurate worksite mappings.
How fresh is data read from EveryAction?
Reads through endpoints like contributions, disbursements, folders, scores, and printed lists reflect the current state of the EveryAction database at request time. For folder-backed lists, refresh endpoints are available to force recomputation before pulling.
EveryAction
Get EveryAction integrated into your app
Our team understands what it takes to make a EveryAction integration successful. A short, crisp 30 minute call with folks who understand the problem.