{"name":"ai.geodesiclabs/governance-platform","slug":"geodesiclabs-governance-platform","title":null,"description":"Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.","url":"https://mcp.market/server/geodesiclabs-governance-platform","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":5,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-09-27T13:35:42.243Z","last_ok_at":"2026-09-27T13:35:42.243Z","latency_ms":489},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":null,"version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://app.geodesiclabs.ai/mcp"}],"packages":[],"tools":[{"name":"account_status","description":"This account's plan, key usage, Blueprint counts, and the deployed\n    platform build fingerprint (version, build, deployed).\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"}},"required":["api_key"],"title":"account_statusArguments"}},{"name":"analyze_anomaly","description":"Explain whether a record fits the usual pattern for records like it,\n    and which fields stand out. No Blueprint required.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Discovery namespace used by discover_patterns","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"analyze_anomalyArguments"}},{"name":"approve_rule","description":"Promote a rule discovered by discover_patterns into Blueprint-ready\n    form.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"rule_id":{"description":"Discovered rule ID from discover_patterns","title":"Rule Id","type":"string"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","rule_id"],"title":"approve_ruleArguments"}},{"name":"authorize_execution","description":"Go/no-go for a real-world action (payment, filing, API write): runs\n    full validation, then the Blueprint's execution gate. authorized=true\n    only on PASS; REVIEW means do not proceed automatically. Different\n    from validate: validate asks is this data correct, authorize_execution\n    asks should this action happen.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data","blueprint"],"title":"authorize_executionArguments"}},{"name":"check_blueprint_health","description":"Static pre-deploy analysis of a Blueprint's rule set. Returns a health\n    verdict - healthy, acceptable, fragile, rigid, split, brittle_islands,\n    or unsatisfiable - with advice, including joint conflicts pairwise\n    checks miss.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"blueprint":{"default":"","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"},"config":{"additionalProperties":true,"default":null,"description":"Raw blueprint config with derivation_rules and formal_constraints (used when 'blueprint' is not given)","title":"Config","type":"object"}},"required":["api_key"],"title":"check_blueprint_healthArguments"}},{"name":"check_drift","description":"Check whether recent submissions still match the established pattern\n    for this Blueprint. Returns a stability verdict and observation count.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"check_driftArguments"}},{"name":"check_realization","description":"Structural realization analysis of a payload against the Blueprint's\n    reference configuration (requires a 'realization' block; otherwise\n    status=skipped). Diagnostics-tier tool; prefer validate or\n    analyze_anomaly for standard checks.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"check_realizationArguments"}},{"name":"compare_semantic_equivalence","description":"Compare two payloads under the dual-hash design: content_hash is\n    content_hash normalizes field order and numeric formatting. Semantic\n    comparison preserves field roles; renaming requires an explicit bijection.\n    With supplied rules, scalar types and whitespace remain significant.\n    Structural similarity alone does not establish decision equivalence.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"payload_a":{"additionalProperties":true,"description":"First structured payload (arbitrary JSON object)","title":"Payload A","type":"object"},"payload_b":{"additionalProperties":true,"description":"Second structured payload to compare against payload_a","title":"Payload B","type":"object"},"field_mapping":{"additionalProperties":true,"default":null,"description":"Explicit one-to-one field renaming from A to B","title":"Field Mapping","type":"object"},"rules_a":{"default":null,"description":"Derivation rules for A","items":{},"title":"Rules A","type":"array"},"rules_b":{"default":null,"description":"Derivation rules for B","items":{},"title":"Rules B","type":"array"},"constraints_a":{"default":null,"description":"Formal constraints for A","items":{},"title":"Constraints A","type":"array"},"constraints_b":{"default":null,"description":"Formal constraints for B","items":{},"title":"Constraints B","type":"array"}},"required":["api_key","payload_a","payload_b"],"title":"compare_semantic_equivalenceArguments"}},{"name":"counterfactual","description":"Run the same data under two rule sets and compare which future states\n    remain valid - what-if analysis for rule changes.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"},"rules_b":{"default":null,"description":"Alternative derivation rules (rule set B)","items":{},"title":"Rules B","type":"array"},"constraints_b":{"default":null,"description":"Alternative constraints (rule set B)","items":{},"title":"Constraints B","type":"array"}},"required":["api_key","structured_data"],"title":"counterfactualArguments"}},{"name":"create_blueprint","description":"Create a Blueprint - the governance contract validation runs against.\n\n    A Blueprint defines what correct means for your data: fields, the math\n    that must hold between them, and acceptable ranges. Start from\n    load_rule_pack or discover_patterns if you have no rules yet; invoke\n    the blueprint_guide prompt for the full rule/constraint reference.\n    Returns the new Blueprint's API key.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"customer_name":{"description":"Organization or project name (also used for storage folder naming)","title":"Customer Name","type":"string"},"workflow_name":{"description":"Unique Blueprint identifier; the value passed as 'blueprint' in validate","title":"Workflow Name","type":"string"},"mode":{"default":"observe","description":"observe: platform checks the agent's work; enforce: platform computes derived fields itself","enum":["observe","enforce"],"title":"Mode","type":"string"},"extracted_fields":{"default":null,"description":"Field names the agent extracts from source data, e.g. ['vendor','qty','unit_cost']","items":{},"title":"Extracted Fields","type":"array"},"derived_fields":{"default":null,"description":"Field names the platform computes from other fields, e.g. ['subtotal','total']","items":{},"title":"Derived Fields","type":"array"},"derivation_rules":{"default":null,"description":"Math rules as objects. Types: add, subtract, multiply, divide, round, copy, sum (multi-operand), items_multiply, items_sum. Each needs 'type' plus its fields; see the blueprint_guide prompt","items":{},"title":"Derivation Rules","type":"array"},"formal_constraints":{"default":null,"description":"Constraint objects. Types incl. magnitude_anchor {field,min,max}, relative_anchor {field,reference_field,ratio_min,ratio_max}, max_action_threshold {field,threshold,on_violation}, required_fields {fields}, equals, range, in_set, regex_match, items_magnitude_anchor; see the blueprint_guide prompt","items":{},"title":"Formal Constraints","type":"array"},"semantic_checks":{"default":null,"description":"Domain-specific semantic check objects","items":{},"title":"Semantic Checks","type":"array"},"require_math":{"default":true,"description":"Validate mathematical relationships","title":"Require Math","type":"boolean"},"require_consistency":{"default":true,"description":"Check internal field consistency","title":"Require Consistency","type":"boolean"},"require_coherence":{"default":true,"description":"Check cross-field plausibility","title":"Require Coherence","type":"boolean"},"require_provenance":{"default":false,"description":"Require extraction source locations for fields","title":"Require Provenance","type":"boolean"},"require_high_assurance":{"default":false,"description":"Strictest mode: every check must pass","title":"Require High Assurance","type":"boolean"},"enable_anomaly_detection":{"default":false,"description":"Flag records that break no rules but do not fit the reference pattern","title":"Enable Anomaly Detection","type":"boolean"},"enable_drift_tracking":{"default":false,"description":"Track pattern stability across batches","title":"Enable Drift Tracking","type":"boolean"}},"required":["api_key","customer_name","workflow_name"],"title":"create_blueprintArguments"}},{"name":"create_chain","description":"Create a multi-agent sequential chain: stages validate in order against\n    one Blueprint, repairs propagate forward, TTL bounds the run. Siblings:\n    submit_chain_stage advances the chain; handoff_audit verifies a\n    transition between stages. Returns chain_id.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"blueprint":{"description":"Blueprint governing all stages of the chain","title":"Blueprint","type":"string"},"stages":{"description":"Stage definitions, e.g. [{'stage_name':'extract','agent_name':'PDF Agent'}]; minimum 2","items":{},"title":"Stages","type":"array"},"ttl":{"default":3600,"description":"Chain timeout in seconds; stages cannot advance after expiry","title":"Ttl","type":"integer"}},"required":["api_key","blueprint","stages"],"title":"create_chainArguments"}},{"name":"decompose_failure","description":"Split the error between original and corrected values into direct rule\n    violations, boundary violations, and systemic structural error, with\n    per-field contributions. Use with a known-correct version to diff\n    against; use analyze_anomaly when you only have the suspicious payload.\n    Diagnostics-tier tool.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"original_values":{"additionalProperties":true,"description":"Original numeric field values as {field: number}","title":"Original Values","type":"object"},"corrected_values":{"additionalProperties":true,"description":"Corrected/expected numeric field values as {field: number}","title":"Corrected Values","type":"object"},"derivation_rules":{"default":null,"description":"Math rules as objects. Types: add, subtract, multiply, divide, round, copy, sum (multi-operand), items_multiply, items_sum. Each needs 'type' plus its fields; see the blueprint_guide prompt","items":{},"title":"Derivation Rules","type":"array"},"formal_constraints":{"default":null,"description":"Constraint objects. Types incl. magnitude_anchor {field,min,max}, relative_anchor {field,reference_field,ratio_min,ratio_max}, max_action_threshold {field,threshold,on_violation}, required_fields {fields}, equals, range, in_set, regex_match, items_magnitude_anchor; see the blueprint_guide prompt","items":{},"title":"Formal Constraints","type":"array"},"blueprint":{"default":null,"description":"Load rules from this Blueprint instead of passing them inline","title":"Blueprint","type":"string"}},"required":["api_key","original_values","corrected_values"],"title":"decompose_failureArguments"}},{"name":"delete_api_key","description":"Permanently delete one of the caller's API keys.\n\n    DESTRUCTIVE — agents using the deleted key will receive auth\n    errors immediately. The Blueprint a key was tied to (if any) is\n    NOT affected; only the credential is revoked. To delete a\n    Blueprint and all its keys, use delete_blueprint.\n\n    The target key can be specified two ways:\n      - As the full key string (gai_...).\n      - As a key_id (SHA-256 hash from list_api_keys).\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"key_to_delete":{"description":"The gai_ key to delete","title":"Key To Delete","type":"string"},"confirm":{"default":false,"description":"Must be true to confirm this irreversible action","title":"Confirm","type":"boolean"}},"required":["api_key","key_to_delete"],"title":"delete_api_keyArguments"}},{"name":"delete_blueprint","description":"Permanently delete a Blueprint and revoke its API keys. Irreversible;\n    requires confirm=true. Account-level keys are unaffected.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"workflow_name":{"description":"Blueprint to delete; its API keys are revoked","title":"Workflow Name","type":"string"},"confirm":{"default":false,"description":"Must be true to confirm this irreversible action","title":"Confirm","type":"boolean"}},"required":["api_key","workflow_name"],"title":"delete_blueprintArguments"}},{"name":"discover_patterns","description":"Learn candidate validation rules and structural document types from a\n    batch of your records, deterministically - no Blueprint required.\n    Promote results with approve_rule. Source data is not stored.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"documents":{"description":"List of structured records (objects) to analyze","items":{},"title":"Documents","type":"array"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","documents"],"title":"discover_patternsArguments"}},{"name":"forecast","description":"Deterministic forward reasoning: from the current data state, generate\n    and rank the valid next states reachable under the Blueprint's rules.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"},"max_depth":{"default":3,"description":"Search depth, 1-10","title":"Max Depth","type":"integer"},"max_branches":{"default":5,"description":"Branches per step, 1-10","title":"Max Branches","type":"integer"},"rank_by":{"default":"drift","description":"Ranking criterion for returned paths","enum":["drift","confidence","shortest","risk"],"title":"Rank By","type":"string"}},"required":["api_key","structured_data"],"title":"forecastArguments"}},{"name":"geometric_confidence","description":"Summarize an already-computed state_vector into a confidence level\n    (high/medium/low) with a recommendation. Post-hoc digest - use\n    analyze_anomaly or check_drift for fresh analysis of raw data.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"state_vector":{"additionalProperties":true,"description":"state_vector object from a prior validate or get_execution_trace result","title":"State Vector","type":"object"}},"required":["api_key","state_vector"],"title":"geometric_confidenceArguments"}},{"name":"get_execution_trace","description":"Run validation and return the per-node execution trace (node names,\n    deterministic flags, timing) plus the verdict and determinism hash.\n    Use validate for normal operation; this is for debugging and audit\n    preparation.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"get_execution_traceArguments"}},{"name":"get_inference_trace","description":"Retrieve the durable audit trail for a governed generation: every\n    recorded decision and its reasons.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"inference_id":{"description":"Caller-chosen ID grouping the steps of one generation","title":"Inference Id","type":"string"},"blueprint":{"default":"default","description":"Blueprint namespace used when recording the trace","title":"Blueprint","type":"string"},"blueprint_version":{"default":"","description":"Optional historical blueprint_version hash returned by govern_inference","title":"Blueprint Version","type":"string"}},"required":["api_key","inference_id"],"title":"get_inference_traceArguments"}},{"name":"govern_inference","description":"Quality-govern an in-progress AI generation step BEFORE its output is\n    used (complements validate, which checks finished documents). Returns\n    an action - STOP, CONTINUE, REPAIR_REGION, REUSE_MOTIF, REVIEW,\n    ESCALATE - with a plain-language explanation. Structural scores do not\n    establish task correctness. Check safe_to_finalize and acceptance coverage.\n    Persistence success is reported; read traces in the same Blueprint namespace.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"task_type":{"description":"Kind of generation step being governed","enum":["generative_text","retrieval","generic"],"title":"Task Type","type":"string"},"payload":{"additionalProperties":true,"description":"Task-type payload: generative_text {text,...}; retrieval {query,candidates}; generic {features}","title":"Payload","type":"object"},"inference_id":{"description":"Caller-chosen ID grouping the steps of one generation","title":"Inference Id","type":"string"},"constraints":{"additionalProperties":true,"default":null,"description":"Optional governance constraint config object","title":"Constraints","type":"object"},"source":{"default":"mcp","description":"Free-form caller label recorded for audit","title":"Source","type":"string"},"step_index":{"default":0,"description":"Step number within this generation (0-based)","title":"Step Index","type":"integer"},"blueprint":{"default":"default","description":"Owned Blueprint namespace for the trace","title":"Blueprint","type":"string"}},"required":["api_key","task_type","payload","inference_id"],"title":"govern_inferenceArguments"}},{"name":"handoff_audit","description":"Audit a handoff between two chain stages: a context capsule of verified\n    facts from the prior stage, and (if proposed_data is given) a\n    compatibility verdict that catches fields mutated in transit. Siblings:\n    create_chain, submit_chain_stage.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"chain_id":{"description":"Chain identifier returned by create_chain","title":"Chain Id","type":"string"},"from_stage":{"description":"Completed stage name (agent A)","title":"From Stage","type":"string"},"to_stage":{"description":"Stage about to start (agent B)","title":"To Stage","type":"string"},"proposed_data":{"additionalProperties":true,"default":null,"description":"Data agent B intends to submit; checked for mutation against agent A's verified fields","title":"Proposed Data","type":"object"}},"required":["api_key","chain_id","from_stage","to_stage"],"title":"handoff_auditArguments"}},{"name":"list_api_keys","description":"List this account's API keys (masked) with their Blueprint bindings.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"}},"required":["api_key"],"title":"list_api_keysArguments"}},{"name":"list_blueprints","description":"List the Blueprints on this account with field/rule/constraint counts\n    and mode. Use the returned workflow_name as 'blueprint' in validate.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"}},"required":["api_key"],"title":"list_blueprintsArguments"}},{"name":"load_rule_pack","description":"Load a prebuilt Blueprint template (invoices, timecards, legal, POs,\n    claims). Call without pack_id to list packs; then create_blueprint to\n    save a customized copy.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"pack_id":{"default":null,"description":"Rule pack ID; omit to list available packs","title":"Pack Id","type":"string"}},"required":["api_key"],"title":"load_rule_packArguments"}},{"name":"profile_blueprint_robustness","description":"Sweep the Blueprint's numeric constraint bounds and report verdict\n    stability: the stable band, the scales where the verdict first flips,\n    and advice. Use before deploying bound changes.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"blueprint":{"default":"","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"},"config":{"additionalProperties":true,"default":null,"description":"Raw blueprint config to profile (used when 'blueprint' is not given)","title":"Config","type":"object"}},"required":["api_key"],"title":"profile_blueprint_robustnessArguments"}},{"name":"recent_inference_decisions","description":"Recent generation-governance decisions in this owner's Blueprint version.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"limit":{"default":25,"description":"Maximum rows to return","title":"Limit","type":"integer"},"action":{"default":"","description":"Optional action filter (STOP, CONTINUE, REVIEW, ...)","title":"Action","type":"string"},"blueprint":{"default":"default","description":"Blueprint namespace used when recording the trace","title":"Blueprint","type":"string"},"blueprint_version":{"default":"","description":"Optional historical blueprint_version hash returned by govern_inference","title":"Blueprint Version","type":"string"}},"required":["api_key"],"title":"recent_inference_decisionsArguments"}},{"name":"reject_rule","description":"Reject a discovered candidate rule so it will not be promoted into a\n    Blueprint. Pair with approve_rule after discover_patterns.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"rule_id":{"description":"Discovered rule ID from discover_patterns","title":"Rule Id","type":"string"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","rule_id"],"title":"reject_ruleArguments"}},{"name":"repair","description":"One-shot repair: return corrected values that would make failing data\n    valid under the Blueprint. Use repair_path to see the steps instead.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"derivation_rules":{"default":null,"description":"Math rules as objects. Types: add, subtract, multiply, divide, round, copy, sum (multi-operand), items_multiply, items_sum. Each needs 'type' plus its fields; see the blueprint_guide prompt","items":{},"title":"Derivation Rules","type":"array"},"formal_constraints":{"default":null,"description":"Constraint objects. Types incl. magnitude_anchor {field,min,max}, relative_anchor {field,reference_field,ratio_min,ratio_max}, max_action_threshold {field,threshold,on_violation}, required_fields {fields}, equals, range, in_set, regex_match, items_magnitude_anchor; see the blueprint_guide prompt","items":{},"title":"Formal Constraints","type":"array"},"blueprint":{"default":null,"description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"repairArguments"}},{"name":"repair_path","description":"Find the shortest sequence of field changes taking invalid data to a\n    valid state, as an ordered path of intermediate states. Different from\n    repair (one-shot nearest fix): use repair_path to explain or audit the\n    fix, or compare alternative repairs.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"},"max_depth":{"default":4,"description":"Search depth, 1-10","title":"Max Depth","type":"integer"},"rank_by":{"default":"shortest","description":"Ranking criterion for returned paths","enum":["shortest","drift","confidence","risk"],"title":"Rank By","type":"string"}},"required":["api_key","structured_data"],"title":"repair_pathArguments"}},{"name":"rotate_api_key","description":"Replace an API key with a fresh one. The old key stops working\n    immediately; the new key inherits its bindings.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"key_to_rotate":{"description":"The gai_ key to rotate; it stops working immediately","title":"Key To Rotate","type":"string"}},"required":["api_key","key_to_rotate"],"title":"rotate_api_keyArguments"}},{"name":"structural_types","description":"Retrieve the document categories a discover_patterns session identified\n    (counts, distinguishing fields, domain hints). Read-only; returns\n    status=no_session if discovery has not run for this namespace.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key"],"title":"structural_typesArguments"}},{"name":"submit_chain_stage","description":"Submit data for the chain's current stage; the platform validates it\n    and advances the chain if it passes. Response includes next-stage info\n    and accumulated repairs.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"chain_id":{"description":"Chain identifier returned by create_chain","title":"Chain Id","type":"string"},"stage":{"description":"Stage name to submit for (must be the chain's current stage)","title":"Stage","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"}},"required":["api_key","chain_id","stage","structured_data"],"title":"submit_chain_stageArguments"}},{"name":"update_blueprint","description":"Update an existing Blueprint in place. Only passed fields change;\n    pass [] to clear a list. workflow_name cannot be renamed and existing\n    API keys keep working. Different from create_blueprint: modifies an\n    existing Blueprint, mints no new key.\n    ","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"workflow_name":{"description":"Unique Blueprint identifier; the value passed as 'blueprint' in validate","title":"Workflow Name","type":"string"},"customer_name":{"default":null,"description":"Organization or project name (also used for storage folder naming)","title":"Customer Name","type":"string"},"mode":{"default":null,"description":"New mode: observe or enforce; omit to keep current","title":"Mode","type":"string"},"extracted_fields":{"default":null,"description":"Field names the agent extracts from source data, e.g. ['vendor','qty','unit_cost']","items":{},"title":"Extracted Fields","type":"array"},"derived_fields":{"default":null,"description":"Field names the platform computes from other fields, e.g. ['subtotal','total']","items":{},"title":"Derived Fields","type":"array"},"derivation_rules":{"default":null,"description":"Math rules as objects. Types: add, subtract, multiply, divide, round, copy, sum (multi-operand), items_multiply, items_sum. Each needs 'type' plus its fields; see the blueprint_guide prompt","items":{},"title":"Derivation Rules","type":"array"},"formal_constraints":{"default":null,"description":"Constraint objects. Types incl. magnitude_anchor {field,min,max}, relative_anchor {field,reference_field,ratio_min,ratio_max}, max_action_threshold {field,threshold,on_violation}, required_fields {fields}, equals, range, in_set, regex_match, items_magnitude_anchor; see the blueprint_guide prompt","items":{},"title":"Formal Constraints","type":"array"},"semantic_checks":{"default":null,"description":"Domain-specific semantic check objects","items":{},"title":"Semantic Checks","type":"array"},"require_math":{"default":null,"description":"Validate mathematical relationships","title":"Require Math","type":"boolean"},"require_consistency":{"default":null,"description":"Check internal field consistency","title":"Require Consistency","type":"boolean"},"require_coherence":{"default":null,"description":"Check cross-field plausibility","title":"Require Coherence","type":"boolean"},"require_provenance":{"default":null,"description":"Require extraction source locations for fields","title":"Require Provenance","type":"boolean"},"require_high_assurance":{"default":null,"description":"Strictest mode: every check must pass","title":"Require High Assurance","type":"boolean"},"enable_anomaly_detection":{"default":null,"description":"Flag records that break no rules but do not fit the reference pattern","title":"Enable Anomaly Detection","type":"boolean"},"enable_drift_tracking":{"default":null,"description":"Track pattern stability across batches","title":"Enable Drift Tracking","type":"boolean"}},"required":["api_key","workflow_name"],"title":"update_blueprintArguments"}},{"name":"validate","description":"Validate structured data against a Blueprint's rules BEFORE the result\n    is used. Returns PASS, FAIL, or REVIEW with plain-language findings,\n    repair suggestions, a determinism hash, and a re-verifiable\n    certificate. Same input + same rules = same verdict, every time.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"validateArguments"}},{"name":"validate_repair","description":"Validate structured data against a Blueprint and, when it fails,\n    include repair suggestions (corrected values with the rule each fix is\n    based on) in the same call. Same verdicts as validate: PASS, FAIL, or\n    REVIEW, with reasons and proof.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"structured_data":{"additionalProperties":true,"description":"The document's extracted fields as key/value pairs. Keys are open by design - your Blueprint's rules define what is checked","title":"Structured Data","type":"object"},"blueprint":{"default":"default","description":"Blueprint name (workflow_name) to use","title":"Blueprint","type":"string"}},"required":["api_key","structured_data"],"title":"validate_repairArguments"}},{"name":"verify_certificate","description":"Independently re-verify a validation certificate. Integrity mode checks\n    the hash chain; full mode (certificate + original data) recomputes\n    every attested rule from scratch - trust nothing, recheck everything.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"certificate":{"additionalProperties":true,"description":"The certificate object from a prior validation response","title":"Certificate","type":"object"},"data":{"additionalProperties":true,"default":null,"description":"Original payload for full re-verification; omit for integrity-only mode","title":"Data","type":"object"},"derivation_rules":{"default":null,"description":"Rule list for independent attestation recomputation (optional)","items":{},"title":"Derivation Rules","type":"array"},"formal_constraints":{"default":null,"description":"Optional constraints to match against the committed bundle","items":{},"title":"Formal Constraints","type":"array"}},"required":["api_key","certificate"],"title":"verify_certificateArguments"}},{"name":"verify_replay","description":"Check replay commitment integrity and compare recorded execution components.\n    Version 4 includes reference context and the final result/status. A match\n    compares commitments; this tool does not rerun the workflow or reconstruct\n    historical reference populations, and does not prove factual correctness.\n    ","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"description":"GeodesicAI API key (gai_...)","title":"Api Key","type":"string"},"contract_a":{"additionalProperties":true,"description":"replay_contract object from one execution","title":"Contract A","type":"object"},"contract_b":{"additionalProperties":true,"description":"replay_contract object to compare against contract_a","title":"Contract B","type":"object"}},"required":["api_key","contract_a","contract_b"],"title":"verify_replayArguments"}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-24T21:40:17.510Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T21:40:17.496Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 871ms"]},"poisoning":{"score":15,"max":15,"notes":["37 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 8 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://app.geodesiclabs.ai/mcp","reachable":true,"authRequired":false,"latencyMs":871,"serverInfo":{"name":"GeodesicAI","version":"1.27.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":null,"source":"none"},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":5}}}},"grade_history":[],"reviews":[]}