# Drug Abuse Screening Test-10 (DAST-10)

DAST-10

Status: LIVE
Price: $0.005 USDC
`GET /api/calc/dast_10`
HTML: https://magentlab.com/docs/dast-10
Markdown: https://magentlab.com/docs/dast-10.md

Not a medical device. Not a diagnosis, dose, or listing recommendation.

## What it computes

Count Skinner 1982 DAST-10 problem-direction answers (able_to_stop reverse-scored) and return the published degree-of-problems band (0 none, 1-2 low, 3-5 moderate, 6-8 substantial, 9-10 severe).

## When to use

When an agent has already assigned the ten DAST-10 yes/no items and needs that 1982 scored total and degree-of-problems bands, not DAST-20, DAST-28, a diagnosis, or a toxicology panel.

## When not to use

- Not a medical device.
- Not a diagnosis of a drug use disorder.
- Not a toxicology panel and not a measure of alcohol use.
- magent does not interpret the items. Each flag is caller-assigned yes/no.
- Scoring uses the Skinner 1982 DAST-10 problem-direction key. able_to_stop scores 1 if false and 0 if true. magent does not award 1 point for every yes.
- This is the 10-item DAST-10 only. Not DAST-28 and not DAST-20.
- Degree-of-problems bands follow the 1982 DAST-10 table: 0 no problems, 1-2 low, 3-5 moderate, 6-8 substantial, 9-10 severe. magent does not apply Gavin 1989 DAST DSM-III cut-points (5/6) or later NIDA-only cutoffs.

## Formula

```
DAST-10 = used_drugs_nonmedical + abuse_more_than_one + (1 if not able_to_stop) + blackouts_flashbacks + feel_bad_guilty + others_complain + neglected_family + illegal_activities + withdrawal + medical_problems; each 1 in the Skinner 1982 problem direction; max 10
```

## Citation

