Skip to main content
Glama
MohamedXAdel

fortyguard-mcp

by MohamedXAdel

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FORTYGUARD_API_KEYYesRequired. Never logged or written to disk by this server.
FORTYGUARD_BASE_URLNoAPI endpoint. Must be https unless it is loopback.https://api.fortyguard.com
FORTYGUARD_DATA_DIRNoWhere results and reports are stored.
FORTYGUARD_ENV_FILENoPath to an environment file to load, as an explicit opt-in.
FORTYGUARD_LOG_LEVELNoDiagnostics to stderr as JSON lines, credentials redacted.INFO
FORTYGUARD_POLL_TIMEOUT_SNoCeiling on any single wait.600
FORTYGUARD_REPORT_MAX_BYTESNoCeiling on what one download may write to disk.104857600
FORTYGUARD_REPORT_TIMEOUT_SNoCeiling on a report download.120
FORTYGUARD_MAX_STORAGE_BYTESNoOptional archive cap for CI/containers.
FORTYGUARD_INLINE_TOKEN_BUDGETNoAbove this, format="auto" summarises rather than inlines.25000
FORTYGUARD_COORDINATE_PRECISIONNoDecimal places in compact encoding (~1 m).5
FORTYGUARD_REPORT_ALLOW_PRIVATE_HOSTSNoAllow report downloads from private/loopback addresses. Only for self-hosted storage.false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_credit_usageA

Your account's plan, credit balance, and per-endpoint usage breakdown, straight from the API. This is the authority on what your key can do - area limits and endpoint access vary by plan and are not assumed anywhere in this server.

get_storage_infoA

What this server has archived on local disk: how many results, broken down by endpoint, how much space they take, any report files downloaded from signed URLs, and where all of it lives. Nothing is ever deleted automatically - stored results cost money and never go stale, so the directory is yours to manage.

validate_aoiA

Measure a GeoJSON area of interest locally: geodesic area in km2 and square miles, bounding box, edge lengths, ring closure, and whether the coordinates look transposed. Costs nothing and makes no API call. It reports only - no size limit is applied, because limits vary by plan.

split_aoiA

Cut an area of interest into a grid of smaller areas, each at or under a maximum size you specify. Use it when the API rejects an area as too large. There is no default maximum: the cap depends on your plan, so take it from your contract or from the API's own rejection message. Local computation, no credits.

submit_heatmapA

Submit a temperature heatmap over an area and return immediately with an activity_id, without waiting for it to finish. Use this when you have other work to do, or for a large area. Collect it with check_status. If this exact request was run before, the stored result comes back straight away instead of an activity_id, marked from_archive, and costs nothing. filter_type: 1 = single hour (start_date + start_time); 2 = range of hours, same day (start_date + start_time + end_time); 3 = single day (start_date only); 4 = range of days (start_date + end_date). granularity is the tile edge in metres (60, 80, 100); omit it to let the API choose. analytic_type is optional (tcm, time_of_measure, exceedance, persistence); omit it for plain temperature. start_time is interpreted as local time at the area of interest, not UTC.

create_heatmapA

Run a temperature heatmap and wait for the result inline. Measured heatmaps take 21-38 seconds. If the wait runs out you get the activity_id back and nothing is lost - the job keeps running and check_status collects it. An identical earlier request is served from the local archive for free. filter_type: 1 = single hour (start_date + start_time); 2 = range of hours, same day (start_date + start_time + end_time); 3 = single day (start_date only); 4 = range of days (start_date + end_date). granularity is the tile edge in metres (60, 80, 100); omit it to let the API choose. analytic_type is optional (tcm, time_of_measure, exceedance, persistence); omit it for plain temperature. start_time is interpreted as local time at the area of interest, not UTC.

get_env_paramsA

Environmental parameters at a single point - humidity, heat index, wet bulb, air quality and more. Requires a temperature, which must match the heatmap for the same place and time. Supply it either as temperature=, or as from_activity_id= naming a completed heatmap covering this point, which also supplies the matching date. Give one or the other, not both. Narrow the response with analysis=, or omit it to receive every parameter.

submit_satelliteA

Submit satellite land-cover segmentation for a point and return an activity_id. Collect it with check_status.

submit_streetviewA

Submit street-view scene analysis for a point and return an activity_id. Collect it with check_status.

submit_heat_intelligenceA

Submit a heat intelligence report for a point and return an activity_id. This one is slow - measured at about 395 seconds - so it is never waited on inline. Collect it with check_status, which downloads the PDF to local disk and returns its path under 'report'; the API delivers this analysis as a short-lived signed URL, which is never returned or stored. Needs a temperature: give temperature= or from_activity_id=, not both. analysis is required - pass all five categories for a complete report.

check_statusA

Check on a submitted analysis, or wait for it. If it has finished, the result comes back and is archived locally. Polling is free and the job runs whether or not you poll. Once collected, calling this again is served from disk at no cost.

get_result_sliceA

Read part or all of an already-collected result from local disk. Costs nothing and makes no API call, so use it freely: take the hottest tiles with top_n, a sub-area with bbox, a downsample with every_nth, the whole thing compactly with format='columnar', or the untouched payload with format='geojson'. Naming a format gets you all of it at whatever size it comes to; the context budget applies only to the default format='auto'. Statistics for both the slice and the full result are always reported, so a slice maximum is never mistaken for the real one.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Account usageThis API key's plan, credit balance and endpoint breakdown.
Local archiveWhat this server has stored on disk and what it cost.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MohamedXAdel/fortyguard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server