github.com/humanagencyprotocol/hap-profiles/customers@0.6
Customer authority — governs CRM operations: contacts, activities, deals, tasks
Bounds Schema
| Field | Type | Required | Description |
|---|---|---|---|
profile | string | Yes | - |
read_access | string | Yes | Allow the agent to browse contacts, timelines, pipeline and tasks. Bulk export is governed separately by Export access. |
export_access | string | Yes | Allow the agent to export the ENTIRE CRM in one call. Separate from read access because the risk is different in kind: reading one contact and extracting the whole customer database are not the same decision. |
write_daily_max | number | Yes | Maximum CRM write operations per day (creates, updates) |
delete_daily_max | number | Yes | Maximum CRM delete operations per day |
Key order: profile, read_access, export_access, write_daily_max, delete_daily_max
Context Schema (local only)
| Field | Type | Required | Description |
|---|---|---|---|
contact_type | string | Yes | Contact types the agent may create, update or delete. Does NOT restrict reading — reads are governed by read_access. |
Key order: contact_type
Full Definition
{
"id": "github.com/humanagencyprotocol/hap-profiles/customers@0.6",
"name": "Customer Management",
"version": "0.6",
"description": "Customer authority — governs CRM operations: contacts, activities, deals, tasks",
"boundsSchema": {
"keyOrder": [
"profile",
"read_access",
"export_access",
"write_daily_max",
"delete_daily_max"
],
"fields": {
"profile": {
"type": "string",
"required": true
},
"read_access": {
"type": "string",
"required": true,
"displayName": "Read access",
"description": "Allow the agent to browse contacts, timelines, pipeline and tasks. Bulk export is governed separately by Export access.",
"boundType": {
"kind": "enum",
"values": [
"unlimited",
"none"
]
},
"toolsDescription": "find_contacts, get_timeline, get_pipeline, list_tasks",
"default": "unlimited"
},
"export_access": {
"type": "string",
"required": true,
"displayName": "Export access",
"description": "Allow the agent to export the ENTIRE CRM in one call. Separate from read access because the risk is different in kind: reading one contact and extracting the whole customer database are not the same decision.",
"boundType": {
"kind": "enum",
"values": [
"allowed",
"none"
]
},
"toolsDescription": "export_crm",
"default": "none"
},
"write_daily_max": {
"type": "number",
"required": true,
"displayName": "Daily write limit",
"description": "Maximum CRM write operations per day (creates, updates)",
"unit": "count",
"boundType": {
"kind": "cumulative_count",
"window": "daily"
},
"paths": [
"customers-write"
],
"appliesTo": [
"write"
]
},
"delete_daily_max": {
"type": "number",
"required": true,
"displayName": "Daily delete limit",
"description": "Maximum CRM delete operations per day",
"unit": "count",
"boundType": {
"kind": "cumulative_count",
"window": "daily"
},
"paths": [
"customers-delete"
],
"appliesTo": [
"delete"
]
}
}
},
"contextSchema": {
"keyOrder": [
"contact_type"
],
"fields": {
"contact_type": {
"type": "string",
"required": true,
"displayName": "Contact types the agent may create or modify",
"description": "Contact types the agent may create, update or delete. Does NOT restrict reading — reads are governed by read_access.",
"enum": [
"customer",
"lead",
"partner",
"vendor"
],
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
}
}
},
"executionContextSchema": {
"fields": {
"contact_type": {
"source": "declared",
"description": "Contact type being accessed",
"required": true,
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"write_count_daily": {
"source": "cumulative",
"cumulativeField": "_count",
"window": "daily",
"description": "Running daily write operation count",
"required": true,
"constraint": {
"type": "number",
"enforceable": [
"max"
]
}
}
}
},
"requiredGates": [
"bounds",
"intent",
"commitment",
"decision_owner"
],
"ttl": {
"default": 86400,
"max": 31536000
},
"retention_minimum": 7776000,
"content_binding": {
"version": "1",
"kind": "jcs"
}
}