• AI reference · Always listed

people

Find or update a person. Make or update a person's card by email. To only read a card, use thread. Custom fields (the owner's own, like a wedding date): once the owner has any, the card's answer has fields (its values) and field_defs (each key, label, type: text, date YYYY-MM-DD, number, or choice with its choices); fields sets values by key (null takes one off); in_field { key, value } lists everyone with exactly that value; define_field { label, type, choices? } adds a field (or changes one by key). A field fills {{key}} in automation emails (someone without it skips that email).

Where it is

Always listed: call it by its name.

Does it need a yes?

Runs at once, no yes card: it changes only the office's own working state, and nothing reaches anyone. Here: the company's own people list; nobody is emailed or started.

Inputs

InputTypeNeededAbout
emailstringnoThe person's email address. Leave it out with in_stage to list. · up to 254 characters · format `^[^\s@<>",;]+@[^\s@<>",;]+\.[^\s@<>",;]+$`
in_stage"new" | "replied" | "call" | "proposal" | "won" | "lost" | "client"noRead only: the people in a stage, 50 at a time, newest added first.
beforestringnoRead only, with in_stage: the next of an earlier list (the people after that page). · 1 to 300 characters
namestringno1 to 120 characters
phonestringno3 to 40 characters
stage"new" | "replied" | "call" | "proposal" | "won" | "lost" | "client"noWhere they are on the pipeline.
notesstringnoAdded to the card as a dated line. · 1 to 4,000 characters
summarystringnoOne line: who they are and where things stand. · 1 to 300 characters
consentfalsenofalse records that they said no to the newsletter. A yes is never yours: newsletter sign-ups use double opt-in (only the person's own click on the confirmation email turns it on), and the card's newsletter_consent shows where it stands.
fieldsobjectnoCustom field values by key (field_defs on the answer has the keys and types); null takes one off.
in_fieldobjectnoRead only: everyone whose custom field has exactly this value.
in_field.keystringyesformat `^[a-z][a-z0-9_]{1,39}$`
in_field.valuestring or numberyes
define_fieldobjectnoAdd a custom field on people (or change one by key).
define_field.keystringnoLeave out for a new one: made from the label. · format `^[a-z][a-z0-9_]{1,39}$`
define_field.labelstringyes1 to 60 characters
define_field.type"text" | "date" | "number" | "choice"yes
define_field.choicesarray of stringnoFor a choice: its choices. · 1 to 50 items
run_idstringnoThe run_id from start. Pass it on every call: it keeps your task held. · 1 to 100 characters

Example

{
  "name": "people",
  "arguments": {}
}

When it is refused

  • invalid: The input isn't right. The sentence names the field and the fix; nothing was done. Fix it and call again.
  • not_found: No such thing in this company (a task, file, person, record). Check the number or name, or list first.
  • not_allowed: Not without another step: the owner's yes, your own task held with pick_up, or a setting the owner turns on. The sentence says which.
  • taken: Someone else holds it (another AI on that task). Pick another task.
  • stale: It changed since you read it. Read it again and use the new version.
  • failed: On our side or a service's, never your input. Try again in a minute; if it keeps failing, call report_problem.