Geode
REMOTE · MCP.GEODEAPPS.COM
Use the Geode blockchain's apps: marketplace, social, surveys, messaging, DNS and GEODE transfers.
Available components
Last scanned (1 hour ago)
Scores higher than 56% of remote servers
Reachable. Last reached 18 Oct 2026.
Category Crypto and Web3
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (geode_dns_transfer). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability67
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 21504 tokens (~155/item across 138 items; 138 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
- Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage99
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 96% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 22 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 139 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Oct 26 +1
- Stability: unverified → 0.03 ▲ functional
- 17 Oct 26 65
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 18 Oct 2026 · Probed https://mcp.geodeapps.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.geodeapps.com | CN=ZeroSSL RSA DV SSL CA 2,O=ZeroSSL GmbH,C=AT | 21 Sept 2026 | 20 Dec 2026 | RSA 2048 | SHA256-RSA | df97a32d1b10653b3b39c8627719c14 |
| SANs: mcp.geodeapps.com | ||||||
| CN=ZeroSSL RSA DV SSL CA 2,O=ZeroSSL GmbH,C=AT (CA) | CN=Sectigo Public Server Authentication Root R46,O=Sectigo Limited,C=GB | 24 Sept 2025 | 23 Sept 2035 | RSA 3072 | SHA384-RSA | d0a908255f8e50e5f3396d1114702a37 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.geodeapps.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| geodeapps.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'none'; frame-ancestors 'none' |
| x-content-type-options | nosniff |
| referrer-policy | no-referrer |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.geodeapps.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.geodeapps.com/mcp | HTTPS enforced |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
geode_profile_new_profile Profile: new profile ~364
Create your Geode profile (once per account; use update_your_profile afterwards). Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| expertise_and_offerings_tags | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| hide_your_profile_from_search | boolean | yes | – |
| life_and_work_account | string | yes | Geode account address (SS58) |
| marketplace_seller_account | string | yes | Geode account address (SS58) |
| my_bio | string | yes | UTF-8 text, at most 2048 bytes; no control or invisible characters |
| my_location | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| photo_link | string | yes | https:// URL or empty string, at most 512 bytes |
| preferred_display_name | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| private_messaging_account | string | yes | Geode account address (SS58) |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| social_account | string | yes | Geode account address (SS58) |
| website1 | string | yes | https:// URL or empty string, at most 512 bytes |
| website2 | string | yes | https:// URL or empty string, at most 512 bytes |
| website3 | string | yes | https:// URL or empty string, at most 512 bytes |
No output schema declared.
No examples provided.
geode_profile_update_your_profile Profile: update your profile ~355
Update your Geode profile. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| expertise_and_offerings_tags | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| hide_your_profile_from_search | boolean | yes | – |
| life_and_work_account | string | yes | Geode account address (SS58) |
| marketplace_seller_account | string | yes | Geode account address (SS58) |
| my_bio | string | yes | UTF-8 text, at most 2048 bytes; no control or invisible characters |
| my_location | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| photo_link | string | yes | https:// URL or empty string, at most 512 bytes |
| preferred_display_name | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| private_messaging_account | string | yes | Geode account address (SS58) |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| social_account | string | yes | Geode account address (SS58) |
| website1 | string | yes | https:// URL or empty string, at most 512 bytes |
| website2 | string | yes | https:// URL or empty string, at most 512 bytes |
| website3 | string | yes | https:// URL or empty string, at most 512 bytes |
No output schema declared.
No examples provided.
geode_social_block_account Social: block account ~109
Block an account on Geode Social. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| block | string | yes | Geode account address (SS58) |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
No output schema declared.
No examples provided.
geode_social_elevate_message Social: elevate message ~119
Endorse (elevate) a public post. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| this_message_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_social_elevate_paid_message Social: elevate paid message ~136
Endorse a paid post. If your social interests contain its target interests and payouts remain, you receive the per-endorser payment. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| this_message_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_social_follow_account Social: follow account ~109
Follow an account on Geode Social. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| follow | string | yes | Geode account address (SS58) |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
No output schema declared.
No examples provided.
geode_social_get_account_following Social: get account following ~132
List the accounts an account follows on Geode Social. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| limit | integer | – | Items to return (default 50, max 200) |
| offset | integer | – | Items to skip (default 0) |
| user | string | yes | Geode account address (SS58) |
No output schema declared.
No examples provided.
geode_social_get_account_paid_messages Social: get account paid messages ~133
List an account's paid (promoted) Social posts. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| limit | integer | – | Items to return (default 50, max 200) |
| offset | integer | – | Items to skip (default 0) |
| user | string | yes | Geode account address (SS58) |
No output schema declared.
No examples provided.
geode_social_get_account_profile Social: get account profile ~86
Get an account's Social profile: username, followers, who it follows, and its posts. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| user | string | yes | Geode account address (SS58) |
No output schema declared.
No examples provided.
geode_social_get_details_for_message Social: get details for message ~80
Get full details of one Social post. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| message_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_social_get_details_for_paid_message Social: get details for paid message ~90
Get full details of one paid Social post, including endorsers and staked amounts. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| message_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_social_get_paid_feed Social: get paid feed ~96
Get `caller`'s paid (promoted) Social feed, optionally filtered by a keyword. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| keyword | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
No output schema declared.
No examples provided.
geode_social_get_public_feed Social: get public feed ~70
Get `caller`'s Geode Social feed (posts from accounts it follows). Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
No output schema declared.
No examples provided.
geode_social_get_replies_for_message Social: get replies for message ~134
List the replies to a Social post. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| limit | integer | – | Items to return (default 50, max 200) |
| message_id | string | yes | 0x-prefixed 32-byte hex id |
| offset | integer | – | Items to skip (default 0) |
No output schema declared.
No examples provided.
geode_social_send_message_public Social: send message public ~167
Post a public message on Geode Social. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| new_message | string | yes | UTF-8 text, at most 2048 bytes; no control or invisible characters |
| photo_or_youtube_link | string | yes | https:// URL or empty string, at most 512 bytes |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| website_or_document_link | string | yes | https:// URL or empty string, at most 512 bytes |
No output schema declared.
No examples provided.
geode_social_send_paid_message_public Social: send paid message public ~323
Post a promoted (paid) message. `value` funds endorser payouts; set it to maximum_number_of_paid_endorsers × payment_per_endorser. Accounts whose interests contain target_interests are paid when they elevate it. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Token from the first call, to confirm this irreversible action |
| maximum_number_of_paid_endorsers | string | yes | Non-negative integer as a string of digits |
| new_message | string | yes | UTF-8 text, at most 2048 bytes; no control or invisible characters |
| payment_per_endorser | – | yes | Amount in GEODE as a decimal string (e.g. "1.25"), or {"raw": "<planck>"} |
| photo_or_youtube_link | string | yes | https:// URL or empty string, at most 512 bytes |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| target_interests | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| value | – | yes | GEODE to send with this call (explicit; never inferred) |
| website_or_document_link | string | yes | https:// URL or empty string, at most 512 bytes |
No output schema declared.
No examples provided.
geode_social_send_reply_public Social: send reply public ~182
Reply publicly to a post. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| new_message | string | yes | UTF-8 text, at most 2048 bytes; no control or invisible characters |
| photo_or_youtube_link | string | yes | https:// URL or empty string, at most 512 bytes |
| replying_to | string | yes | 0x-prefixed 32-byte hex id |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| website_or_document_link | string | yes | https:// URL or empty string, at most 512 bytes |
No output schema declared.
No examples provided.
geode_social_unblock_account Social: unblock account ~111
Unblock an account on Geode Social. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| unblock | string | yes | Geode account address (SS58) |
No output schema declared.
No examples provided.
geode_social_unfollow_account Social: unfollow account ~108
Stop following an account. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| unfollow | string | yes | Geode account address (SS58) |
No output schema declared.
No examples provided.
geode_social_update_settings Social: update settings ~186
Set your social username, interests, and feed sizes. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| max_messages_in_my_feed | string | yes | Non-negative integer as a string of digits |
| max_messages_in_my_paid_feed | string | yes | Non-negative integer as a string of digits |
| my_interests | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| my_username | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
No output schema declared.
No examples provided.
geode_submit_intent Submit a signed intent ~102
Broadcast a transaction you prepared with a geode_* write tool and signed with geode-local-signer (sign_intent). The server checks the signature against the exact payload it built, then waits for inclusion in a block and returns the result and decoded contract events.
| Name | Type | Req | Description |
|---|---|---|---|
| intent_id | string | yes | intent_id returned by the write tool |
| signature | string | yes | Signature from geode-local-signer sign_intent (0x-prefixed hex) |
No output schema declared.
No examples provided.
geode_surveys_close_my_survey Surveys: close my survey ~191
Close one of your surveys (`length` is 1, 3 or 5); its unspent budget is refunded to you. Fails if the budget is already fully paid out. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent. Irreversible: the first call returns a confirm_token; call again with it to proceed.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Token from the first call, to confirm this irreversible action |
| length | integer | yes | – |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_surveys_get_available_surveys Surveys: get available surveys ~80
List open surveys (1-, 3- and 5-question) with their questions, payout per response and remaining capacity. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
No output schema declared.
No examples provided.
geode_surveys_get_my_surveys Surveys: get my surveys ~63
List the surveys `caller` created. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
No output schema declared.
No examples provided.
geode_surveys_get_survey_by_id Surveys: get survey by id ~160
Look up one survey by its survey_id (from geode_surveys_get_available_surveys, geode_surveys_get_my_surveys or a shared link): its questions, payout per response and remaining capacity. Returns it only while it is open, i.e. funded, payout > 0 and under its response cap; a closed, unfunded or full survey (or an unknown id) comes back as an empty result. Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_surveys_get_survey_responses_1 Surveys: get survey responses 1 ~211
Get responses to one of your 1-question surveys. Only the owner can read them: pass `caller` = the owner. Responses are numbered from 1; returns numbers from..to-1 (at most 100 per call). Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| from_response_number | string | yes | Non-negative integer as a string of digits |
| limit | integer | – | Items to return (default 50, max 200) |
| offset | integer | – | Items to skip (default 0) |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
| to_response_number | string | yes | Non-negative integer as a string of digits |
No output schema declared.
No examples provided.
geode_surveys_get_survey_responses_3 Surveys: get survey responses 3 ~211
Get responses to one of your 3-question surveys. Only the owner can read them: pass `caller` = the owner. Responses are numbered from 1; returns numbers from..to-1 (at most 100 per call). Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| from_response_number | string | yes | Non-negative integer as a string of digits |
| limit | integer | – | Items to return (default 50, max 200) |
| offset | integer | – | Items to skip (default 0) |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
| to_response_number | string | yes | Non-negative integer as a string of digits |
No output schema declared.
No examples provided.
geode_surveys_get_survey_responses_5 Surveys: get survey responses 5 ~211
Get responses to one of your 5-question surveys. Only the owner can read them: pass `caller` = the owner. Responses are numbered from 1; returns numbers from..to-1 (at most 100 per call). Read-only; no signature. Optional `caller`: the account whose view to read (for caller-dependent results). Results are paginated with `offset` and `limit` (default 50, max 200).
| Name | Type | Req | Description |
|---|---|---|---|
| caller | string | – | Optional account address (SS58) to run the query as |
| from_response_number | string | yes | Non-negative integer as a string of digits |
| limit | integer | – | Items to return (default 50, max 200) |
| offset | integer | – | Items to skip (default 0) |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
| to_response_number | string | yes | Non-negative integer as a string of digits |
No output schema declared.
No examples provided.
geode_surveys_make_a_new_survey_1 Surveys: make a new survey 1 ~264
Create a 1-question survey that pays each respondent `payout`. `value` must be at least payout × max_responses (the survey's budget). Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Token from the first call, to confirm this irreversible action |
| max_responses | string | yes | Non-negative integer as a string of digits |
| payout | – | yes | Amount in GEODE as a decimal string (e.g. "1.25"), or {"raw": "<planck>"} |
| public | boolean | yes | – |
| question_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_name | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| value | – | yes | GEODE to send with this call (explicit; never inferred) |
No output schema declared.
No examples provided.
geode_surveys_make_a_new_survey_3 Surveys: make a new survey 3 ~314
Create a 3-question survey that pays each respondent `payout`. `value` must be at least payout × max_responses (the survey's budget). Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Token from the first call, to confirm this irreversible action |
| max_responses | string | yes | Non-negative integer as a string of digits |
| payout | – | yes | Amount in GEODE as a decimal string (e.g. "1.25"), or {"raw": "<planck>"} |
| public | boolean | yes | – |
| question_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_2 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_3 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_name | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| value | – | yes | GEODE to send with this call (explicit; never inferred) |
No output schema declared.
No examples provided.
geode_surveys_make_a_new_survey_5 Surveys: make a new survey 5 ~364
Create a 5-question survey that pays each respondent `payout`. `value` must be at least payout × max_responses (the survey's budget). Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Token from the first call, to confirm this irreversible action |
| max_responses | string | yes | Non-negative integer as a string of digits |
| payout | – | yes | Amount in GEODE as a decimal string (e.g. "1.25"), or {"raw": "<planck>"} |
| public | boolean | yes | – |
| question_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_2 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_3 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_4 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| question_5 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_name | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| value | – | yes | GEODE to send with this call (explicit; never inferred) |
No output schema declared.
No examples provided.
geode_surveys_take_a_survey_1 Surveys: take a survey 1 ~155
Answer an open 1-question survey and receive its payout. Each account can answer a survey once. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| answer_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_surveys_take_a_survey_3 Surveys: take a survey 3 ~205
Answer an open 3-question survey and receive its payout. Each account can answer a survey once. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| answer_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_2 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_3 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_surveys_take_a_survey_5 Surveys: take a survey 5 ~255
Answer an open 5-question survey and receive its payout. Each account can answer a survey once. Writes to the chain: this prepares an unsigned transaction (an intent) for `signer`; nothing happens until you sign it with geode-local-signer and submit it with geode_submit_intent.
| Name | Type | Req | Description |
|---|---|---|---|
| answer_1 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_2 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_3 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_4 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| answer_5 | string | yes | UTF-8 text, at most 512 bytes; no control or invisible characters |
| signer | string | yes | Your account address (SS58). The transaction is prepared for this account; you sign it on your own machine with geode-local-signer. |
| survey_id | string | yes | 0x-prefixed 32-byte hex id |
No output schema declared.
No examples provided.
geode_upgrade_build Build a one-transaction upgrade purchase ~210
For mode "authorization" only. Pass every field of `purchase` from geode_upgrade_prepare unchanged, plus your EIP-712 signature. The server simulates the purchase for free (a bad signature never costs you gas) and returns one unsigned transaction for you to send from the same wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| buyer | string | yes | Your Base (EVM) address, 0x…: the wallet that holds the USDC, signs, sends the transactions and pays the gas. |
| geode_address | string | yes | The Geode account (SS58) that receives the GEODE. Double-check it: a purchase delivered to a wrong address cannot be reversed. |
| pack_id | integer | yes | – |
| salt | string | yes | From purchase.salt |
| signature | string | yes | Your EIP-712 signature of typed_data, 0x-prefixed hex |
| valid_after | string | yes | From purchase.valid_after |
| valid_before | string | yes | From purchase.valid_before |
No output schema declared.
No examples provided.
geode_upgrade_packs Account upgrade packs (USDC on Base) ~91
Read-only: the GEODE packs sold for USDC on Base by Sparticle Concepts LLC (Pebble, Diamond), with prices, stock and today's limits. Pass `buyer` to also see how much that Base address may still buy today. Buying a pack gives a Geode account its upgrade tier automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| buyer | string | – | Optional Base (EVM) address, 0x… |
No output schema declared.
No examples provided.
geode_upgrade_prepare Prepare an account upgrade purchase ~240
Builds a USDC purchase of a GEODE pack for YOU to sign and send from your own Base wallet (you pay the gas; this server never sends anything). It first checks the Geode address, your USDC and ETH, stock and limits. mode "approve" (default, any wallet): returns two unsigned transactions, an exact-amount USDC approval and the buy. mode "authorization" (wallets that can sign EIP-712 typed data): returns typed data to sign; then call geode_upgrade_build. Nothing is spent until you send a transaction.
| Name | Type | Req | Description |
|---|---|---|---|
| buyer | string | yes | Your Base (EVM) address, 0x…: the wallet that holds the USDC, signs, sends the transactions and pays the gas. |
| geode_address | string | yes | The Geode account (SS58) that receives the GEODE. Double-check it: a purchase delivered to a wrong address cannot be reversed. |
| mode | string | – | "approve" (default) or "authorization" |
| pack_id | integer | yes | From geode_upgrade_packs (1 = Pebble, 2 = Diamond) |
No output schema declared.
No examples provided.
geode_upgrade_status Account upgrade purchase status ~83
Read-only: given the Base transaction hash of a purchase, reports whether it was paid and whether the GEODE has been delivered on Geode (not_found_or_pending, failed_on_base, paid_waiting_for_base_finality, paid_waiting_for_bridge, delivered).
| Name | Type | Req | Description |
|---|---|---|---|
| tx_hash | string | yes | Base transaction hash, 0x + 64 hex |
No output schema declared.
No examples provided.
How do I install the Geode MCP server?
Geode is a hosted endpoint at https://mcp.geodeapps.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.geodeapps.com
claude mcp add --transport http com-geodeapps-mcp-geode 'https://mcp.geodeapps.com/mcp'
What is the Geode MCP server?
Geode is an MCP server listed in the public MCP registry as com.geodeapps.mcp/geode. Use the Geode blockchain's apps: marketplace, social, surveys, messaging, DNS and GEODE transfers. This page covers its hosted endpoint (https://mcp.geodeapps.com/mcp).
Is the Geode MCP server safe to use?
Geode scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Geode MCP server expose?
Geode exposes 138 tools: geode_dns_register, geode_dns_set_address, geode_dns_transfer, geode_dns_get_address, geode_dns_get_owner, and 133 more. Their descriptions and schemas cost roughly 21,377 tokens of context every time the server is loaded.
Does the Geode MCP server require authentication?
No. We connected to Geode without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Geode MCP server still maintained?
Geode is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.