Entity fields
The database is the source of truth. Approval cards are checked against approval_entity_shapes, which you can edit under Admin → Approval types. The tables below match that shape plus the check constraints. If a later migration disagrees with this page, the migration wins.
Agents do not insert these tables directly. They submit a card (graph_entity_create or graph_entity_update) or an entity_graph_checkin. A person approves creates. entity_field_write is the single-field path for a value that already has a row, with a source of agent, crm, or import. entity_create as an MCP tool is deprecated and does not insert.
Never send these keys on a card: tags, domain_wall, references, slug, id, owner_user_id, contacts.name.
Foreign keys accept an id or a slug.
Card fields
Accounts
Required: name.
Allowed: name, summary, industry, website, domain, headquarters_city, headquarters_country, lifecycle_stage, employee_count_range, annual_revenue_range, phone.
Contacts
Required: full_name, or both first_name and last_name.
Allowed: full_name, first_name, last_name, email, title, location, linkedin_url, summary, lifecycle_stage, account_id, phone_primary, seniority.
Deals
Required: name.
Allowed: name, stage, status, value, amount_cents, close_date, account_id, campaign_id, end_customer_account_id, bill_to_account_id, referring_partner_account_id.
Projects
Required: name.
Allowed: name, status, classification, start_date, end_date, account_id, deal_id, campaign_id, client_account_id, kind, domain.
Campaigns
Required: name, campaign_type.
Allowed: name, campaign_type, status, description, goal, start_date, end_date, exclude_deals_from_board.
Territories
Required: name.
Allowed: name, partner_account_id, parent_id, status, partner_fy, dimensions.
territories.status has no check constraint. The convention used in the product is active or inactive.
Allowed values
Lifecycle stage (accounts and contacts)
subscriber, lead, mql, sql, opportunity, customer, evangelist, churned, other, unqualified, active, lost, cancelled, needs-review.
prospect is normalized to lead on the way in. cancelled is the archive value. Use needs-review when the name is a single token and there is no email and no account.
Account commercial status
customer_status (nullable): prospect, opportunity, customer, former-customer, lost, unqualified.
partner_status (nullable): evaluating, onboarding, active, cancelled, inactive.
These two are columns on the account. They are not the lifecycle stage, and they are not both required on a create card.
Contact kind
contact_kind: person, automation, shared_inbox, unknown. The database classifies this from the email and name. A user-set kind is locked against that classifier. It is not a create-card field in the shape above.
Deals
stage: Lead, Qualification, Discovery, Value Proposition, Proposal, Negotiate, Contract, Closed Won, Closed Lost.
status: open, won, lost, stalled.
forecast_category: pipeline, best_case, most_likely, commit.
Projects
status: active, paused, stuck, completed, cancelled.
classification (nullable): internal, client, partner.
Campaigns
campaign_type: outbound_marketing, internal_initiative.
status: draft, active, paused, completed, archived.
Tasks
status: backlog, todo, doing, review, stuck, done, cancelled.
human_approval_to_close: boolean. Default false.
Approvals
status: pending, approved, rejected, deferred, expired, delegated.
Activity quality
quality_class: substantive, transactional, notification, digest, noise.
Agent state and notes
entity_state_get, entity_state_set, and entity_state_patch read or write agent_state on contacts, accounts, deals, or projects. Set replaces the object. Patch shallow-merges. Pass expected_updated_at when you need to lose the race instead of clobbering another writer.
entity_note_add appends a note. entity_notes_list returns the newest notes. Long bodies are truncated in the tool response.