> For the complete documentation index, see [llms.txt](https://docs.midpointapi.com/midpoint-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.midpointapi.com/midpoint-documentation/more-reading/startpoints.md).

# 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
