# OneShot Agent API – CRM Note Writer

> OneShot Agent API – CRM Note Writer is a paid API for AI agents from win.oneshotagent.com, paid per call via x402, $0.001/call, status unknown (last checked 2026-10-29).

Writes a plain-text note to a CRM record (account, contact, or opportunity) in a connected CRM system such as HubSpot via the x402 paid tool protocol.

## Facts

- Endpoint: POST https://win.oneshotagent.com/v1/tools/crm/notes?utm_source=zero.xyz
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-29
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/oneshot-agent-api-crm-note-writer-e258a8a4
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_HRpFVnHHqehr8SgZfmFnJ

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability oneshot-agent-api-crm-note-writer-e258a8a4 -d '<json body>'
```

Example prompt: Log a note on the HubSpot contact with ID 'c-4892' via CRM connection '3fa85f64-5717-4562-b3fc-2c963f66afa6' that says: 'Called to discuss renewal — customer is interested, follow up next Monday.'

## When to prefer this

Use this endpoint when an AI agent needs to programmatically write free-text notes directly to a CRM record (account, contact, or opportunity) in a connected CRM like HubSpot, especially within an autonomous workflow where call summaries, meeting notes, or activity logs should be persisted to the CRM automatically. Prefer this over manual CRM entry or generic REST clients when the x402 micropayment model fits and CRM connectivity is managed through OneShot Agent's connection layer.

## Known failure modes

- Invalid or missing connection_id returns a 4xx error indicating the CRM connection is not found or unauthorized
- Record type not in allowed enum ('account','contact','opportunity') causes a validation error
- Note body exceeding 5,000 characters or empty string fails schema validation
- Payment not provided triggers 402 Payment Required with a quote; must resend with payment-signature and X-Quote-ID
- Unknown record ID may result in a CRM-side error forwarded as a 4xx or 5xx
- Expired or invalid x402 payment signature returns an authentication/payment error

## How this service works

Tools, payments, and compute orchestration for autonomous AI agents.

## Authentication

- **`x402Payment`** — paid tool endpoints use the [x402 payment protocol](https://x402.io).
  First call returns `402 Payment Required` with a quote; sign and resend the request
  with `payment-signature: <base64 x402 payment>` and `X-Quote-ID: <quote_id>`.
- **`agentId`** — free read-only endpoints accept `X-Agent-ID: <wallet>` (0x… address).
- **`soulKey`** — soul marketplace seller dashboard uses `Authorization: Bearer soul_…`
  (issued by `POST /v1/soul/register`).
- **`acpBearer`** — Stripe ACP checkout sessions use a separate bearer token plus the
  `API-Version: 2026-01-30` header.

## Async tools & polling

Most tool endpoints return `202 Accepted` with `{ request_id, tool, status }`. Poll
`GET /v1/requests/{id}` (with the same `X-Agent-ID`) to retrieve the final result.
A WebSocket fallback is available at `wss://<host>/v1/requests/subscribe`.

## Pricing

Prices are listed at [docs.oneshotagent.com/pricing](https://docs.oneshotagent.com/pricing).
A wallet (x402) call returns its exact price in the 402 quote before anything is charged.
Calls paid from prepaid credits (access-token sessions, and the phone number purchase at
`POST /v1/tools/voice/numbers`) debit the credit balance when the request is accepted, before the work runs
(`200` for a synchronous lookup, `201` for the number purchase, `202` for a queued job),
and answer `402 insufficient_credits` with nothing charged or bought when the balance cannot cover it.

## Error format

`{ "error": "<machine_code>", "message": "<human readable>", "details": <optional> }`.
Validation errors include a `details` field with the failing field paths.

## Output

Returns a JSON object containing the new note's ID, the source system identifier and CRM system name (e.g. 'hubspot'), and the ISO 8601 timestamp when the note was created.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "body": {
   "type": "string",
   "maxLength": 5000,
   "minLength": 1,
   "description": "Plain text note, at most 5,000 characters."
  },
  "record": {
   "type": "object",
   "required": [
    "type",
    "id"
   ],
   "properties": {
    "id": {
     "type": "string"
    },
    "type": {
     "enum": [
      "account",
      "contact",
      "opportunity"
     ],
     "type": "string"
    }
   },
   "additionalProperties": false
  },
  "connection_id": {
   "type": "string",
   "format": "uuid",
   "description": "List connections and select the system and account label to write to."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "id": "501",
  "source": {
   "id": "501",
   "system": "hubspot"
  },
  "created_at": "2026-10-17T12:00:00.000Z"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/oneshot-agent-api-crm-note-writer-e258a8a4/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from win.oneshotagent.com](https://www.zero.xyz/host/win.oneshotagent.com/llms.txt)
