# Startpoints

A startpoint is the on-chain interface for your contract to call your midpoint. All calls to a midpoint begin with a call to `callMidpoint()` at the startpoint contract for a given chain.

<table><thead><tr><th width="188">Midpoint Chain ID</th><th width="269">Chain</th><th>Startpoint Address</th></tr></thead><tbody><tr><td>1</td><td>Ethereum</td><td>0x8343b2CBE03748f8170b977BD8e1e85098D81B05</td></tr><tr><td>5</td><td>Goerli Testnet</td><td>0x9BEa2A4C2d84334287D60D6c36Ab45CB453821eB</td></tr><tr><td>10</td><td>Optimism</td><td>0x0cabEDbDB07C2AFc7D840cF34A2A7CC46DA446BD</td></tr><tr><td>137</td><td>Polygon</td><td>0x80Ab1b74Fc8E57aE586854A876692D9088e78483</td></tr><tr><td>420</td><td>Optimism Goerli Testnet</td><td>0xa89c2f3A20cED98cd39AFd0Ab5B207C46Fb2Cdf3</td></tr><tr><td>3141</td><td>Filecoin Hyperspace Testnet</td><td>0x0705c34AA032354A7966776098E0c12cc5539Bc8</td></tr><tr><td>42161</td><td>Arbitrum One</td><td>0x0cabEDbDB07C2AFc7D840cF34A2A7CC46DA446BD</td></tr><tr><td>80001</td><td>Polygon Mumbai Testnet</td><td>0x47a4905D4C2Eabd58abBDFEcBaeB07F1A29b660c</td></tr><tr><td>421613</td><td>Arbitrum Goerli Testnet</td><td>0x1063051eFe824703E1cf36206A8FA361545E9b54</td></tr></tbody></table>

```solidity
event callOracleEvent(uint64 _midpointId, uint256 _requestId, address _contract);
event callOracleEventData(uint64 _midpointId, bytes _data, uint256 _requestId, address _contract);

uint256 private rollingRequestId;

constructor() {
    rollingRequestId = 0;
}

function callMidpoint(uint64 _id) public returns (uint256 requestId) {
    rollingRequestId = rollingRequestId + 1;
    emit callOracleEvent(_id, rollingRequestId, msg.sender);
    return rollingRequestId;
}

function callMidpoint(uint64 _id, bytes calldata _data) public returns (uint256 requestId) {
    rollingRequestId = rollingRequestId + 1;
    emit callOracleEventData(_id, _data, rollingRequestId, msg.sender);
    return rollingRequestId;
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.midpointapi.com/midpoint-documentation/more-reading/startpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
