Read Funraise supporters, donations, recurring gifts and forms; add notes, tasks and supporters.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: mark a task complete (sets the completed date to now; Funraise may also log an interaction if the task automation says so). PUT /api/v1/task/{id}/complete.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
WRITE: mark a task complete (sets the completed date to now; Funraise may also log an interaction if the task automation says so). PUT /api/v1/task/{id}/complete.
| Argument | Type | Description |
|---|---|---|
| task_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}WRITE: add a note to a household's record in Funraise. Creates a new note each call. POST /api/v2/household/{id}/note.
| Argument | Type | Description |
|---|---|---|
| body* | string | Note text. |
| title* | string | Note title. |
| important | boolean | Mark the note important (default false). |
| household_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"household_id",
"title",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 32000,
"minLength": 1,
"description": "Note text."
},
"title": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Note title."
},
"important": {
"type": "boolean",
"description": "Mark the note important (default false)."
},
"household_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}WRITE: log an interaction (call, email, meeting) on a supporter's record. Creates a new interaction each call. POST /api/v1/interaction.
| Argument | Type | Description |
|---|---|---|
| subject* | string | Short subject line. |
| description | string | Details of the interaction. |
| supporter_id* | integer | |
| completed_date | string | When it was completed, ISO 8601, e.g. 2026-10-20T15:00:00Z. |
| action_required | string | Type of action. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id",
"subject"
],
"properties": {
"subject": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Short subject line."
},
"description": {
"type": "string",
"maxLength": 10000,
"description": "Details of the interaction."
},
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"completed_date": {
"type": "string",
"maxLength": 40,
"minLength": 8,
"description": "When it was completed, ISO 8601, e.g. 2026-10-20T15:00:00Z."
},
"action_required": {
"enum": [
"Phone",
"Email",
"In person meeting",
"Attend event",
"Thank",
"Follow up",
"Share impact report",
"Other"
],
"type": "string",
"description": "Type of action."
}
}
}WRITE: create a supporter (donor) record in Funraise. Creates a new record each call, so search with funraise_list_supporters (email) first to avoid duplicates. POST /api/v1/crm/supporter.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| tags | string | Tags as one string, as Funraise stores them. |
| string | ||
| phone | string | |
| state | string | |
| country | string | |
| address1 | string | |
| address2 | string | |
| last_name | string | |
| first_name | string | |
| sms_opt_in | boolean | |
| postal_code |
WRITE: add a note to a supporter's record in Funraise. Creates a new note each call. POST /api/v2/supporter/{id}/note.
| Argument | Type | Description |
|---|---|---|
| body* | string | Note text. |
| title* | string | Note title. |
| important | boolean | Mark the note important (default false). |
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id",
"title",
"body"
],
"properties": {
"body": {
"type": "string",
"maxLength": 32000,
"minLength": 1,
"description": "Note text."
},
"title": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Note title."
},
"important": {
"type": "boolean",
"description": "Mark the note important (default false)."
},
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}WRITE: create a task in Funraise, linked to a supporter or to a donation (give at least one). Title is 40 characters at most. Creates a new task each call. POST /api/v2/task.
| Argument | Type | Description |
|---|---|---|
| color | string | Task colour in Funraise, hex like #2979ff. |
| title* | string | Task title, 40 characters at most. |
| due_date | string | Due date, ISO 8601, e.g. 2026-11-01T00:00:00Z. |
| description | string | Task details. |
| supporter_id | integer | Supporter the task is about. |
| transaction_id | integer | Donation (transaction) the task is about. |
| action_required | string | Type of action. |
| assigned_to_user_id | integer | Funraise user id the task is assigned to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title"
],
"properties": {
"color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$",
"description": "Task colour in Funraise, hex like #2979ff."
},
"title": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Task title, 40 characters at most."
},
"due_date": {
"type": "string",
"maxLength": 40,
"minLength": 8,
"description": "Due date, ISO 8601, e.g. 2026-11-01T00:00:00Z."
},
"description": {
"type": "string",
"maxLength": 10000,
"description": "Task details."
},
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Supporter the task is about.",
"exclusiveMinimum": 0
},
"transaction_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Donation (transaction) the task is about.",
"exclusiveMinimum": 0
},
"action_required": {
"enum": [
"Phone",
"Email",
"In person meeting",
"Attend event",
"Thank",
"Follow up",
"Share impact report",
"Other"
],
"type": "string",
"description": "Type of action."
},
"assigned_to_user_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Funraise user id the task is assigned to.",
"exclusiveMinimum": 0
}
}
}One address by id (street, city, state, postal code, country, primary flag, household and supporter). GET /api/v1/address/{addressId}.
| Argument | Type | Description |
|---|---|---|
| address_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"address_id"
],
"properties": {
"address_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One campaign site by UUID: configuration preview (payment options, goals, form, homepage, fundraiser settings). GET /api/v1/campaignSite/{uuid}.
| Argument | Type | Description |
|---|---|---|
| campaign_site_uuid* | string | The campaign site UUID. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"campaign_site_uuid"
],
"properties": {
"campaign_site_uuid": {
"type": "string",
"maxLength": 64,
"minLength": 8,
"description": "The campaign site UUID."
}
}
}One donation by its Funraise id: amount, date, supporter, household, form, allocation, dedication, fees, UTM, subscription. GET /api/v1/crm/donation/{id}.
| Argument | Type | Description |
|---|---|---|
| donation_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"donation_id"
],
"properties": {
"donation_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One household: name, salutation, member count, primary contact, preferred address, total giving. GET /api/v1/household/{householdId}.
| Argument | Type | Description |
|---|---|---|
| household_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"household_id"
],
"properties": {
"household_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}The household membership of a supporter (household and supporter details). GET /api/v1/household/member/{supporterId}.
| Argument | Type | Description |
|---|---|---|
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id"
],
"properties": {
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One interaction by id. GET /api/v1/interaction/{id}.
| Argument | Type | Description |
|---|---|---|
| interaction_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"interaction_id"
],
"properties": {
"interaction_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One note by id, with title, body, importance and author. GET /api/v2/note/{id}.
| Argument | Type | Description |
|---|---|---|
| note_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"note_id"
],
"properties": {
"note_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One recurring gift by id: status, frequency, amount, last and next payment date, cancel date, supporter. GET /api/v1/crm/subscription/{id}.
| Argument | Type | Description |
|---|---|---|
| subscription_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"subscription_id"
],
"properties": {
"subscription_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One supporter: name, email, phone, tags, opt-ins, household, primary address, institution. GET /api/v1/crm/supporter/{id}.
| Argument | Type | Description |
|---|---|---|
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id"
],
"properties": {
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}One task by id: title, description, due date, status, assigned user, supporter, linked donation. GET /api/v2/task/{id}.
| Argument | Type | Description |
|---|---|---|
| task_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List campaign sites (fundraising pages), active by default or archived. Returns campaignSites with totalPageCount and totalRowCount. GET /api/v1/campaignSite/active or /archived.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| archived | boolean | true = archived sites, otherwise active sites. |
| page_size | integer | Records per page, 1-100. |
| allow_fundraisers | boolean | Active sites only: filter by whether peer-to-peer fundraisers are allowed. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"archived": {
"type": "boolean",
"description": "true = archived sites, otherwise active sites."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"allow_fundraisers": {
"type": "boolean",
"description": "Active sites only: filter by whether peer-to-peer fundraisers are allowed."
}
}
}List donations (transactions) with amount, date, supporter, form, campaign page, allocation, fees and tags. Filter by an exact transactionId, by last N hours, or by a lastUpdated timestamp; use last_id to continue from the last donation id of the previous page. GET /api/v1/crm/donation.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| last_id | integer | Continue after this donation id (the last id of the previous page). |
| page_size | integer | Records per page, 1-100. |
| last_hours | integer | Only donations created or changed in the last N hours. |
| last_updated | string | Only donations updated since this ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z. |
| transaction_id | string | Exact payment transaction id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"last_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Continue after this donation id (the last id of the previous page).",
"exclusiveMinimum": 0
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"last_hours": {
"type": "integer",
"maximum": 100000,
"description": "Only donations created or changed in the last N hours.",
"exclusiveMinimum": 0
},
"last_updated": {
"type": "string",
"maxLength": 40,
"minLength": 4,
"description": "Only donations updated since this ISO 8601 timestamp, e.g. 2026-10-01T00:00:00Z."
},
"transaction_id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Exact payment transaction id."
}
}
}The custom questions attached to a form. GET /api/v2/form/{formId}/custom-question.
| Argument | Type | Description |
|---|---|---|
| form_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"form_id"
],
"properties": {
"form_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List donation and event forms, filtered by type, status and version. Needs the CREATOR role on the key. GET /api/v1/form.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| type | string | Form type filter, as shown in Funraise (for example donation or event). |
| status | string | Form status filter, for example active or archived. |
| version | string | Form version filter. |
| page_size | integer | Records per page, 1-100. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"type": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Form type filter, as shown in Funraise (for example donation or event)."
},
"status": {
"type": "string",
"maxLength": 60,
"minLength": 1,
"description": "Form status filter, for example active or archived."
},
"version": {
"type": "string",
"maxLength": 20,
"minLength": 1,
"description": "Form version filter."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
}
}
}Addresses of a household (paginated: list, page, pageSize, totalPageCount, totalRowCount). GET /api/v1/household/{householdId}/address.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| sort | string | Field to sort by. |
| order | string | Sort direction. |
| page_size | integer | Records per page, 1-100. |
| household_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"household_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"sort": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Field to sort by."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"household_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}Notes on a household's record (paginated). GET /api/v2/household/{id}/note.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| sort | string | Field to sort by. |
| order | string | Sort direction. |
| page_size | integer | Records per page, 1-100. |
| household_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"household_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"sort": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Field to sort by."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"household_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List recurring gifts (subscriptions) with status, frequency, amount, next payment date and supporter. The q filter is a Funraise expression (Funraise requires it; default: id > 0 order by id asc), for example: id > 10 and status = "Cancelled" order by id asc. GET /api/v1/crm/subscription.
| Argument | Type | Description |
|---|---|---|
| q | string | Filter expression, e.g. id > 10 and status = "Cancelled" order by id asc. Default: id > 0 order by id asc (all subscriptions). |
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| page_size | integer | Records per page, 1-100. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Filter expression, e.g. id > 10 and status = \"Cancelled\" order by id asc. Default: id > 0 order by id asc (all subscriptions)."
},
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
}
}
}Addresses of a supporter (paginated). GET /api/v1/supporter/{supporterId}/address.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| sort | string | Field to sort by. |
| order | string | Sort direction. |
| page_size | integer | Records per page, 1-100. |
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"sort": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Field to sort by."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}The interaction log of a supporter (calls, emails, meetings): subject, description, action, assigned user, dates. GET /api/v1/interaction/donor/{donorId}.
| Argument | Type | Description |
|---|---|---|
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id"
],
"properties": {
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}Notes on a supporter's record (paginated). GET /api/v2/supporter/{id}/note.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| sort | string | Field to sort by. |
| order | string | Sort direction. |
| page_size | integer | Records per page, 1-100. |
| supporter_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"supporter_id"
],
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"sort": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Field to sort by."
},
"order": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"supporter_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}List supporters (donors) in the Funraise CRM, newest first as Funraise returns them. Filter by exact email or by records changed in the last N hours. GET /api/v1/crm/supporter.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1. |
| string | Exact email address to look up. | |
| page_size | integer | Records per page, 1-100. |
| last_hours | integer | Only supporters created or changed in the last N hours. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 0,
"description": "Page number. Funraise does not document whether paging starts at 0 or 1: omit it for the first page; if page 1 repeats the first page, numbering starts at 1."
},
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3,
"description": "Exact email address to look up."
},
"page_size": {
"type": "integer",
"maximum": 100,
"description": "Records per page, 1-100.",
"exclusiveMinimum": 0
},
"last_hours": {
"type": "integer",
"maximum": 100000,
"description": "Only supporters created or changed in the last N hours.",
"exclusiveMinimum": 0
}
}
}Interactions assigned to a Funraise user (staff member). GET /api/v1/interaction/user/{userId}.
| Argument | Type | Description |
|---|---|---|
| user_id* | integer |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
}
}
}| string |
| email_opt_in | boolean |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"maxLength": 200
},
"tags": {
"type": "string",
"maxLength": 1000,
"description": "Tags as one string, as Funraise stores them."
},
"email": {
"type": "string",
"maxLength": 320,
"minLength": 3
},
"phone": {
"type": "string",
"maxLength": 60
},
"state": {
"type": "string",
"maxLength": 100
},
"country": {
"type": "string",
"maxLength": 100
},
"address1": {
"type": "string",
"maxLength": 300
},
"address2": {
"type": "string",
"maxLength": 300
},
"last_name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"first_name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"sms_opt_in": {
"type": "boolean"
},
"postal_code": {
"type": "string",
"maxLength": 40
},
"email_opt_in": {
"type": "boolean"
}
}
}