Summary: Download our skill file to teach Claude Code, GitHub Copilot, Cursor, and other AI coding assistants how to integrate the Houski API. The skill follows the Agent Skills open standard, so it works across multiple tools without modification.
Model Context Protocol (MCP) Server vs Skill: Which Do You Need?
| Skill | MCP Server | |
|---|---|---|
| Purpose | AI helps you write code that calls our API | AI queries our database directly for you |
| Use when | Building an app that needs property data | Researching properties or analyzing markets |
| Output | Code you can deploy | Answers and data in the conversation |
| Setup | Add a file to your project | Configure Claude's MCP settings |
Use both together: MCP for research and prototyping, the skill when you're ready to build.
- Download the Skill (this page)
- Set up MCP Server
What's a Skill?
AI coding assistants write code well but don't know every API's specifics. A skill is a small instruction file that teaches them.
Without a skill, you'd explain it yourself: "Use the /properties endpoint with bedroom_gte=3 and property_type_eq=House, and add select= to reduce costs..."
With our skill, just say "Add property search to my app" and your AI knows how to use our API, including cost optimization.
Works Across Multiple Tools
Our skill follows the Agent Skills standard, supported by:
- Claude Code - Drop the skill folder into .claude/skills/ at your project root
- GitHub Copilot - Copy the contents into .github/copilot-instructions.md
- Cursor - Drop the skill folder into .cursor/rules/ at your project root
- Gemini CLI - Add to project root
- OpenAI Codex CLI - Add to project root
Write once, use everywhere. No modifications needed.
What's Included
The skill teaches your AI assistant:
All 9 Endpoints
| Endpoint | Purpose |
|---|---|
| /properties | Query 19M+ properties with filtering, sorting, and field selection |
| /search | Fuzzy address lookup (handles typos and partial addresses) |
| /aggregate | Statistics: median, mean, count, min, max, quantiles |
| /map | Pins, clusters, and heatmaps for map displays |
| /geocoding | Find properties near coordinates with radius search |
| /predict | Historical and projected property values over time |
| /location | List provinces, cities, and communities hierarchically |
| /avm | Automated valuations with comparables ($5/request) |
| /auth | Validate API keys (does not bill per call) |
Filter Operators
Your AI knows the filter syntax:
| Operator | Meaning | Example |
|---|---|---|
| _eq | equals | property_type_eq=House |
| _neq | not equals | property_type_neq=Apartment |
| _gte | >= | bedroom_gte=3 |
| _lte | <= | estimate_list_price_lte=500000 |
| _gt | > | interior_sq_m_gt=100 |
| _lt | < | construction_year_lt=2000 |
| _in | in list | community_in=Kensington,Beltline |
| _regex | regex match | address_regex=^123 |
200+ Fields
Organized into categories your AI understands:
- Physical: bedrooms, bathrooms, square footage, construction year, property type, storeys
- Financial: estimated prices, estimated property taxes (mill rate times assessed value), assessment values, cap rates, return on investment (ROI)
- Location: coordinates, postal codes, city, community, province
- Scores: walkability, transit, flood safety, fire safety, air quality, education, safety (all higher is better)
- Demographics: income levels, age distributions, household types, employment industries
Advanced Features
Expand syntax for related data:
expand=permits expand=listings expand=listings_rent expand=assessments
Map modes:
- Pins for individual properties
- Clusters for zoomed-out views
- Heatmaps with density or value-based coloring
- Polygon and bounding box queries
Predict scenarios: Override property characteristics to see how changes affect values, useful for renovation or investment modeling.
Batch aggregates: Query multiple statistics in a single request using agg0_, agg1_ prefixes.
Cost Optimization
The skill teaches your AI to:
- Use select= to return only needed fields
- Use price_quote=true to estimate costs
- Filter early to reduce result sets
- Paginate with results_per_page and page
Getting Started
1. Get an API Key
Get your API key, or grab an existing one from your dashboard. Pricing: $99/month minimum for pay-as-you-go, charged on data returned. Full pricing
2. Download the Skill
3. Install
Unzip and add SKILL.md to your project:
Claude Code: Per Anthropic's Claude Code documentation, drop the unzipped skill folder into .claude/skills/ at your project root (each skill lives at .claude/skills/
GitHub Copilot: Copy contents into .github/copilot-instructions.md.
Cursor: Drop the skill folder into .cursor/rules/ at your project root.
Other AI Assistants: Most Agent Skills tools pick up instruction files in your project root.
4. Use It
Describe what you want to build.
Example Prompts by Use Case
Property Search Features
"Add a property search page with filters for bedrooms, price, and type. Include pagination."
"Build an autocomplete search box using fuzzy matching."
"Create a property detail page showing full info including scores and demographics."
Market Analysis
"Query median home prices by neighbourhood in Calgary as a bar chart."
"Get aggregate stats for houses vs condos: median price, average bedrooms, count."
"Compare cap rates between communities to find investment opportunities."
Maps and Visualization
"Display properties on a map within a bounding box. Cluster when zoomed out."
"Build a heatmap of median property prices."
"Find properties within 2km of these coordinates, sorted by price."
Permits and Development
"Find Toronto properties with renovation permits in the last 2 years."
"Show properties where permits mention 'basement development' or 'garage'."
"Build a permit search page filtered by date and type."
Investment Analysis
"Calculate ROI metrics: cap rate, cash-on-cash return, price per square meter."
"Find undervalued properties where list price is below estimated value."
"Show properties with low flood or fire safety scores."
Historical and Predicted Values
"Get the price history for this property over 2 years."
"Show projected rent for the next 6 months."
"Model how adding a bedroom would affect this property's value."
Understanding API Responses
All endpoints return:
{
"data": [...],
"error": "",
"time_ms": 45,
"cost_cents": 0.5,
"cache_hit": false,
"pagination": {
"current_page": 1,
"has_next_page": true,
"page_total": 10
}
}
- cache_hit - Served from cache
- cost_cents - Request cost
- time_ms - Server processing time
- pagination - For paginated results
Cost Optimization Tips
The API charges on data returned. Your AI knows these techniques:
1. Always Use select=
Specify only needed fields, not all 200+:
select=address,bedroom,bathroom_full,estimate_list_price
2. Use price_quote=true
Get the cost before executing. The block below is a live call against the real API, the request code and the JSON response are regenerated every time this page is rendered:
const houski_data = async (): Promise<PropertiesResponse> => {
// You must copy the PropertiesResponse type declarations from the
// Houski API documentation to strongly type the response
const url = new URL('https://api.houski.ca/properties');
url.searchParams.set('api_key', 'YOUR_API_KEY');
url.searchParams.set('city', 'calgary');
url.searchParams.set('country_abbreviation', 'ca');
url.searchParams.set('price_quote', 'true');
url.searchParams.set('province_abbreviation', 'ab');
const response = await fetch(url);
const data = await response.json();
return data;
}
(async () => {
let data: PropertiesResponse = await houski_data();
// Log the response
console.log(data);
})();
{
"cache_hit": false,
"cost_cents": 0.119999997317791,
"data": [
{}
],
"error": "",
"pagination": {
"current_page": 1,
"has_next_page": true,
"has_previous_page": false,
"page_total": 113490
},
"price_quote": true,
"result_total": 680936,
"time_ms": 98,
"ui_info": {}
}
Returns cost in cents without charging.
3. Paginate
Use results_per_page (max 1000) and page to fetch in chunks.
4. Filter Early
Reduce the result set before return:
bedroom_gte=3&estimate_list_price_lte=500000
5. Batch Aggregates
Multiple statistics in one request:
agg0_field=estimate_list_price&agg0_aggregation=median&agg1_field=bedroom&agg1_aggregation=mean
Troubleshooting
"My AI doesn't know the Houski API"
- Verify SKILL.md is in your project root
- For Claude Code, name it SKILL.md or include in CLAUDE.md
- Mention "Houski" explicitly in your prompt
"Generated code uses wrong endpoints"
- Skill file may not be loaded. Check location and naming.
- Try: "Use the Houski API skill to..."
"API returns errors"
- Verify your key at your dashboard
- Include country_abbreviation=ca for Canadian data
- Filter syntax: field_operator=value
"Costs are higher than expected"
- Add select= to limit fields
- Use price_quote=true to preview costs
- Check usage at your dashboard
Customizing the Skill
The skill file starts with a plain-text configuration header, written as YAML frontmatter:
--- name: houski-api description: Integrate the Houski property database API... ---
Modify the description or add project conventions to the instructions section.
Resources: API Documentation | Quick Start Guide | Pricing | Contact
