> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oneshotagent.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Compound Properties

> Give the computed molecular descriptors of a chemical compound by its compound identifier (CID) or InChIKey.

Give the computed molecular descriptors of a chemical compound by its compound identifier (CID) or its InChIKey: the IUPAC name, molecular formula, InChIKey, molecular weight in g/mol, exact mass in Da, XLogP, topological polar surface area in square angstroms, the counts of hydrogen bond donors and acceptors, rotatable bonds and heavy atoms, the formal charge and the complexity score, with a link to the compound page. These are values the source computes from the structure, not measurements. Use it to characterise a compound in a literature review, a screening library or a regulatory file. Give exactly one of `cid` and `inchikey`. `compound` is null when the source knows no compound with that identifier. Synonyms, depositor records, and any synthesis or preparation data are not returned.

## Authentication

Requires x402 payment in the `payment-signature` header.

## Request Body

<ParamField body="cid" type="integer">
  The compound identifier (CID), for example 2244. From 1 to 999999999.
</ParamField>

<ParamField body="inchikey" type="string">
  The standard InChIKey of the compound, for example BSYNRYMUTXBXSQ-UHFFFAOYSA-N. Exactly 27 characters. An InChIKey is 14 capitals, a hyphen, 10 capitals, a hyphen and one capital.
</ParamField>

<Snippet file="audit-context-params.mdx" />

## Response (200 OK)

Top-level envelope: `success` (boolean) and `data` (object). All fields below are nested under `data`.

<ResponseField name="data.request_id" type="string">
  Durable job ID for audit and lookup
</ResponseField>

<ResponseField name="data.status" type="string">
  Job status: `completed`
</ResponseField>

<ResponseField name="data.tool" type="string">
  Always `compound_properties`
</ResponseField>

<ResponseField name="data.result" type="object">
  The answer, described under Result below
</ResponseField>

<ResponseField name="data.evidence" type="object">
  Where the answer came from and when
</ResponseField>

<ResponseField name="data.evidence.source" type="string">
  The public body the data comes from. Always `US National Center for Biotechnology Information (PubChem)`.
</ResponseField>

<ResponseField name="data.evidence.source_kind" type="string">
  `public` when the data comes from a public body, `commercial` otherwise
</ResponseField>

<ResponseField name="data.evidence.retrieved_at" type="string">
  When the lookup was made, as an ISO 8601 UTC time
</ResponseField>

<ResponseField name="data.evidence.as_of" type="string">
  When the source says the fact was last updated, or `null` when the source gives no date
</ResponseField>

## Result

Nested under `data.result`.

<ResponseField name="data.result.compound" type="object">
  The computed descriptors, or null when the source knows no compound with that identifier.
</ResponseField>

<ResponseField name="data.result.compound.cid" type="number">
  The compound identifier (CID).
</ResponseField>

<ResponseField name="data.result.compound.iupac_name" type="string">
  The IUPAC name the source computed. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.molecular_formula" type="string">
  The molecular formula, for example C9H8O4. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.inchikey" type="string">
  The standard InChIKey. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.molecular_weight" type="number">
  Molecular weight in g/mol. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.exact_mass" type="number">
  Exact (monoisotopic) mass in Da. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.xlogp" type="number">
  Computed octanol-water partition coefficient (XLogP). `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.tpsa" type="number">
  Topological polar surface area in square angstroms. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.hbond_donors" type="number">
  Number of hydrogen bond donors. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.hbond_acceptors" type="number">
  Number of hydrogen bond acceptors. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.rotatable_bonds" type="number">
  Number of rotatable bonds. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.heavy_atoms" type="number">
  Number of non-hydrogen atoms. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.formal_charge" type="number">
  Formal charge of the structure. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.complexity" type="number">
  The source's structural complexity score. `null` when the source gives no value.
</ResponseField>

<ResponseField name="data.result.compound.page_url" type="string">
  The compound page at the source.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST https://win.oneshotagent.com/v1/tools/lookup/compound-properties \
    -H "Content-Type: application/json" \
    -H "payment-signature: <base64 x402 payment>" \
    -d '{
      "cid": 2244
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch("https://win.oneshotagent.com/v1/tools/lookup/compound-properties", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      "payment-signature": paymentProof,
    },
    body: JSON.stringify({
      "cid": 2244
    }),
  });
  ```

  ```typescript SDK theme={null}
  const result = await agent.tool('lookup/compound-properties', {
    cid: 2244
  });
  console.log(result.data.result);
  console.log(result.data.evidence);
  ```
</RequestExample>

<ResponseExample>
  ```json Response (200) theme={null}
  {
    "success": true,
    "data": {
      "request_id": "uuid",
      "receipt_id": "rcpt_...",
      "status": "completed",
      "tool": "compound_properties",
      "result": {
        "compound": {
          "cid": 2244,
          "iupac_name": "2-acetyloxybenzoic acid",
          "molecular_formula": "C9H8O4",
          "inchikey": "BSYNRYMUTXBXSQ-UHFFFAOYSA-N",
          "molecular_weight": 180.16,
          "exact_mass": 180.04225873,
          "xlogp": 1.2,
          "tpsa": 63.6,
          "hbond_donors": 1,
          "hbond_acceptors": 4,
          "rotatable_bonds": 3,
          "heavy_atoms": 13,
          "formal_charge": 0,
          "complexity": 212,
          "page_url": "https://pubchem.ncbi.nlm.nih.gov/compound/2244"
        }
      },
      "evidence": {
        "source": "US National Center for Biotechnology Information (PubChem)",
        "source_kind": "public",
        "retrieved_at": "2026-10-16T12:00:00.000Z",
        "calls": [
          {
            "retrieved_at": "2026-10-16T12:00:00.000Z"
          }
        ],
        "as_of": null
      }
    }
  }
  ```
</ResponseExample>

<Info>See [Pricing](/pricing) for this tool's price. A wallet (x402) call receives it in the 402 quote before anything is charged; a call paid from prepaid credits is charged when the API accepts the request and answers `200`.</Info>

## Notes

* Results return inline. The finished job stays available at `/v1/requests/{request_id}`


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.