[The drug abuse screening test](https://doi.org/10.1016/0306-4603(82)90005-3)
Skinner HA
Addict Behav. 1982;7(4):363-371
DOI: [10.1016/0306-4603(82)90005-3](https://doi.org/10.1016/0306-4603(82)90005-3)

## Worked example

### All no (able_to_stop true)

Given: `able_to_stop=true, abuse_more_than_one=false, blackouts_flashbacks=false, feel_bad_guilty=false, illegal_activities=false, medical_problems=false, neglected_family=false, others_complain=false, used_drugs_nonmedical=false, withdrawal=false`

1. able_to_stop is true (reverse-scored; not scored)
2. the other nine items are false (not scored)
3. score = 0; dast_band no_problems


### Unable to stop only

Given: `able_to_stop=false, abuse_more_than_one=false, blackouts_flashbacks=false, feel_bad_guilty=false, illegal_activities=false, medical_problems=false, neglected_family=false, others_complain=false, used_drugs_nonmedical=false, withdrawal=false`

1. able_to_stop is false (reverse-scored; scores 1)
2. the other nine items are false
3. score = 1; dast_band low


### Four problem-direction answers

Given: `able_to_stop=true, abuse_more_than_one=true, blackouts_flashbacks=true, feel_bad_guilty=true, illegal_activities=false, medical_problems=false, neglected_family=false, others_complain=false, used_drugs_nonmedical=true, withdrawal=false`

1. used_drugs_nonmedical, abuse_more_than_one, blackouts_flashbacks, and feel_bad_guilty true
2. able_to_stop true (not scored)
3. score = 4; dast_band moderate


### Nine forward items true

Given: `able_to_stop=true, abuse_more_than_one=true, blackouts_flashbacks=true, feel_bad_guilty=true, illegal_activities=true, medical_problems=true, neglected_family=true, others_complain=true, used_drugs_nonmedical=true, withdrawal=true`

1. nine forward items true; able_to_stop true (not scored)
2. score = 9; dast_band severe


## Also searched as

- DAST-10
- Drug Abuse Screening Test
- DAST 10
- Skinner DAST
- 10-item DAST
- drug abuse screening test 10
- DAST score

## Parameters

- `used_drugs_nonmedical` (boolean, required): Have you used drugs other than those required for medical reasons? (Skinner 1982 DAST-10 item 1; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `abuse_more_than_one` (boolean, required): Do you abuse more than one drug at a time? (Skinner 1982 DAST-10 item 2; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `able_to_stop` (boolean, required): Are you always able to stop using drugs when you want to? (Skinner 1982 DAST-10 item 3; past 12 months). true or false as assigned by the caller. false is the problem-direction answer and scores 1 (reverse-scored). magent does not interpret the item.
- `blackouts_flashbacks` (boolean, required): Have you had blackouts or flashbacks as a result of drug use? (Skinner 1982 DAST-10 item 4; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `feel_bad_guilty` (boolean, required): Do you ever feel bad or guilty about your drug use? (Skinner 1982 DAST-10 item 5; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `others_complain` (boolean, required): Does your spouse (or parents) ever complain about your involvement with drugs? (Skinner 1982 DAST-10 item 6; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `neglected_family` (boolean, required): Have you neglected your family because of your use of drugs? (Skinner 1982 DAST-10 item 7; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `illegal_activities` (boolean, required): Have you engaged in illegal activities in order to obtain drugs? (Skinner 1982 DAST-10 item 8; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `withdrawal` (boolean, required): Have you ever experienced withdrawal symptoms (felt sick) when you stopped taking drugs? (Skinner 1982 DAST-10 item 9; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.
- `medical_problems` (boolean, required): Have you had medical problems as a result of your drug use (e.g., memory loss, hepatitis, convulsions, bleeding)? (Skinner 1982 DAST-10 item 10; past 12 months). true or false as assigned by the caller. true is the problem-direction answer and scores 1. magent does not interpret the item.

## Bulk (POST)

POST the same path with a JSON items array. The first item is the GET unit; each additional item is $0.002. Invalid items return HTTP 400 before settlement.

Method: `POST /api/calc/dast_10`
Max items: 25
Price: unit_amount + extra_item_amount * (n - 1) (unit 5000 atomic, extra 2000 atomic)
Status: PREVIEW

- 1 to 25 items. Each item uses the same keys as the GET query parameters.
- POST of 1 item costs the same as GET. Lists longer than 25: chunk into multiple POSTs. Extra items still execute; do not pad dummy rows.
- The first invalid item fails the whole request (index in the 400 JSON). You are not charged.
- HTTP 200 is {count, path, items}. Each items[i] is the GET 200 body for that row.
- Catalog misses (empty matches, found=false) stay paid 200s inside that slot.
- x402 resource URL is this path plus n and body_sha256. Browsers that prefer text/html get the same paywall as GET; Pay retries POST with the same items.

Example request:

```json
{
  "items": [
    {
      "able_to_stop": "true",
      "abuse_more_than_one": "false",
      "blackouts_flashbacks": "false",
      "feel_bad_guilty": "false",
      "illegal_activities": "false",
      "medical_problems": "false",
      "neglected_family": "false",
      "others_complain": "false",
      "used_drugs_nonmedical": "false",
      "withdrawal": "false"
    },
    {
      "able_to_stop": "true",
      "abuse_more_than_one": "false",
      "blackouts_flashbacks": "false",
      "feel_bad_guilty": "false",
      "illegal_activities": "false",
      "medical_problems": "false",
      "neglected_family": "false",
      "others_complain": "false",
      "used_drugs_nonmedical": "false",
      "withdrawal": "false"
    }
  ]
}
```

Human paywall (two-item fixture): https://api.magentlab.com/paywall/bulk/dast-10

Example 200:

```json
{
  "count": 2,
  "path": "/api/calc/dast_10",
  "items": [
    {
      "components": [
        {
          "factor": "used_drugs_nonmedical",
          "points": 0,
          "present": false
        },
        {
          "factor": "abuse_more_than_one",
          "points": 0,
          "present": false
        },
        {
          "factor": "able_to_stop",
          "points": 0,
          "present": false
        },
        {
          "factor": "blackouts_flashbacks",
          "points": 0,
          "present": false
        },
        {
          "factor": "feel_bad_guilty",
          "points": 0,
          "present": false
        },
        {
          "factor": "others_complain",
          "points": 0,
          "present": false
        },
        {
          "factor": "neglected_family",
          "points": 0,
          "present": false
        },
        {
          "factor": "illegal_activities",
          "points": 0,
          "present": false
        },
        {
          "factor": "withdrawal",
          "points": 0,
          "present": false
        },
        {
          "factor": "medical_problems",
          "points": 0,
          "present": false
        }
      ],
      "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
      "citation": {
        "authors": "Skinner HA",
        "doi": "10.1016/0306-4603(82)90005-3",
        "id": "skinner-1982",
        "source": "Addict Behav. 1982;7(4):363-371",
        "title": "The drug abuse screening test"
      },
      "formula": "dast_10",
      "formula_expression": "DAST-10 = used_drugs_nonmedical + abuse_more_than_one + (1 if not able_to_stop) + blackouts_flashbacks + feel_bad_guilty + others_complain + neglected_family + illegal_activities + withdrawal + medical_problems; each 1 in the Skinner 1982 problem direction; max 10",
      "max_score": 10,
      "score": 0,
      "dast_band": "no_problems"
    },
    {
      "components": [
        {
          "factor": "used_drugs_nonmedical",
          "points": 0,
          "present": false
        },
        {
          "factor": "abuse_more_than_one",
          "points": 0,
          "present": false
        },
        {
          "factor": "able_to_stop",
          "points": 0,
          "present": false
        },
        {
          "factor": "blackouts_flashbacks",
          "points": 0,
          "present": false
        },
        {
          "factor": "feel_bad_guilty",
          "points": 0,
          "present": false
        },
        {
          "factor": "others_complain",
          "points": 0,
          "present": false
        },
        {
          "factor": "neglected_family",
          "points": 0,
          "present": false
        },
        {
          "factor": "illegal_activities",
          "points": 0,
          "present": false
        },
        {
          "factor": "withdrawal",
          "points": 0,
          "present": false
        },
        {
          "factor": "medical_problems",
          "points": 0,
          "present": false
        }
      ],
      "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
      "citation": {
        "authors": "Skinner HA",
        "doi": "10.1016/0306-4603(82)90005-3",
        "id": "skinner-1982",
        "source": "Addict Behav. 1982;7(4):363-371",
        "title": "The drug abuse screening test"
      },
      "formula": "dast_10",
      "formula_expression": "DAST-10 = used_drugs_nonmedical + abuse_more_than_one + (1 if not able_to_stop) + blackouts_flashbacks + feel_bad_guilty + others_complain + neglected_family + illegal_activities + withdrawal + medical_problems; each 1 in the Skinner 1982 problem direction; max 10",
      "max_score": 10,
      "score": 0,
      "dast_band": "no_problems"
    }
  ]
}
```

## Response fields

- `formula` (string): dast_10
- `formula_expression` (string): Exact expression used
- `score` (integer): DAST-10 points 0-10. Count of Skinner 1982 problem-direction answers, not a raw yes count.
- `max_score` (integer): 10
- `dast_band` (string): Skinner 1982 DAST-10 degree of problems: no_problems (0), low (1-2), moderate (3-5), substantial (6-8), or severe (9-10). Not a diagnosis.
- `components` (array): Per-item points. present is true when the answer is in the problem direction.
- `citation` (object): Skinner Addict Behav 1982 citation
- `disclaimer` (string): Not-a-device notice

## Example JSON

Frozen fixture. Not a live lookup.

```json
{
  "components": [
    {
      "factor": "used_drugs_nonmedical",
      "points": 0,
      "present": false
    },
    {
      "factor": "abuse_more_than_one",
      "points": 0,
      "present": false
    },
    {
      "factor": "able_to_stop",
      "points": 0,
      "present": false
    },
    {
      "factor": "blackouts_flashbacks",
      "points": 0,
      "present": false
    },
    {
      "factor": "feel_bad_guilty",
      "points": 0,
      "present": false
    },
    {
      "factor": "others_complain",
      "points": 0,
      "present": false
    },
    {
      "factor": "neglected_family",
      "points": 0,
      "present": false
    },
    {
      "factor": "illegal_activities",
      "points": 0,
      "present": false
    },
    {
      "factor": "withdrawal",
      "points": 0,
      "present": false
    },
    {
      "factor": "medical_problems",
      "points": 0,
      "present": false
    }
  ],
  "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
  "citation": {
    "authors": "Skinner HA",
    "doi": "10.1016/0306-4603(82)90005-3",
    "id": "skinner-1982",
    "source": "Addict Behav. 1982;7(4):363-371",
    "title": "The drug abuse screening test"
  },
  "formula": "dast_10",
  "formula_expression": "DAST-10 = used_drugs_nonmedical + abuse_more_than_one + (1 if not able_to_stop) + blackouts_flashbacks + feel_bad_guilty + others_complain + neglected_family + illegal_activities + withdrawal + medical_problems; each 1 in the Skinner 1982 problem direction; max 10",
  "max_score": 10,
  "score": 0,
  "dast_band": "no_problems"
}
```

## Errors

- HTTP 400 `invalid_dast_item`: each DAST-10 item must be true or false (Skinner 1982; item able_to_stop is reverse-scored). Returned before settlement; you are not charged.
- HTTP 400 `invalid_items`: POST body must be a JSON object with only an items array Returned before settlement; you are not charged.
- HTTP 400 `invalid_item_count`: items must be an array of 1 to 25 objects Returned before settlement; you are not charged.
- HTTP 400 `invalid_item`: each items entry must be a JSON object Returned before settlement; you are not charged.

Shared HTTP 402 and 503: https://magentlab.com/docs/payments

## Related tools

- [CAGE](https://magentlab.com/docs/cage) — Sum the four Ewing 1984 CAGE items and return whether two or more answers are affirmative.
- [AUDIT-C](https://magentlab.com/docs/audit-c) — Sum three caller-assigned Bush 1998 AUDIT-C integers (0-4) and return this paper's ≥3 and ≥4 screens.
- [SMAST](https://magentlab.com/docs/smast) — Count Selzer 1975 SMAST alcoholic-direction answers and return the published 0-1 nonalcoholic, 2 possible, and ≥3 alcoholic bands.

## Payment

Unpaid requests return HTTP 402 even if query parameters or POST items are missing or invalid, so CDP and agents can index the path. After a PAYMENT-SIGNATURE, invalid params return HTTP 400 JSON before settlement. magent does not charge. Fix the params, then request a new 402 quote for that complete URL. Catalog misses (empty matches, found=false) are valid paid 200s.

- GET the tool with Accept: application/json (do not send Accept: text/html unless you want the human paywall).
- HTTP 402 means you have not paid. Decode the base64 PAYMENT-REQUIRED header. HTTP 503 is not a new quote.
- Sign accepts[0] (exact, EIP-3009) with validBefore = now + maxTimeoutSeconds (600 seconds), or accepts[1] (batch-settlement deposit/voucher) on product GET. Ping and POST {items} stay exact. Magent retries transient facilitator 429/5xx before answering.
- Retry the same URL with PAYMENT-SIGNATURE (base64 JSON of accepted and payload). Magent attaches canonical extensions.bazaar on CDP verify/settle; echoing 402 bazaar is optional.
- Success is HTTP 200 JSON plus PAYMENT-RESPONSE. exact settles before the tool. batch-settlement verifies (and deposit-settles) before the tool and commits the charge after HTTP 2xx. HTTP 503: retry the same PAYMENT-SIGNATURE. Mint a new exact nonce only after a new HTTP 402.

- offered `exact` on eip155:8453: Fixed-price USDC on Base. The buyer authorizes the advertised amount (EIP-3009). magent settles before the tool runs (paymentFlow upfront). extra.assetTransferMethod=eip3009 extra.paymentFlow=upfront.
- offered `batch-settlement` on eip155:8453: Payment-channel vouchers claimed later in batches. Exact stays accepts[0]. Same-path POST {items} is still exact. extra.assetTransferMethod=eip3009 extra.paymentFlow=authorization.

- not offered `upto`: Not offered. Usage-based: buyer authorizes a ceiling, seller settles the actual amount after work. Reserved for a future metered tool. Not for current calculators or code search.

Same-path POST {items} is still scheme exact: one EIP-3009 authorization for GET unit plus $0.002 per extra item. That is not x402 batch-settlement (payment channels / vouchers).

Shared HTTP 402 and 503 table: https://magentlab.com/docs/payments

Stdio MCP (one process per host): https://magentlab.com/docs/mcp

## Guarantees

- HTTP 402 is unpaid, including a missing query. After PAYMENT-SIGNATURE, invalid parameters return HTTP 400 before settlement. You are not charged. HTTP 402 never includes the tool JSON.
- exact: settlement finishes before the tool (paymentFlow upfront). batch-settlement: verify/deposit before the tool; chargedCumulativeAmount commits after HTTP 2xx. Uncertain or failed settlement fails closed (HTTP 503). Retry the same PAYMENT-SIGNATURE.
- HTTP 402 is unpaid only. Do not sign a second authorization because of a 503.
- Execution is timeout-bounded and concurrency-capped.
- Calculator inputs are stored encrypted for allowlisted operators (Magent Console). They are not in public logs, SSH lookups, catalog, or rollups. Request logs store path without query.
